我僅僅是想要個(gè)定位结胀,接入個(gè)SDK做卵
下面網(wǎng)上找的一個(gè)工具類,可用。颊亮。。
獲取位置權(quán)限:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
工具類:
/**
* Desc: 簡單定位工具類
* Created by lisheny on 2018/9/3 0003.
*/
public class LocationUtil {
private static String TAG = "LocationUtil";
public static void getCurrentLocation(Context context, LocationCallBack locationCallBack){
if (locationCallBack == null){
return;
}
if (context == null){
locationCallBack.onFail("請確保傳入的參數(shù)context不為null");
}
//如果系統(tǒng)版本號在23及其以上則檢查權(quán)限
if (Build.VERSION.SDK_INT >= 23 &&
ContextCompat.checkSelfPermission(context, Manifest.permission_group.LOCATION) == PackageManager.PERMISSION_GRANTED){
locationCallBack.onFail("請確保已經(jīng)獲取定位權(quán)限");
}
//獲取LocationManager對象
LocationManager locationM = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
//實(shí)例化MyLocationListener
MyLocationListener locationListener = new MyLocationListener(locationM, locationCallBack);
//配置Criteria耗電低
Criteria cri = new Criteria();
cri.setPowerRequirement(Criteria.POWER_LOW);
// 獲取可用的provider,第二個(gè)參數(shù)標(biāo)識 provider是否可用.
String bestProvider = locationM.getBestProvider(cri,true);
if (!TextUtils.isEmpty(bestProvider)){
Log.e(TAG,"bestProvider = "+ bestProvider + "可用");
locationM.requestLocationUpdates(bestProvider,0,0,locationListener);
}else if (locationM.isProviderEnabled(LocationManager.NETWORK_PROVIDER)){
Log.e(TAG,LocationManager.NETWORK_PROVIDER + "可用");
locationM.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,0,0,locationListener);
}else if(locationM.isProviderEnabled(LocationManager.GPS_PROVIDER)){
Log.e(TAG,LocationManager.GPS_PROVIDER + "可用");
locationM.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,locationListener);
}else{
//定位不可用陨溅,提示打開GPS
Log.e(TAG,"定位不可用终惑,提示打開GPS");
locationCallBack.onFail("無可用的定位方式,請打開GPS");
}
}
/**
* LocationListener 的實(shí)現(xiàn)類
*/
private static class MyLocationListener implements LocationListener {
private LocationManager mLocationManager;
private LocationCallBack mLocationCallBack;
public MyLocationListener(LocationManager locationManager, LocationCallBack locationCallBack) {
this.mLocationManager = locationManager;
this.mLocationCallBack = locationCallBack;
}
@Override
public void onLocationChanged(Location location) {
if (location != null){
if(mLocationCallBack != null){
mLocationCallBack.onSuccess(location);
}
if (mLocationManager != null){
mLocationManager.removeUpdates(this);
}
}else{
if(mLocationCallBack != null){
mLocationCallBack.onFail("location == null");
}
}
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
}
/**
* 定位結(jié)果回調(diào)
*/
public interface LocationCallBack{
/**
* 定位成功
* @param location
*/
void onSuccess(Location location);
/**
* 定位失敗
* @param msg
*/
void onFail(String msg);
}
}
使用:
public class MainActivity extends AppCompatActivity {
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView) findViewById(R.id.textview);
}
@Override
protected void onResume() {
super.onResume();
if (Build.VERSION.SDK_INT >= 23) {
//如果用戶并沒有同意該權(quán)限
if (checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
//申請權(quán)限
requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 100);
} else {
LocationUtil.getCurrentLocation(MainActivity.this, callBack);
}
}
}
private LocationUtil.LocationCallBack callBack = new LocationUtil.LocationCallBack() {
@Override
public void onSuccess(Location location) {
textView.append("經(jīng)度: " + location.getLongitude() + " 緯度: " + location.getLatitude()+ "\n");
}
@Override
public void onFail(String msg) {
textView.append(msg + "\n");
}
};
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == 100) {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
LocationUtil.getCurrentLocation(MainActivity.this, callBack);
} else {
textView.append("權(quán)限沒獲让派取1⒂小!臼寄!"+ "\n");
}
}
}
}