2012-08-02 66 views
0

我是Android新手,正在開發一個應用程序,其中的小部件顯示位置latlong。我正在配置活動。刷新按鈕上的相同位置刷新。所有工作正常,但Activity窗口在小部件上閃爍。我希望從服務中獲得相同的輸出,以便活動屏幕不會在前面閃爍。Android:如何使用Activity在服務中給出的功能

爲此,我創建了一個服務,它啓動刷新按鈕單擊,但現在我怎麼可以編碼,因爲我使用地圖視圖,位置管理器等服務不允許。

+0

我不認爲我理解這個問題。你能否以更詳細的方式來描述它? – alex 2012-08-02 12:05:07

+0

之前,我在刷新按鈕單擊時調用一個活動,該活動查找最新的LAT LONG並更新小部件。它工作正常,但活動屏幕在更新小部件之前閃爍。現在我想用服務而不是活動爲此目的..但問題是我在活動代碼中使用位置管理器和地圖視圖等來查找位置,但在服務中這些是不允許的。 – rmimran 2012-08-03 07:43:13

+0

你當然可以在'Service'裏面使用'LocationManager' :) – alex 2012-08-03 08:20:20

回答

0

在你的服務,你可以使用這樣的:實現LocationListener

private void startPositionListener() { 
     if (mLocationManager == null) { 
      // Get the location manager 
      mLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
     } 
     try { 
      gpsEnabled = mLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); 
      networkEnabled = mLocationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER); 
     } catch (Exception e) { 
      Log.e(TAG, e.getLocalizedMessage()); 
     } 
     // Register the listener with the Location Manager to receive location updates 
     if(gpsEnabled) { 
      mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 6000, 1, mGpsListener); 
      Log.d(TAG, "GPS Listener started."); 
     } else if(networkEnabled) { // Checking for GSM 
      mLocationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 6000, 1, mNetworkListener); 
      Log.d(TAG, "Network Listener started."); 
     } 
} 

mNetworkListenermGpsListener是一流的。您必須填寫的唯一方法是onLocationChanged(Location)(這是您在服務內部獲取位置數據的位置)。當你完成類似的事情時不要忘記更新這些對象:

private void stopPositionListner() { 
     if (mLocationManager != null) { 
      mLocationManager.removeUpdates(mGpsListener); 
      mLocationManager.removeUpdates(mNetworkListener); 
      Log.d(TAG, "Position Listener stopped."); 
     } 
    } 
+0

謝謝4你回覆,我會看到並恢復出來。 – rmimran 2012-08-03 12:48:10

相關問題