我需要使用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