我尝试在 android 中使用 GPS_Provider
查找位置。当尝试使用 Network_Provider
获取位置时,它会给我位置并正确调用回调函数,但是当我尝试使用 GPS_Provider
获取位置时,它会给我位置 null & 也不调用 LocationListener
的回调函数 onLocationChanged
。
我的代码是:
LocationManager lm;
boolean isNetwork = false;
Location location;
LocationListener locationListener;
LocationListener loc;
MyLocation myLocation;
Location location1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lm = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
try {
myLocation = new MyLocation();
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
// TODO: Consider calling
Log.e("Location", "Permission Not Given");
return;
}
Log.e("Location", "Permission is Given");
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, myLocation);
location1=lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
}catch(Exception e)
{
}
}
MyLocation.class
public class MyLocation implements LocationListener {
@Override
public void onLocationChanged(Location location) {
if(location!=null)
{
String lat,Longi;
lat=String.valueOf(location.getLatitude());
Longi=String.valueOf(location.getLongitude());
Log.e("Latitude: " , lat);
Log.e("Longitude: " , Longi);
}
else
Log.e("Location is null", "Location not Found");
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
Log.e("Latitude: " ,""+ provider+ " Status: "+status);
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
Log.e("Latitude: " , provider);
}
}
它给我的 logcat 错误如下:
02-04 00:50:52.280 14480-14480/com.arc.locationusingnetwork E/Location: Permission is Given
02-04 00:50:52.360 14480-14480/com.arc.locationusingnetwork E/IMGSRV: :0: PVRDRMOpen: TP3, ret = 46
02-04 00:50:52.370 14480-14480/com.arc.locationusingnetwork E/IMGSRV: :0: PVRDRMOpen: TP3, ret = 49
02-04 00:50:52.370 14480-14480/com.arc.locationusingnetwork E/IMGSRV: :0: PVRDRMOpen: TP3, ret = 50
02-04 00:50:52.380 14480-14480/com.arc.locationusingnetwork E/IMGSRV: :0: PVRDRMOpen: TP3, ret = 50
02-04 00:50:52.380 14480-14480/com.arc.locationusingnetwork E/IMGSRV: :0: PVRDRMOpen: TP3, ret = 50
02-04 00:50:52.390 14480-14480/com.arc.locationusingnetwork E/IMGSRV: :0: PVRDRMOpen: TP3, ret = 52
最佳答案
旧的 LocationListener 类可能已被弃用。你应该使用 FusedLocationApi由 Android 获取当前位置或通过 FusedLocationAPI 的 LocationListener 接收位置更新。
这是使用 FusedLocationApi 的一个很好的教程:Android Location API
关于android - GPS 位置提供商在 Android 中为我提供了空位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35193670/