1箕般、準(zhǔn)備階段
- isGPSOPen用于判斷是否開啟位置服務(wù)(gps或者網(wǎng)絡(luò))
/**
* 判斷GPS是否開啟耐薯,GPS或者AGPS開啟一個(gè)就認(rèn)為是開啟的
* @param context
* @return true 表示開啟
*/
public boolean isGPSOPen(final Context context) {
LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
// 通過GPS衛(wèi)星定位,定位級(jí)別可以精確到街(通過24顆衛(wèi)星定位丝里,在室外和空曠的地方定位準(zhǔn)確曲初、速度快)
boolean gps = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
// 通過WLAN或移動(dòng)網(wǎng)絡(luò)(3G/2G)確定的位置(也稱作AGPS,輔助GPS定位杯聚。主要用于在室內(nèi)或遮蓋物(建筑群或茂密的深林等)密集的地方定位)
boolean network = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
if (gps || network) {
return true;
}
return false;
}
- onActivityResult用于在開啟服務(wù)后回調(diào)(gps或者網(wǎng)絡(luò))
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 101){
init();
}
}
2臼婆、開始調(diào)用
public void init(){
//判斷是否開啟位置服務(wù)
if(!isGPSOPen(this)){
//沒有開啟,打開設(shè)置界面
Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivityForResult(intent, 101);
return;//停止執(zhí)行
}
//已開啟
//其他代碼
}
在需要獲取位置服務(wù)之前調(diào)用代碼會(huì)有兩種結(jié)果1.已授權(quán)位置服務(wù)正常向下執(zhí)行幌绍,2.未授權(quán)位置服務(wù)->跳轉(zhuǎn)到設(shè)置頁授權(quán)->然后返回在onActivityResult中重新執(zhí)行代碼
判斷是否開啟的代碼一定要在需要位置服務(wù)的代碼之前