位置监听器不工作

时间:2013-02-09 10:30:57

标签: android google-maps location

我已经使用该代码在30秒间隔和30米距离之后播放mp3声音,但是在移动设备正在睡眠之后它没有播放,而且我已经走了5英里以上。

如何使上面的代码工作? 请帮忙。

先谢谢。

我有一个插件查询:onLocationChanged方法是否知道我的上一个位置?换句话说,如果我执行了这个陈述:

locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 30, 30000, new MyLocationListener());

mp3文件会每30秒执行一次间隔和30分钟距离吗?或者我必须在ScheduledExecutorService中执行这样的声明:

ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
        executor.scheduleWithFixedDelay(new Runnable(){

            public void run() {

locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 30, 30000, new MyLocationListener());



            }

        }, 0, 600, TimeUnit.SECONDS);

总代码:

locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 30, 30000, new MyLocationListener());





private class MyLocationListener implements LocationListener {


    public void onLocationChanged(Location location) {


        ///Audio file which plays everytime the above condition is met 
        mp3.start();



        );

        Toast.makeText(AndroidGPSSampleActivity.this, message, Toast.LENGTH_LONG).show();
    }

    public void onStatusChanged(String s, int i, Bundle b) {

        Toast.makeText(AndroidGPSSampleActivity.this, "Provider status changed",Toast.LENGTH_LONG).show();
    }

    public void onProviderDisabled(String s) {

        Toast.makeText(AndroidGPSSampleActivity.this,"Provider disabled by the user. GPS turned off",Toast.LENGTH_LONG).show();
    }

    public void onProviderEnabled(String s) {
        System.out.println("==onProviderEnabled=" + s);
        Toast.makeText(AndroidGPSSampleActivity.this, "Provider enabled by the user. GPS turned on",Toast.LENGTH_LONG).show();
    }


}

1 个答案:

答案 0 :(得分:2)

首先,我认为您需要检查您的位置参数是否符合您的意思。你30的时间实际意味着30毫秒,我想你想要30 * 1000.你的距离是30000米,大约是18英里。所以我认为你不想要30000,而是30。

现在,只有当位置实际发生变化时,才会根据这些参数通知您。因此,如果在30秒内位置相同或距离最后一个位置不到30米,您将不会收到通知。此外,您正在使用网络提供商,在最佳情况下,如果您有wifi位置,您的准确度为60米,这意味着在收到通知之前您可能需要移动更多。如果您正在获得蜂窝塔位置,那么在切换蜂窝塔之前,您可能会走很长的路,因此也就是位置。