●畫面預覽:
●程式說明:
1.設定權限
粗略定位權限:<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
精細定位權限:<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
2.
public class MainActivity extends AppCompatActivity implements LocationListener {
LocationManager lm;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lm = (LocationManager) getSystemService(LOCATION_SERVICE);
}
public void click1(View view) {
//加了權限會跳出這段程式,這邊沒有寫可以強制開啟模擬器的權限設定
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
return;
}
//四個參數:要用的定位來源、最短時間多久一次、最短距離多久一次、只要訂為一改變超過最短時間和最短距離就會呼叫listener
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
}
@Override //位置改變時
public void onLocationChanged(Location location) {
Log.d("GPS", "Location Change:" + location.getLongitude() + "," + location.getLatitude());
Toast.makeText(this,"Location Change:" + location.getLongitude() + "," + location.getLatitude(),Toast.LENGTH_SHORT).show();
}
@Override
public void onStatusChanged(String s, int i, Bundle bundle) {
}
@Override //關閉定位
public void onProviderEnabled(String s) {
}
@Override //開啟定位
public void onProviderDisabled(String s) {
}
}
**說明:
這個做在室外沒有問題,因為用gps定位多多少少會移動,但是在市內是用網路定位,沒有動就不會觸發此段程式
3.模擬器無法測試移動,可以點下列功能,send點一下就會改變位置,程式就可以抓到位置寫入log




文章標籤
全站熱搜