激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Android - Android實現GPS定位代碼實例

Android實現GPS定位代碼實例

2021-03-03 15:00Android開發網 Android

這篇文章主要介紹了Android實現GPS定位實例,對關鍵操作部份給出代碼示例并做了一定的注釋,需要的朋友可以參考下

通過GPS取得的是一個Location類型的經緯度, 可以轉換為兩個Double 緯度和經度.
緯度: 23.223871812820435
緯度: 113.58986039161628
首先創建一個TextView和兩個Button

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<TextView
 android:id="@+id/text"
 android:layout_width="fill_parent"
  android:layout_height="wrap_content"  />
 
 <Button
  android:id="@+id/btnStart"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="定位" />
 <Button
  android:id="@+id/btnStop"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="停止" />


然后添加主Activity的代碼
Location 是存放經緯度的一個類型
LocationManager是位置管理服務類型

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
private Button btnStart;
private Button btnStop;
private TextView textView;
private Location mLocation;
private LocationManager mLocationManager;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
 
 super.onCreate(savedInstanceState);
 setContentView(R.layout.main);
 
 btnStart = (Button)findViewById(R.id.btnStart);
 btnStop = (Button)findViewById(R.id.btnStop);
 textView = (TextView)findViewById(R.id.text);
 btnStart.setOnClickListener(btnClickListener); //開始定位
 btnStop.setOnClickListener(btnClickListener); //結束定位按鈕
}
gpsIsOpen是自己寫的查看當前GPS是否開啟
getLocation 是自己寫的一個獲取定位信息的方法
mLocationManager.removeUpdates()是停止當前的GPS位置監聽
public Button.OnClickListener btnClickListener = new Button.OnClickListener()
{
 public void onClick(View v)
 {
  Button btn = (Button)v;
  if(btn.getId() == R.id.btnStart)
  {
   if(!gpsIsOpen())
    return;
   
  mLocation = getLocation();
   
   if(mLocation != null)
    textView.setText("維度:" + mLocation.getLatitude() + "\n經度:" + mLocation.getLongitude());
   else
    textView.setText("獲取不到數據");
  }
  else if(btn.getId() == R.id.btnStop)
  {
   mLocationManager.removeUpdates(locationListener);
  }
 
 }
};
private boolean gpsIsOpen()
{
 boolean bRet = true;
 
 LocationManager alm = (LocationManager)this.getSystemService(Context.LOCATION_SERVICE);
 if(!alm.isProviderEnabled(LocationManager.GPS_PROVIDER))
 {
  Toast.makeText(this, "未開啟GPS", Toast.LENGTH_SHORT).show();
  bRet = false;
 }
 else
 {
  Toast.makeText(this, "GPS已開啟", Toast.LENGTH_SHORT).show();
 }
 
 return bRet;
}
判斷當前是否開啟GPS
private boolean gpsIsOpen()
{
 boolean bRet = true;
 
 LocationManager alm = (LocationManager)this.getSystemService(Context.LOCATION_SERVICE);
 if(!alm.isProviderEnabled(LocationManager.GPS_PROVIDER))
 {
  Toast.makeText(this, "未開啟GPS", Toast.LENGTH_SHORT).show();
  bRet = false;
 }
 else
 {
  Toast.makeText(this, "GPS已開啟", Toast.LENGTH_SHORT).show();
 }
 
 return bRet;
}
該方法獲取當前的經緯度, 第一次獲取總是null
后面從LocationListener獲取已改變的位置
mLocationManager.requestLocationUpdates()是開啟一個LocationListener等待位置變化
private Location getLocation()
{
 //獲取位置管理服務
 mLocationManager = (LocationManager)this.getSystemService(Context.LOCATION_SERVICE);
 
 //查找服務信息
 Criteria criteria = new Criteria();
 criteria.setAccuracy(Criteria.ACCURACY_FINE); //定位精度: 最高
 criteria.setAltitudeRequired(false); //海拔信息:不需要
 criteria.setBearingRequired(false); //方位信息: 不需要
 criteria.setCostAllowed(true);  //是否允許付費
 criteria.setPowerRequirement(Criteria.POWER_LOW); //耗電量: 低功耗
 
 String provider = mLocationManager.getBestProvider(criteria, true); //獲取GPS信息
 
 Location location = mLocationManager.getLastKnownLocation(provider);
 
 mLocationManager.requestLocationUpdates(provider, 2000, 5, locationListener);
 
 return location;
}
改方法是等待GPS位置改變后得到新的經緯度
private final LocationListener locationListener = new LocationListener()
{
 public void onLocationChanged(Location location)
 {
  // TODO Auto-generated method stub
  if(location != null)
   textView.setText("維度:" + location.getLatitude() + "\n經度:"
      + location.getLongitude());
  else
   textView.setText("獲取不到數據" + Integer.toString(nCount));
 }
 
 public void onProviderDisabled(String provider)
 {
  // TODO Auto-generated method stub
 }
 
 public void onProviderEnabled(String provider)
 {
  // TODO Auto-generated method stub
 }
 
 public void onStatusChanged(String provider, int status, Bundle extras)
 {
  // TODO Auto-generated method stub
  
 }
};

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久免费视频3 | 99精彩视频在线观看 | 欧美扩阴视频 | 免费a视频在线观看 | 护士hd欧美free性xxxx | 成人羞羞视频在线观看 | 欧美日本91精品久久久久 | 成人国产精品齐天大性 | 黄色电影免费提供 | 91av大片| 国产亚洲欧美视频 | 黄色一级片免费在线观看 | 91精品国产乱码久久久久 | 看片一区 | 2021国产精品视频 | 国产成人综合在线 | 日日狠狠久久偷偷四色综合免费 | 国产成人综合在线视频 | 九色国产| 亚洲自拍第一 | 国产一区二区观看 | 国产欧美精品综合一区 | 国产资源视频在线观看 | 精品国产亚洲人成在线 | 成人免费久久 | 91成人一区二区三区 | 国产亚洲精品久久午夜玫瑰园 | 成人男女啪啪免费观看网站四虎 | 午夜色片| 日韩毛片网| 九色一区二区 | 精品一区免费 | 爱逼爱操综合网 | 精品在线视频播放 | 欧美特一级片 | 国产精品免费成人 | 久久久久999 | 九色一区二区 | 精品视频 久久久 | 亚洲性生活免费视频 | 性日本xxx|