在上层调用locationManager.isProviderEnabled(android.location.LocationManager.GPS_PROVIDER))时返回了false,追了一下代码看看,以下是

在LocationManagerService.java中

private void _loadProvidersLocked() {        // Attempt to load "real" providers first        if(GpsLocationProvider.isSupported()){      //调试返回空,也就是说isSupported为false            // Create a gps location provider            GpsLocationProvider gpsProvider = new GpsLocationProvider(mContext, this);            mGpsStatusProvider = gpsProvider.getGpsStatusProvider();            mNetInitiatedListener = gpsProvider.getNetInitiatedListener();            addProvider(gpsProvider);            mGpsLocationProvider = gpsProvider;        }
GpsLocationProvider.isSupported()决定是否支持GPS,而这个方法实现在GpsLocationProvider.java中
 public static boolean isSupported() {        return native_is_supported();    }
向下就是调用JNI层的接口了,
{"native_is_supported", "()Z", (void*)android_location_GpsLocationProvider_is_supported},

static jboolean android_location_GpsLocationProvider_is_supported(JNIEnv* env, jclass clazz) {    return (sGpsInterface != NULL || get_gps_interface() != NULL);}
sGpsInterface是gps的接口,get_gps_interface()也是在这个文件中定义的,gps_get_interface函数属于HAL层的调用

 static const GpsInterface* get_gps_interface() {  int err;  hw_module_t* module;  const GpsInterface* interface = NULL;    err = hw_get_module(GPS_HARDWARE_MODULE_ID, (hw_module_t const**)&module);  if (err == 0) {    hw_device_t* device;    err = module->methods->open(module, GPS_HARDWARE_MODULE_ID, &device);    if (err == 0) {      gps_device_t* gps_device = (gps_device_t *)device;      interface = gps_device->get_gps_interface(gps_device);    }  }

get_gps_interface(devices)


未完

更多相关文章

  1. Android Studio学习:简单控件:Button控件的点击、长按函数重写
  2. Android 打印函数调用堆栈调试
  3. Android静态安全检测 -> 敏感函数调用风险
  4. Android中调用系统函数查找联系人
  5. Android getActionBar() 函数总是返回 null 的解决
  6. 【Android】简单的接口回调
  7. 【APP】微信接口对Android与IOS验证方式的差异

随机推荐

  1. 凛冬至,外包咋了,努力照样250!
  2. 抢票加速靠谱?还是黄牛更靠谱?
  3. 国内网游版号重开审批;腾讯、网易等游戏股
  4. 漫谈发版哪些事,好课程推荐
  5. 租房减税30,房东加租300!
  6. 社交软件撬TX墙角,到底还有没有汤喝
  7. 使用表格写课程表代码
  8. 开学第二天作业-H5 课程表与注册表单
  9. 常用注册表单功能
  10. 开学第一天作业