ran*_*ose 3 gps android android-location
想听gps的可用性.跟着这个.但是,onGpsStatusChanged即使我禁用/启用了gps ,也没有被解雇.试过多部手机.另外,查看相关的stackoverflow Qns,例如this,this和this.但是没有成功.任何帮助表示赞赏.谢谢!
代码片段:
倾听者
Listener mGPSListener = new GpsStatus.Listener() {
@Override
public void onGpsStatusChanged(final int event) {
Log.d(TAG, "---onGpsStatusChanged---");
switch (event) {
case GpsStatus.GPS_EVENT_STARTED:
Log.d(TAG, "GPS_EVENT_STARTED");
break;
case GpsStatus.GPS_EVENT_FIRST_FIX:
Log.d(TAG, "GPS_EVENT_FIRST_FIX");
break;
case GpsStatus.GPS_EVENT_STOPPED:
Log.d(TAG, "GPS_EVENT_STOPPED");
break;
case GpsStatus.GPS_EVENT_SATELLITE_STATUS:
Log.d(TAG, "GPS_EVENT_SATELLITE_STATUS");
break;
default:
Log.d(TAG, "SOMETHING_ELSE");
break;
}
}
};
Run Code Online (Sandbox Code Playgroud)
服务
.....
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
super.onStartCommand(intent, flags, startId);
Log.d(TAG, "onStartCommand");
Context ctx = getBaseContext();
Log.d(TAG, "Done, " + ctx);
LocationManager locManager = (LocationManager)
ctx.getSystemService(Context.LOCATION_SERVICE);
Log.d(TAG, "Got locManager");
locManager.addGpsStatusListener(mGPSListener);
Log.d(TAG, "Added -> locManager.addGpsStatusListener(mGPSListener)");
return START_STICKY;
}
.....
Run Code Online (Sandbox Code Playgroud)
可以看到日志报表context,LocationManager等等.但是从什么onGpsStatusChanged都没有.
Edit1 我的清单包含以下权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
Run Code Online (Sandbox Code Playgroud)
好的,所以这是我的发现.
如果你想要onGpsStatusChanged你的GpsStatus.Listener被叫,你不仅需要将它注册到你的LocationManager使用,addGpsStatusListener而且还要通过听取位置更新requestLocationUpdates.
当我开始借助聆听位置更新requestLocationUpdates的LocationManager课,我开始GPS状态的变化.
| 归档时间: |
|
| 查看次数: |
2861 次 |
| 最近记录: |