requestLocationUpdates()占用太多时间或根本不起作用

时间:2016-05-09 15:21:44

标签: android android-gps

我在Android应用程序中使用requestLocationUpdates方法在我的设备位置发生变化时获取更新。我设置了Service但是这个minTime = 0方法在经过很长时间的延迟(即10到15分钟,甚至更长时间)之后提供更新。有时当我运行我的应用程序requestLocationUpdates时,mehod根本不提供任何更新。并且很少次(非常罕见)此requestLocationUpdates方法按预期运行(连续更新,延迟时间为0秒)。那可能是什么问题呢?每次运行我的应用程序时,如何连续更新?

HelloService.java

requestLocationUpdates

LocationDetector.java

public class HelloService extends Service {
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                new Handler(getMainLooper()).post(new Runnable() {
                    @Override
                    public void run() {
                        LocationManager manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
                        if (Build.VERSION.SDK_INT >= 23 && ContextCompat.checkSelfPermission(MainActivity.context, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ContextCompat.checkSelfPermission(MainActivity.context, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
                            return;
                        }
                        else {
                            manager.requestLocationUpdates("gps", 0, 0, new LocationDetector());
                            Toast.makeText(MainActivity.ctx, "Service Started...", Toast.LENGTH_LONG).show();
                        }
                    }
                });
            }
        }).start();
        return Service.START_STICKY;
    }
}

1 个答案:

答案 0 :(得分:1)

我尝试了在笔记本电脑上创建新项目并在手机上运行的整个代码。

结果:它正在工作,手机上的GPS TTF差不多15秒。

您是否尝试过其他设备?

gps图标怎么样?出现了,消失了?

尝试融合位置提供商,看看会发生什么,link