我需要使用adndroid接收gps定位,但我不希望設備在活動代碼中顯式註冊LocationListener,或者等等...即我想直接在Manifest文件中註冊LocationListener。Android:如何在清單中註冊一個被動的LocationListener?
不幸的是,這並不工作:(這裏是我的代碼:
<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<receiver android:name=".GPSLocationListener" android:enabled="true">
<intent-filter>
<action android:name="android.location.LocationManager.KEY_LOCATION_CHANGED" />
</intent-filter>
</receiver>
,而我的聽衆是這樣的:
public class GPSLocationListener implements LocationListener
{
public void onLocationChanged(Location location)
{
Log.d(Config.LOGTAG, "GPSLocationListener.java: GPS LOCATION UPDATE CAUGHT");
}
public void onStatusChanged(String provider, int status, Bundle extras) {}
public void onProviderEnabled(String provider) {}
public void onProviderDisabled(String provider) {}
}
但無論我做什麼,我不geht模擬器抓新的(模擬)的位置我通過DDMS推... :(
有誰知道如何得到這個工作?
所以沒有辦法有某種「睡眠」不經常在後臺左右運行,但是有一些功能被觸發每次接收位置鎖定時間的應用? – xenonite 2012-03-22 14:10:43
您可能會考慮使用後臺服務,後臺服務會請求位置更新,然後以一些有用的方式對其進行反應。沒有必要爲此開放活動。但是,當用戶不通過設置WakeLock與設備進行交互時,請確保設備的CPU沒有關閉。 – Stefan 2012-03-22 14:20:43
這完全是我不想做的!我想聽我自己沒有要求的位置更新。更確切地說:每次用戶(或其他應用程序)激活gps並請求定位,我希望我的應用程序變得活躍並以某種方式對此做出反應。在其他時候,希望我的應用程序保持被動 - 或更好:完全不活動。所以:喚醒鎖不是一個選項。一個後臺服務可能會做的伎倆,但這將需要*一些*努力保持它運行等等等等等等等等等等。 – xenonite 2012-03-22 14:30:35