Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法在Android mobile上获取位置_Android_Mobile_Locationmanager_Android Location - Fatal编程技术网

无法在Android mobile上获取位置

无法在Android mobile上获取位置,android,mobile,locationmanager,android-location,Android,Mobile,Locationmanager,Android Location,事实上,我的问题是有时我可以在Android real设备上获取位置,有时我无法获取位置。我使用以下代码获取位置 LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); Criteria criteria = new Criteria(); criteria.setAccuracy(Criteria.ACCURACY_FINE); criteria.setAlt

事实上,我的问题是有时我可以在Android real设备上获取位置,有时我无法获取位置。我使用以下代码获取位置

LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setPowerRequirement(Criteria.POWER_LOW);
String provider = locationManager.getBestProvider(criteria, true);
Location location = locationManager.getLastKnownLocation(provider);

我需要在应用程序启动时获取位置。我不知道为什么有时候会失败。如何解决这个问题

您忘记请求“位置更新”,请在声明
LocationManager
后使用此功能:

locationManager.requestLocationUpdates(provider, 0, 0, this);
您必须让类实现
LocationListener
,然后添加此函数:

public void onLocationChanged(Location location) {
//get the location here
}
如果不想重复获取位置,在获取位置后,必须通过以下方式停止“位置更新”:

locationManager.removeUpdates(this);
如果希望应用程序始终侦听“位置更新”,最好在
onResume()
中请求更新,并在
onPause()
onDestroy()中删除更新


祝你好运

@jsmith评论了我的问题


增加您的电源需求,并确保在可以的地方进行测试 获取网络或gps信号。如果这有帮助的话,那么这只是一个 传感器接收信号不足,无法知道位置


这是我问题的正确答案。现在它可以正常工作了

你在使用BroadCastReceiver吗?那么你是如何在应用程序启动时获取GPS坐标的?@Android,实际上我有一个扩展
应用程序
的类。我已经在AndroidManifest文件中提到了。我在那个课程中使用了这个代码。增加你的功率需求,确保你测试哪里可以获得网络或gps信号。如果这有帮助的话,那就是传感器没有获得足够的信号来知道位置。jsmith听起来不错——GPS可能就是无法获得信号来获得位置。尝试将设备移动到外部,或移动到GPS连接更强的已知位置。如果应用程序更频繁地获取位置,那么您就万事大吉了。但是,如果您确实需要一个位置,我可以建议您使用
AsyncTask
,它将继续尝试获取GPS坐标,直到最终找到一些坐标为止?