2013-02-09 103 views
0

我已经使用该代码来播放30秒后的间隔和30米的距离的MP3声音,但它不会播放后移动休眠,我已经走过了5英里以上。位置监听不工作

如何使上述代码工作? 请帮助。

在此先感谢。

我有一个插件查询:onLocationChanged方法知道我最后的位置?换句话说,如果我有执行该语句:

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

威尔MP3文件本身执行每30秒间隔和30个MTS距离是多少?,否则我将不得不内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(); 
    } 


} 

回答

2

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

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