1

我已经使用该代码在 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();
    }


}
4

1 回答 1

2

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

现在,只有在位置实际发生变化时才会根据这些参数通知您。因此,如果在 30 秒内该位置与上一个位置相同或在 30 米范围内,您将不会收到通知。此外,您正在使用网络提供商,在最好的情况下,如果您有 wifi 位置,您的准确度是 60 米,这意味着您可能需要移动更多距离才能收到通知。如果您要获取手机信号塔位置,您可能需要很长的路才能切换手机信号塔,从而切换位置。

于 2013-02-11T21:25:29.310 回答