Android Gnss模块初步整理
一. 概述:
Android的Gnss功能分布在App层和Framework层,App层主要调用LocationManager,通过Binder调用请求Framework的LocationManagerService服务,注册回调函数等:
1. // 获取Fw的LocaitonManagerService
locManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);2. // 权限申请
requestPermissions(new String[] { Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION }, permissionRequestCode)3. // 注册定制变化监听
3.1 // 创建ILocationListener
private LocationListener locListener = new LocationListener() {@Overridepublic void onLocationChanged(@NonNull Location location) {}@Overridepublic void onProviderDisabled(String arg0) {}@Overridepublic void onProviderEnabled(String arg0) {}@Overridepublic void onStatusChanged(String arg0, int arg1, Bundle arg2) {}
};3.2 向LocationManagerService注册Listener
locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, updateInterval, minDistanceM, locListener);4. // 等待地址更新
二. 类结构:
App -> LocationManager -> LocationManagerService -> LocationProviderManager -> GnssLocationProvider ->GnssNative -> GnssHal ->com_android_server_location_GnssLocationProvider -> hal service(对接外部Gnss数据来源)