Android 如果GPS关闭,如何使用融合定位API获取位置
如果GPS已关闭,我正在尝试使用融合API获取设备的最新位置 但我得到的是空位置值 我的位置课Android 如果GPS关闭,如何使用融合定位API获取位置,android,gps,location,fusedlocationproviderapi,Android,Gps,Location,Fusedlocationproviderapi,如果GPS已关闭,我正在尝试使用融合API获取设备的最新位置 但我得到的是空位置值 我的位置课 public class FusedLocation implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener, LocationListener { private static FusedLocation instance; private Context
public class FusedLocation implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener, LocationListener {
private static FusedLocation instance;
private Context mContext;
private static LocationRequest locationRequest;
private static GoogleApiClient mGoogleApiClient;
private Location mLastLocation;
private static final long INTERVAL = 30 * 1000;//1000 * 60 * 30;
private static final long FASTEST_INTERVAL = 15 * 1000;//1000 * 60 * 30;
private static final long ONE_MIN = 1000 * 60;
private static final long REFRESH_TIME = ONE_MIN * 5;
private static final float MINIMUM_ACCURACY = 50.0f;
public FusedLocation(Context context) {
this.mContext = context;
locationRequest = LocationRequest.create();
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
locationRequest.setInterval(INTERVAL);
locationRequest.setFastestInterval(FASTEST_INTERVAL);
buildGoogleApiClient();
mGoogleApiClient.connect();
}
public static FusedLocation getInstance(Context context) {
if (instance == null) {
instance = new FusedLocation(context);
}else{
if(!mGoogleApiClient.isConnected()){
mGoogleApiClient.connect();
}
System.out.println("NOT NULL VALUE");
}
return instance;
}
/**
* Builds a GoogleApiClient. Uses the addApi() method to request the LocationServices API.
*/
protected synchronized void buildGoogleApiClient() {
mGoogleApiClient = new GoogleApiClient.Builder(mContext)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(LocationServices.API)
.build();
}
@Override
public void onConnected(Bundle bundle) {
Log.d("location:", "onConnected()");
if (ActivityCompat.checkSelfPermission(mContext, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(mContext, 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;
}
Location location = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
if (location != null) {
mLastLocation = location;
Log.d("onConnected", "lat:" + mLastLocation.getLatitude() + " and long:" + mLastLocation.getLongitude());
} else {
Log.d("failLocation", "No Location.");
}
}
@Override
public void onConnectionSuspended(int i) {
if (!mGoogleApiClient.isConnected())
mGoogleApiClient.connect();
}
@Override
public void onLocationChanged(Location location) {
mLastLocation = location;
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
@Override
public void onConnectionFailed(ConnectionResult connectionResult) {
}
public Location getLocation() {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
if (ActivityCompat.checkSelfPermission(mContext, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(mContext, 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 ;
}
Location location = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
if (location != null) {
mLastLocation = location;
Log.d("getLocation", "lat:" + mLastLocation.getLatitude() + " and long:" + mLastLocation.getLongitude());
} else {
//LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, FusedActivity.this);
Log.d("failLocation", "No Location.");
}
}
},2000);
return mLastLocation;
}
}
按您的wifi状态!!希望您为棉花糖支持提供了运行时许可。是的,我提供了,但仍然无法获取位置如果gps使用Fused API甚至lastKnownLocationfound解决方案关闭,是否无法获取位置?