手机
当前位置:查字典教程网 >编程开发 >安卓软件开发 >android系统在静音模式下关闭camera拍照声音的方法
android系统在静音模式下关闭camera拍照声音的方法
摘要:话说为了防止偷拍,业内有不成文规定,手机公司在做camera时,点击拍照和录像键的时候,必须要有提示音。因此,google也就非常人性化的将...

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

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

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

关于在app中写入systemprperty,我想引用一下大神的博客,博客地址/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中:

android系统在静音模式下关闭camera拍照声音的方法1
然后在CameraService.cpp文件中,关于调用playsound()函数的地方加入如下判断:

android系统在静音模式下关闭camera拍照声音的方法2
注意:property_get()函数需要引入头文件,<cutils/properties.h>

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

Android开发之XML文件解析的使用

android打开应用所在的市场页面进行评分操作的方法

Android用代码获取手机root之后的最高权限

解析Android应用启动后自动创建桌面快捷方式的实现方法

android弹出activity设置大小的方法

Android 九宫格的实现方法

android 对话框弹出位置和透明度的设置具体实现方法

Android编程之客户端通过socket与服务器通信的方法

Android调用相机并将照片存储到sd卡上实现方法

android平台拍照后先剪裁再显示图片实现方法

精品推荐
分类导航