当前位置: 首页 > news >正文

android 8.1 disable unsupported sensor

如果device不支持某种sensor,可以在android/frameworks/base/core/java/android/hardware/SystemSensorManager.java里将其disabled掉。以disable proximity sensor为例。

public SystemSensorManager(Context context, Looper mainLooper) {synchronized(sLock) {if (!sNativeClassInited) {sNativeClassInited = true;nativeClassInit();}}mMainLooper = mainLooper;mTargetSdkLevel = context.getApplicationInfo().targetSdkVersion;mContext = context;mNativeInstance = nativeCreate(context.getOpPackageName());// initialize the sensor listfor (int index = 0;;++index) {Sensor sensor = new Sensor();if (!nativeGetSensorAtIndex(mNativeInstance, sensor, index)) break; //disable p_sensor solution: Remove proximity sensor from sensor list.if ((sensor != null) && sensor.getType() == Sensor.TYPE_PROXIMITY){Log.i(TAG,"skip proximity sensor");continue;}mFullSensorsList.add(sensor);mHandleToSensor.put(sensor.getHandle(), sensor);}}

就是将p_sensor 从mFullSensorsList中移出。这一步基本上已经work了(SensorManager#getSensorList(8)得不到p_sensor的讯息),但是如果你的code还需要通过CTS测试,那么最好在android/frameworks/base/services/core/java/com/android/server/pm/PackageManagerService.java的hasSystemFeature方法里做remove proximity sensor feature

public boolean hasSystemFeature(String name, int version) {// allow instant applicationssynchronized (mAvailableFeatures) {final FeatureInfo feat = mAvailableFeatures.get(name);if (feat == null) {return false;} else {//remove proximity sensor featureif(name.equals("android.hardware.sensor.proximity")){Log.w(TAG, "skip standard  proximity sensor");return false;}return feat.version >= version;}}}

这样一来PackageManager#hasSystemFeature(android.hardware.sensor.proximity) return false。

可用命令adb shell pm list features来检查device都support 那些功能。

或者尝试删除frameworks\native\data\etc下相关的配置文件

http://www.lryc.cn/news/214402.html

相关文章:

  • 二、类与对象(一)
  • 写给所有的程序员,或者努力生活的你。
  • pytorch 笔记:GRU
  • Kubernetes - Ingress HTTP 升级 HTTPS 配置解决方案(新版本v1.21+)
  • Verilog:写流水灯时遇到的问题
  • 操作系统第四章-存储器管理
  • org.springframework.cloud:spring-cloud-starter-openfeign:jar is missing详解
  • Netty第一部
  • 【设计模式】第11节:结构型模式之“装饰器模式”
  • Spire.doc读取模板文档,并在书签处插入内容
  • 性能测试实施流程,5个阶段给老板安排的明明白白!
  • 【教程】R语言生物群落(生态)数据统计分析与绘图
  • 数据库-用户权限管理
  • 十一、W5100S/W5500+RP2040树莓派Pico<ARP 地址解析>
  • 可以直接在线制作电子画册的网站
  • SortableJS:vuedraggable实现元素拖放排序
  • 跟着Nature Communications学作图:纹理柱状图+添加显著性标签!
  • 88. 合并两个有序数组、Leetcode的Python实现
  • 视频列表:点击某个视频进行播放,其余视频全部暂停(同时只播放一个视频)
  • 论文-分布式-共识,事务以及两阶段提交的历史描述
  • [100天算法】-二叉树剪枝(day 48)
  • 常用编程语言排行与应用场景汇总(2023.10)
  • 基于 MySQL 多通道主主复制的机房容灾方案
  • 视频汇聚平台EasyCVR分发的流如何进行token鉴权?具体步骤是什么?
  • B-5:网络安全事件响应
  • 第17期 | GPTSecurity周报
  • 透视俄乌网络战之五:俄乌网络战的总结
  • 深度学习之基于Pytorch卷积神经网络的图像分类系统
  • 外观专利怎么申请?申请外观专利需要的资料有哪些?
  • 【Amazon】跨AWS账号资源授权存取访问