API级别23的位置服务问题

时间:2017-12-31 15:55:00

标签: android gps avd android-gps

我看到使用API​​级别23(Android 6.0)的真实设备与为相同API级别配置的仿真器之间的位置服务行为非常不同。

我有一个包含以下声明的类:

public class GPS implements LocationListener, GpsStatus.NmeaListener {

在构造函数中有以下内容:

    LocationManager locationManager = (LocationManager) GPS.appcontext.getSystemService(Context.LOCATION_SERVICE);
    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, (LocationListener)this);
    locationManager.addNmeaListener(this);

在AVD模拟器中,NMEA监听器永远不会触发,但我确实看到通过onLocationChanged回调提供的位置更新。

在真实设备上,我看到NMEA更新,onLocationChanged永远不会触发。此外,如果我在构造函数中注释掉requestLocationUpdates调用,那么我在实际设备上得不到任何东西(甚至不是NMEA)。

使用AVD时,我通过模拟器发送GPS坐标。

这仅仅限制了GPS在仿真器中的实现方式吗?换句话说,有没有办法通过模拟器获得NMEA句子?

附带问题:为什么我必须请求位置更新并添加NMEA监听器才能在真实设备上获得回调?

提前致谢。

0 个答案:

没有答案