Android S - 禁用振动功能

文章讲述了在AndroidS系统中,由于硬件没有马达,开发者需要在VibratorService中移除与振动相关的逻辑。作者修改了`hasVibrator()`方法并确认编译过程,提示遇到`framework.jar`生成问题及可能的解决方法,建议在遇到无法开机时尝试删除相关文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

驱动部分不太清楚,默认是配置了的,但是我们的硬件上并没有马达,于是要在上层去掉相关的逻辑。之前在Android Q 上的修改如下:

frameworks/base/services/core/java/com/android/server/VibratorService.java


    @Override // Binder call
    public boolean hasVibrator() {
        /*lichang 禁用振动功能*/
        //return doVibratorExists();
        return false;
    }

但是在Android S 上并没有找到这个类,有些奇怪,检索一下 hasVibrator() 方法,除去 systemUI 和 tests 的文件也就红框中的包含定义了

查看这些类的注释,发现 SystemVibrator 的注释为 

英:Vibrator implementation that controls the main system vibrator.

中:控制主系统振动器的振动器实现。

 直接改为false,如下

    @Override
    public boolean hasVibrator() {
        if (mVibratorManager == null) {
            Log.w(TAG, "Failed to check if vibrator exists; no vibrator manager.");
            return false;
        }
        //lichang forbidden vibration
        //return mVibratorManager.getVibratorIds().length > 0;
        return false;
    }

,感觉可以了,编译验证,发现 make framework 并未生成 framework.jar 文件 ~~~

找一下 frameworks/base 的 Android.bp 文件,部分如下:

356 java_library {
357     name: "framework-minus-apex",
358     defaults: ["framework-minus-apex-defaults"],
359     installable: true,
360     // For backwards compatibility.
361     stem: "framework",
362     apex_available: ["//apex_available:platform"],
363     visibility: [
364         "//frameworks/base",
365         // TODO(b/147128803) remove the below lines
366         "//frameworks/base/apex/appsearch/framework",
367         "//frameworks/base/apex/blobstore/framework",
368         "//frameworks/base/apex/jobscheduler/framework",
369         "//frameworks/base/packages/Tethering/tests/unit",
370         "//packages/modules/Connectivity/Tethering/tests/unit",
371     ],
372     errorprone: {
373         javacflags: [
374             "-Xep:AndroidFrameworkBinderIdentity:ERROR",
375             "-Xep:AndroidFrameworkCompatChange:ERROR",
376             "-Xep:AndroidFrameworkUid:ERROR",
377         ],
378     },
379 }

再次执行 make framework-minus-apex -j8

我们项目的编译产物路径为:out/target/product/sl8541e_1h10_32b/system/framework/framework.jar

最后 push 验证。

如果有无法开机的情况试试删除以上文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值