mer*_*lcu 4 gps android satellite-navigation android-navigation android-gps
我正在开发一个应用程序,我想了解gps卫星的数量.我正在使用"onSatelliteStatusChanged"方法,但它不起作用.我看到的下面使用的代码片段.
码
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
gnssStatusCallBack = new GnssStatus.Callback() {
@Override
public void onSatelliteStatusChanged(GnssStatus status) {
satelliteCount = status.getSatelliteCount();
}
};
locManager.registerGnssStatusCallback(gnssStatusCallBack);
} else {
locManager.addGpsStatusListener(this);
}
}
Run Code Online (Sandbox Code Playgroud)
注意:我在外面测试过.
如果没有明确要求更新位置,您的设备可能无法获取此信息.以下对我有用,其中member mGnssStatusCallback是你的GnssStatus.Callback,而Activity(或其他一些类)实现了LocationListener ; 这里这个活动实现了它,我this作为最后一个参数传递给requestLocationUpdates和removeUpdates.这30000表示我们每隔30秒(30000 毫秒)请求更新,并0指示如果设备移动> 0米,我们只需要更新.
public class GnssActivity extends Activity implements LocationListener {
GnssStatus.Callback mGnssStatusCallback;
LocationManager mLocationManager;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mLocationManager =
(LocationManager) getSystemService(LOCATION_SERVICE);
mGnssStatusCallback = new GnssStatus.Callback() {
// TODO: add your code here!
};
}
@Override
protected void onStart() {
super.onStart();
mLocationManager.registerGnssStatusCallback(mGnssStatusCallback);
mLocationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER, 30000, 0, this
);
}
@Override
protected void onStop() {
mLocationManager.removeUpdates(this);
mLocationManager.unregisterGnssStatusCallback(
mGnssStatusCallback
);
super.onStop()
}
@Override
public void onLocationChanged(Location location) {
}
@Override
public void onStatusChanged(String provider, int status,
Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
?
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6202 次 |
| 最近记录: |