繁体   English   中英

等待GPS定位,然后再继续Android

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM