import android.app.Activity;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.widget.TextView;
public class MainActivity extends Activity {
private LocationManager lm;
private MyListener listener;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//獲取位置管理服務
lm = (LocationManager) getSystemService(LOCATION_SERVICE);
//查詢條件
Criteria criteria = new Criteria();
//引數 ACCURACY_FINE:精確 ACCURACY_HIGH:比較精確 誤差小於100 ACCURACY_LOW:誤差小於500米 ACCURACY_MEDIUM:誤差在100-500米 ACCURACY_COARSE:初略的位置
criteria.setAccuracy(Criteria.ACCURACY_FINE);//精確定位
//獲取海拔資訊
criteria.setAltitudeRequired(true);
//設定用電量為高階別
criteria.setPowerRequirement(Criteria.POWER_HIGH);
//網路定位的時候設定,表示是否話費費用
criteria.setCostAllowed(true);
String provider = lm.getBestProvider(criteria , true);//第二個參數列示 返回可用的定位資訊 因為定位功能可能被關閉,被關閉的話就不可用了
System.out.println("provider--->"+provider);
/**
* 獲取使用者位置
* 1.用哪種方法定位,這裡的provider是由上面獲取的,系統自己計算出用哪個方法定位最好
* 2.兩次獲取位置資訊之間的間隔(推薦大於60秒 也就是600000 設定為0表示不關心時間 只要能得到位置資訊就獲取)
* 3.每隔幾米獲取一次位置資訊 0表示不關心 只要能獲取到位置資訊就獲取
*/
listener = new MyListener();
lm.requestLocationUpdates(provider, 100, 1, listener);
}
private class MyListener implements LocationListener{
//當位置變化的時候呼叫該方法
public void onLocationChanged(Location location) {
float accuracy = location.getAccuracy();//精確度
double latitude = location.getLatitude();//緯度
double longitude = location.getLongitude();//經度
TextView tv = new TextView(getApplicationContext());
tv.setText("精確度-->"+accuracy+"\n緯度-->"+latitude+"\n經度-->"+longitude);
setContentView(tv);
}
//當位置提供者不可用的時候呼叫該方法 例如使用者將定位功能手動關閉的時候
public void onStatusChanged(String provider, int status, Bundle extras) {
}
//當位置提供者可用的時候呼叫該方法
public void onProviderEnabled(String provider) {
}
//當狀態發生改變的時候呼叫該方法 可用--->不可用 不可用--->可用
public void onProviderDisabled(String provider) {
}
}
@Override
protected void onDestroy() {
super.onDestroy();
lm.removeUpdates(listener);//在關閉介面的時候,取消位置監聽
}
}