2013-02-09 90 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米,這意味着您在得到通知之前可能需要移動相當多的位置。如果你正在獲得手機信號塔的位置,那麼在它切換手機信號塔之前,你可能會走很長的路,因此地點。