packagecom.example.myjetpack01;importandroid.Manifest;importandroid.content.Context;importandroid.content.pm.PackageManager;importandroid.location.Location;importandroid.location.LocationListener;importandroid.location.LocationManager;importandroid.os.Bundle;importandroid.util.Log;importandroidx.annotation.NonNull;importandroidx.core.app.ActivityCompat;importandroidx.lifecycle.Lifecycle;importandroidx.lifecycle.LifecycleObserver;importandroidx.lifecycle.OnLifecycleEvent;publicclassMyLocationObserverimplementsLifecycleObserver{privateContext context;privateLocationManager locationManager;privateMyLocationListener myLocationListener;publicMyLocationObserver(Context context){this.context = context;}@OnLifecycleEvent(Lifecycle.Event.ON_CREATE)privatevoidstartLocation(){Log.d("kun","开始获取GPS服务!");
locationManager =(LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
myLocationListener =newMyLocationListener();if(ActivityCompat.checkSelfPermission(context,Manifest.permission.ACCESS_FINE_LOCATION)!=PackageManager.PERMISSION_GRANTED&&ActivityCompat.checkSelfPermission(context,Manifest.permission.ACCESS_COARSE_LOCATION)!=PackageManager.PERMISSION_GRANTED){// TODO: Consider calling// ActivityCompat#requestPermissions// here to request the missing permissions, and then overriding// public void onRequestPermissionsResult(int requestCode, String[] permissions,// int[] grantResults)// to handle the case where the user grants the permission. See the documentation// for ActivityCompat#requestPermissions for more details.return;}
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,3000,1, myLocationListener);}@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)privatevoidstopLocation(){Log.d("kun","停止获取GPS服务!");
locationManager.removeUpdates(myLocationListener);}staticclassMyLocationListenerimplementsLocationListener{@OverridepublicvoidonLocationChanged(@NonNullLocation location){Log.d("kun","位置发生改变"+location.toString());}@OverridepublicvoidonStatusChanged(String provider,int status,Bundle extras){LocationListener.super.onStatusChanged(provider, status, extras);}@OverridepublicvoidonProviderEnabled(@NonNullString provider){LocationListener.super.onProviderEnabled(provider);}}}