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

2016-02-19 09:04 78 1 收藏

下面是个android系统在静音模式下关闭camera拍照声音的方法教程,撑握了其技术要点,学起来就简单多了。赶紧跟着图老师小编一起来看看吧!

【 tulaoshi.com - 编程语言 】

话说为了防止偷拍,业内有不成文规定,手机公司在做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

来源:https://www.tulaoshi.com/n/20160219/1589384.html

延伸阅读
标签: 电脑入门
刚入手Win10系统,很多用户还不知道怎么去操作它,更别说是在Win10系统下去关闭防火墙的操作了,下面图老师小编为大家整理了详细的关闭Win10防火墙的图文教程,供大家参考。 Win10关闭防火墙的方法: 1.在控制面板中打开Windows防火墙。 2.点击左侧的启用或关闭Windows防火墙 3.将所有网络或者某个网络设置为关闭Windows防火墙(不...
标签: 电脑入门
Windows 7系统下关闭IPV6隧道的方法: 我们只用使用以下3条命令把IPv6的接口关闭即可 netsh interface teredo set state disable netsh interface 6to4 set state disabled netsh interface isatap set state disabled 若想还原IPv6隧道则用以下命令: netsh interface teredo set state default netsh interface 6to4 set state default...
iPhone6如何关闭拍照声音   方法一: 1.先打开几款应用或游戏,同时打开拍照界面,再把手机声音调为静音;之后再按下 Home 键,进入多任务管理界面; 2.在iphone6的多任务管理界面,向左或向右滑动界面,将相机应用调至中间位置。 3.然后我们要相册后台界面对准要拍的数据之后我们按下拍照就可以实现拍照了。 尝...
日版iPhone6拍照声音关闭方法   日版iPhone6用户在使用手机拍照的时候,把手机调成静音的状态下,相机是无声的,不过在非静音状态下,iPhone6拍照就有声音。 日版iPhone6拍照声音关闭方法,需要注意的是,这个方法需要你的iPhone已经越狱了,没有越狱的童鞋请移步。详细教程步骤如下: 1、将已越狱的iPhone与电脑连接,...
标签: windows10
Win10系统下关闭常用文件夹的方法   1、打开任意一个文件资源管理器窗口,在菜单栏中切换到查看选项卡,点击右下角的选项图标打开文件夹选项窗口。 2、在常规选项卡找到下方的隐私设置区域,你可以看到在快速访问显示最近使用的文件和在快速访问显示常用文件夹两个选项,取消显示常用文件夹选项的勾选即可。 Win10 Mobile...

经验教程

371

收藏

41
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部