[英]Waiting for GPS location before proceeding Android
我知道周围有许多类似的问题,但在我的搜索中找不到合适的答案。
我的App的活动依赖于GPS位置来起作用。 如果应用程序在启动后立即运行,则由于空指针异常等(位置为空)而崩溃。 我知道这些是我的编程错误,我应该处理这些异常,但是在找到GPS修复之前,该活动仍然没有用。
当应用崩溃时,我会看到“正在搜索GPS”图标,如果放置足够长时间,则会找到GPS位置,并且该应用可以正常运行。
我创建了另一个活动以充当主屏幕,当找到GPS位置时,该按钮将使该按钮链接到上述活动。 问题在于它似乎找不到或正在寻找GPS信号。 我的意思是,不会显示“正在搜索GPS”图标,并且永远不会启用该按钮。 该家庭活动的代码如下,我错过了什么吗?
我的活动实现了LocationListener,下面的代码在Activity的“ onCreate”方法中。 “ startExplore”启动我的GPS依赖活动。
exploreButton = (Button) findViewById(R.id.button1);
exploreButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
startExplore();
}
});
// Get the location manager
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
// Define the criteria how to select the location provider -> use
Criteria criteria = new Criteria();
provider = locationManager.getBestProvider(criteria, false);
Location location = locationManager.getLastKnownLocation(provider);
// Initialize the location fields
if (location != null) {
System.out.println("Provider " + provider + " has been selected.");
onLocationChanged(location);
} else {
exploreButton.setEnabled(false);
exploreButton.setText("Finding location . . .");
}
这是我的“ onLocationChanged”方法。 正如我上面所说,与我的其他活动不同,我没有得到“正在搜索GPS”图标,尽管该位置与我的其他活动中使用的方法相同,但似乎未找到该位置。 那么,这是等待找到位置的正确方法,并且有人可以发现任何错误吗?
public void onLocationChanged(Location location) {
exploreButton.setEnabled(true);
exploreButton.setText("Found signal");
}
调用locationManager.requestLocationUpdates(locationProvider, 0, 0, this)
以获取更新的位置。。这可能是问题的根源。由于这个原因,我认为没有启动“仅搜索GPS”。
将其移出onCreate方法或将其放入处理程序中。
例:
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
//methods you want.
}
}, 100);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.