android系统在静音模式下关闭camera拍照声音的方法_Android

话说为了防止偷拍,业内有不成文规定,手机公司在做camera时,点击拍照和录像键的时候,必须要有提示音。因此,google也就非常人性化的将播放拍照声音的函数,放到了cameraService中,防止开发者能开发出不响的camera,从而只要调用拍照函数,一定会响,这是写死在framework中的。

话说这个规定在当今有点不合时宜,这不,今天我收到测试提的一个BUG,说是公司的新需求,要求在静音模式下拍照声音也得取消。这么无耻的需求,也许就在我们中国最大的山寨手机公司才会提到。废话不多说,看看是怎么改的。

刚开始想到的是调用audiomanager的service,但是这会涉及到进程间通信,比较繁琐。所以用到了SystemProperity。想在APP监听点击事件时增加一个property,将当时的aduio状态写进去,如果为静音模式,则写入1,然后cameraservice再调用playsound时也取这个property,来判断是否playsound。

关于在app中写入systemprperty,我想引用一下大神的博客,博客地址http://www.cnblogs.com/eustoma/archive/2011/05/28/2415859.html。
以下为引用的博文:
---------------------------------------------------------------------------------------------------------start
使应用程序具有AID_SYSTEM的UID
那如何使应用程序的uid变为1000呢?
由于我可以在Android系统源码的环境下用make来编译,所以需要做如下几步:
l在应用程序的AndroidManifest.xml文件中的manifest节点中加入属性:
android:sharedUserId="android.uid.system";
通过Shared User id,拥有同一个User id的多个APK可以配置成运行在同一个进程中。那么把程序的UID配成android.uid.system,也就是要让程序运行在系统进程中,这样就有权限来设置前缀为hw.的属性了。
l修改Android.mk文件,加入LOCAL_CERTIFICATE := platform;
加入UID还不够,如果这时候安装APK的话发现无法安装,提示签名不符,原因是程序想要运行在系统进程中还要有目标系统的platform. key,就是platform.pk8和platform.x509.pem两个文件。通过这样的设置,系统才可以拿到platform.pk8和platform.x509.pem两个文件。使用这两个key签名后apk才真正可以放入系统进程中。
然后使用mm命令来编译,生成的apk的uid就会成为1000。在去调用property_set("hw.jpeg.path", "/data/test.jpg");就不会有问题了。
---------------------------------------------------------------------------------------------------------------------------------------------end
忙活半天发现其实在AudioManager.java文件中,已经将一个KEY-VALUE值写入到了SystemProperity中:
 
然后在CameraService.cpp文件中,关于调用playsound()函数的地方加入如下判断:
 
注意:property_get()函数需要引入头文件,<cutils/properties.h>

时间: 2024-09-19 21:53:18

android系统在静音模式下关闭camera拍照声音的方法_Android的相关文章

android系统在静音模式下关闭camera拍照声音的方法

话说为了防止偷拍,业内有不成文规定,手机公司在做camera时,点击拍照和录像键的时候,必须要有提示音.因此,google也就非常人性化的将播放 拍照声音的函数,放到了cameraService中,防止开发者能开发出不响的camera,从而只要调用拍照函数,一定会响,这是写死在 framework中的. 话说这个规定在当今有点不合时宜,这不,今天我收到测试提的一个BUG,说是公司的新需求,要求在静音模式下拍照声音也得取消.这么无耻的需求,也许就在我们中国最大的山寨手机公司才会提到.废话不多说,看

华为荣耀3关闭手机拍照声音的方法

此方法需要ROOT 一,获取root权限的方法很简单我们只要在电脑上安装了"刷机精灵"然后把手机与电脑连接,等待刷机精灵识别手机之后我们只要在"实用工具"里面会看到有一个"一键root"功能了,点击即可实现root 相关声音文件的目录为: systemmediaaudioui (用RE文件管理器等高权限文件管理器进入) 1.快门声音:Shutter.ogg; 2.录像提示声音:Cam_Start.ogg和Cam_Stop.ogg分别为录像开始和停

android 如何实现在静音模式下 播放声音

问题描述 android 如何实现在静音模式下 播放声音 我想自己做一个闹钟 但是当时静音模式的时候 不能播放声音 系统自带的闹钟和正点闹钟这些 在静音模式下也能播放声音 请问这个怎么实现 解决方案 Android 如何判断静音模式android静音模式下仍可以播放媒体声音以及调节其大小....android静音的实现---------------------- 解决方案二: 我也想知道啦啦啦啦啦 解决方案三: 这个不能实现吧,除非你取得了root权限 解决方案四: 这个应该是写闹钟这部分时单独

三星A7(2016) SM-A7100(5.1.1)如何在声音模式下关闭相机的快门音?

1.在待机页面下,点击[相机].    2.点击屏幕上的[设定]图标.    3.点击[快门音]右侧滑块,灰色代表关闭.      完成以上操作后,在声音模式下使用相机拍照时,将不会响起快门音.  注:若设置声音模式为振动或者静音,使用相机拍照时,也不会响起快门音,另外若开启[关闭所有声音]功能,同样不会响起快门音.

Win7系统下关闭主板集成声卡的方法

  声卡也叫音频卡.声卡是多媒体技术中最基本的组成部分,是实现声波/数字信号相互转换的一种硬件.声卡的基本功能是把来自话筒.磁带.光盘的原始声音信号加以转换,输出到耳机.扬声器.扩音机.录音机等声响设备,或通过音乐设备数字接口 (MIDI)使乐器发出美妙的声音.集成声卡是指芯片组支持整合的声卡类型,比较常见的是AC'97和HD Audio,使用集成声卡的芯片组的主板就可以在比较低的成本上实现声卡的完整功能.但其实对于用户而言,我们很少会使用到声卡功能,所以为了尽量提高运行速度,关闭主板集成声卡也

win8.1系统进入睡眠模式但是风扇一直转的解决方法

win8.1系统进入睡眠模式但是风扇一直转的解决方法   1.点击"我的电脑"图标;点击上方的"计算机"一栏; 2.点击"打开控制面板";在控制面板菜单中单击"系统和安全"; 3.在"电源选项"下单击"更改电源按钮的功能";点击"更改当前不可用的设置";取消对"启用快速启动(推荐)"的勾选; 4.点击下方的"保存设置";退出.

Android开发实现在Wifi下获取本地IP地址的方法

本文实例讲述了Android开发实现在Wifi下获取本地IP地址的方法.分享给大家供大家参考,具体如下: 代码核心介绍: WifiManager类提供了对设备Wifi功能的管理,包括Wifi开关的打开和关闭,IP地址获取等等,早期的Android版本甚至支持对于IP的设置.在这里仅介绍其简单的一个小应用--获取IP地址. 首先先添加Uses-Permission:CHANGE_WIFI_STATE,WAKE_LOCK和ACCESS_WIFI_STATE.代码如下(AndroidManifest.

Android中关于百度糯米app关闭网页或窗口的方法(99%人不知)_Android

我们公司做了一款使用百度钱包的移动网页支付进行支付的产品,用户通过百度钱包.百度糯米扫描我们 产品的二维码,选择商品,点击支付将会自动调用百度钱包进行支付,支付成功后返回成功页面,在我们的成功页面有关闭 网页按钮,点击关闭按钮或者返回按钮将会关闭页面. 在百度钱包中使用百度轻应用的BLightApp.closeWindow() 方法可以关闭,但是在百度糯米中,按道理可以使用呀, 但是根本就不行,改成传统的window.close()也不行.当时我们在网上搜索和百度糯米的官网中,都没找到解决方法.

XP系统电脑插入耳机没声音怎么办 winXP系统下解决耳机没声音的方法图文教程

winXP系统电脑插入耳机没声音怎么办? 步骤: 1.点击[开始菜单]-[控制面板]; 2.点击"声音.语音和音频设备"; 3.点击底部的"Realtek高清晰音频配置"; 4.点击"音频 I/O"选卡,然后点击下面的小扳手,如图: 5.在[接头设置]界面,勾选"禁用前面板插孔检测" 点击OK 即可解决. 以上就是winXP系统下解决耳机没声音的方法.现在你的耳机有声音了吗?