GnssStatus.CallBack onSatelliteStatusChanged() 不工作
GnssStatus.CallBack onSatelliteStatusChanged() not working
我正在开发一个应用程序,我想了解 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);
}
}
注:我在外面测试过
概览(请求位置更新以接收它们):
如果不明确要求位置更新,您的设备可能不会寻找此信息。以下对我有用,其中成员 mGnssStatusCallback
是您的 GnssStatus.Callback and the Activity (or some other class) implements LocationListener;这里 activity 实现了它,我将 this
作为最终参数传递给 requestLocationUpdates
和 removeUpdates
。 30000
表示我们每 30 秒(30000 毫秒 秒)请求更新,0
表示我们只希望在设备移动时更新> 0 米。
您可能需要弄清楚可用的提供程序,等等。
见 Android Training.
例子
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) {
}
⋮
}
另请注意
GnssStatus Callback
如果提供者未设置为 GPS_PROVIDER
,则永远不会被调用
locmgr.requestLocationUpdates(LocationManager.GPS_PROVIDER, 30000, 0, this);
一个常见的错误是将提供商设置为 NETWORK_PROVIDER
我正在开发一个应用程序,我想了解 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);
}
}
注:我在外面测试过
概览(请求位置更新以接收它们):
如果不明确要求位置更新,您的设备可能不会寻找此信息。以下对我有用,其中成员 mGnssStatusCallback
是您的 GnssStatus.Callback and the Activity (or some other class) implements LocationListener;这里 activity 实现了它,我将 this
作为最终参数传递给 requestLocationUpdates
和 removeUpdates
。 30000
表示我们每 30 秒(30000 毫秒 秒)请求更新,0
表示我们只希望在设备移动时更新> 0 米。
您可能需要弄清楚可用的提供程序,等等。
见 Android Training.
例子
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) {
}
⋮
}
另请注意
GnssStatus Callback
如果提供者未设置为 GPS_PROVIDER
locmgr.requestLocationUpdates(LocationManager.GPS_PROVIDER, 30000, 0, this);
一个常见的错误是将提供商设置为 NETWORK_PROVIDER