我正在尝试从Android手机中的GPS获取纬度和经度。主要问题是,无论我如何尝试,都无法从该特定提供程序获得它。但是,如果我尝试其他提供商(网络),则可以很好地获得坐标。
TLDR->问题:我无法在Android手机上从GPS_PROVIDER
获取位置/坐标。如何获得它们?
我尝试了getLastKnownLocation()
,requestSingleUpdate(...)
和requestLocationUpdates(...)
。
所有这些尝试的常数似乎是它们与网络提供商一起使用,但与GPS_PROVIDER
不一起使用。
RequestSingleUpdate
和requestLocationUpdates
不生成消息,并且getLastKnownLocation
在GPS中返回NULL。
我还已经在运行时请求权限,并将其放入清单中。
我的清单中有关于此问题的信息:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-feature android:name="android.hardware.location.gps" />
这是我的MainActivity:
public class MainActivity extends AppCompatActivity {
private LocationManager myManager;
private MyLocListener loc;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION}, 0);
loc = new MyLocListener();
myManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
if (myManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
myManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, loc);
}
}
}
}
我的听众:
public class MyLocListener implements LocationListener {
@Override
public void onLocationChanged(Location location) {
if (location != null) {
Log.e("Latitude :", "" + location.getLatitude());
Log.e("Longitude :", "" + location.getLongitude());
}
}
@Override
public void onProviderEnabled(String provider){
}
@Override
public void onProviderDisabled(String provider){
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras){
}
}
这样,我无法获得GPS的任何更新,但是正如我所说的,如果我将提供程序更改为NETWORK,它就可以正常工作,并且我会定期在运行时控制台上获取坐标。
可能要考虑的另一件事是,我在不动的情况下并且正在建筑物内进行测试。也许与它有关...我不知道
无论如何,我们将非常欢迎您提供任何帮助或知识!谢谢!