Android Q版本如何实现关机铃声的控制

本文详细讲述了如何在Android Q(Android 10)设备上通过修改MtkBootanimation的BootAnimation.cpp文件和AudioService.java中的系统属性,实现在静音或振动模式下禁止开机铃声的配置。重点介绍了涉及的代码片段和系统属性管理,适合对Android内核定制感兴趣的开发者阅读。

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

案例:要求在静音或振动模式下开机铃声禁止播放

版本:Android Q版本(Android 10)

因为之前添加开机铃声时是在vendor下面进行的处理,所以以下代码也是在vendor进行的处理

path:vendor/mediatek/proprietary/operator/frameworks/bootanimation/MtkBootanimation/BootAnimation.cpp

     if (status)
@@ -538,7 +549,24 @@ bool BootAnimation::threadLoop()
     // We have no bootanimation file, so we use the stock android logo
     // animation.
     sp<MediaPlayer> mediaplayer;
-    const char* resourcePath = NULL;
+       // Monkey.20200611
+    // const char* resourcePath = NULL;
+       char audio[PROPERTY_VALUE_MAX];
+       property_get("persist.sys.bootanim.play_sound", audio, "1");
+       ALOGD("monkey persist.sys.bootanim.play_sound %d",atoi(audio));
+    int index = 0;
+    if (bBootOrShutDown) {
+        index = 0;
+    } else {
+        index = 1;
+    }
+       
+       const char* resourcePath = mAudioPath[index][0];
+     if(atoi(audio) == 0){
+                resourcePath = NULL;
+        }
+       //for bootanimation end
+       

基本在frameworks下面添加的开机铃声逻辑基本一样,所以不做过多说明

上层具体的操作要在振动或者静音处理的地方进行操作。

根据log分析当模式状态修改时frameworks/base/services/core/java/com/android/server/audio/AudioService.java文件进行了一些操作

path:frameworks/base/services/core/java/com/android/server/audio/AudioService.java

        int maxSystemVolume = SystemProperties.getInt("ro.config.system_vol_steps", -1);
@@ -4955,6 +4963,17 @@ public class AudioService extends IAudioService.Stub
                 intent.putExtra(AudioManager.EXTRA_STREAM_VOLUME_MUTED, state);
                 sendBroadcastToAll(intent);
             }
+                       // Monkey.20201219 bootanim play sound
+                       if (mStreamType == AudioSystem.STREAM_SYSTEM) {
+                               if (state) {
+                                       Log.d("monkey_boot","resourcePath = NULL|"+state+"-|-"+SystemProperties.get("persist.sys.bootanim.play_sound","-1"));
+                                       SystemProperties.set("persist.sys.bootanim.play_sound", "0");
+                               } else {
+                                       SystemProperties.set("persist.sys.bootanim.play_sound", "1");
+                                       Log.d("monkey_boot","resourcePath = NULL|"+state+"-|-"+SystemProperties.get("persist.sys.bootanim.play_sound","-1"));
+                               }
+                       }
+                       // end
         }

注:persist.sys.bootanim.play_sound为系统自带的一个操控开机铃声的属性。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旧时旅人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值