后续NMEA解析请见: Android解析NMEA
1,GPS整体架构介绍
框架图1,HAL层从驱动读取数据,JNI层会向HAL层注册回调,HAL层获取数据后将数据传给JNI层
2,JNI层会获取GnssLocationProvider.java中的方法,在获得HAL层数据后,在c++代码中调用java方法,将数据传到framework/service中
3,LocationManagerService作为系统服务,创建了GnssLocationProvider,所以GnssLocationProvider获取的数据也就给到了LocationManagerService。根据回调注册的不同,最终数据会通过LocationManagerService或GnssStatusListenerHelper调用之前注册到LocationManagerService中的回调函数
4,LocationManager作为android SDK,负责连接app和LocationManagerService,通过binder与LocationManagerService通信。但LocationManager本身也是也被发布成了系统服务:
@SystemService(Context.LOCATION_SERVICE)
public class LocationManager {
带有@SystemService注释的类,会调用publishBinderService将自己注册到ServiceManager中,我们可以在app中通过
lm = (LocationManager) mContext.getSystemService(Context.LOCATION_SERVICE);
来获取LocationManager 服务。
2,NMEA协议数据的回调
//GPS状态回调注册
LocationManager .addGpsStatusListener(GpsStatus.Listener listener);
//导航信息回调注册
LocationManager.requestLocationUpdates(String provider, long minTime, float minDistance, LocationListener listener)
网友评论