最近接到一客户需求,要为相机添加一个shutter

sound的controlbtn,刚看到的时候,觉得很简单吧,不就是在布局中添加好控件,然后响应close和open事件调用相应的方法就行了。想想是很简单的样子,可是后来才发现,在4.1以及以下的版本,这个快门声音都是在点击拍照按钮以后,回调函数里直接就playsound了。。。而在API里面也木有这个控制快门声音的方法。。。

而在frameworks\base\services\camera\libcameraservice\CameraService.cpp里面,却有这么一个方法 :

// enable shutter sound

status_t CameraService::Client::enableShutterSound(bool enable)

{

...

...

}

确定这个就是控制快门声音的,但是要想调用,那得写一个JNI唉。。。。捣鼓了一下午,添加好了,但是编译缺找不到这个native

method--

看了好久好久,整个JNI的流程也没错啊,,,唉,项目紧的确木有办法了。。只有换一个办法了。。。我看了另外的几款4.1系统及一下的机器,貌似快门声音跟手机铃声大小是一致的哎....好吧

只有二次山寨化了!

还是在这个CameraService.cpp里面,有一个地方。。

MediaPlayer* CameraService::newMediaPlayer(const char *file)

{

MediaPlayer*

mp = new MediaPlayer();

if

(mp->setDataSource(file, NULL) == NO_ERROR) {

mp->setAudioStreamType(AUDIO_STREAM_ENFORCED_AUDIBLE);//这里是控制快门声音输出流的类型

mp->prepare();

} else

{

ALOGE("Failed to load CameraService sounds: %s", file);

return NULL;

}

return

mp;

} 将AUDIO_STREAM_ENFORCED_AUDIBLE改为AUDIO_STREAM_RING,这样就把快门声音弄成手机铃声一个STREAM了,编译好了push进机器,reboot之后,发现快门声音是随着手机铃声的改变而改变的,离需求还是不够唉。。。但是已经很近了,反正是采用的山寨方法,在APP里面去判断呗。。。

setRingerMode(AudioManager.RINGER_MODE_SILENT)和setRingerMode(AudioManager.RINGER_MODE_NORMAL);

拍照的时候就静音,拍完了就恢复或者1S后恢复手机铃声就行了....

这样一来倒还是勉强满足需求了。。。。。

不过有好消息就是,在4.2和以后的版本中,API里面已经有了快门声音开关的方法了,哎。。。谷歌大哥早点弄出来就不用我花那么多时间去慢慢跟踪了,不过也算是把这一段东西给熟悉了一下了....

写了一堆废话,以后牛逼点了回来再看看 反省反省···

android 相机拍照声音文件格式,android4.1 添加相机快门声音开关相关推荐

  1. python录制视频和声音_moviepy 视频编辑添加MP3没声音的问题

    解决办法: 1.需要安装ffmpeg 在c:\ffmpeg 并且其中的bin 目录要包含要有: ffmpeg.exe ffplay.exe ffprobe.exe 三个文件 2.在系统path环境变量 ...

  2. 相机拍照的一些原理,光圈,快门,焦距

    11.29日 小孔成像:用一个带有小孔的板遮挡在屏幕与物之间,屏幕上就会形成物的倒像,我们把这样的现象叫小孔成像.像距孔越近,所成像越小且亮:反之,越大且暗.孔距蜡烛越近,所成像越大且暗:反之,越小且 ...

  3. android wp8相机,WP8.1版HTC One M8相机的5个优点

    @WP之家报道,HTC One M8此前推出了Android版,现在预装WP8.1 GDR1系统的HTC One M8也成为今年Windows Phone新旗舰,首先登陆Verizon运营商.AT&a ...

  4. PX4 GAZEBO无人机添加相机并进行图像识别

    PX4 GAZEBO无人机添加摄像头并进行图像识别 在之前完成了ROS的安装和PX4的安装,并可以通过roslaunch启动软件仿真.接下来为无人及添加相机,并将图像用python函数读取,用于后续操 ...

  5. 苹果6s照相快门声音设置_手机隐藏的10种快门启动方式,你都知道吗?

    上次我们讲了相机设置--手机照片尺寸的设置(错过的朋友可以在本文文末点击阅读)今天我们要来讲讲相机设置中的第二课「快门设置」.今天讲的快门设置不是我们以往说的设置"快门速度",而是 ...

  6. Android关闭自定义相机拍照声音

    在自定义相机的代码中,调用 camera.takePicture(null,rawCallback,jpegCallback); 方法完成拍照时会发现无论系统的音量时震动.静音还是有声音都无法关闭自定 ...

  7. android自定义相机拍照

     Android中开发相机的两种方式: Android系统提供了两种使用手机相机资源实现拍摄功能的方法,一种是直接通过Intent调用系统相机组件,这种方法快速方便,适用于直接获得照片的场景,如上传相 ...

  8. android录制视频横向,Android从零开始(26)(设置全屏+横屏、相机拍照、视频录制)(新)...

    相机拍照.视频录制相机拍照 全屏显示有两种方式: 在androidManifest.xml里面的application标签下设置 android:theme="@android:style/ ...

  9. 兼容Android 11 相机拍照,从相册中选择,裁剪图片

    由于android 11对存储空间进行了更新,导致无法进入裁剪或者裁剪后无法保存,返回路径等问题. android 10以下可以参考:android 相机拍照,从相册中选择,裁剪图片 前面部分和之前的 ...

最新文章

  1. Microsoft .NET Framework 4.6.1
  2. 神经病啊!——微信同层播放器接(踩)入(坑)总结
  3. 从fig文件中读取数据
  4. ubuntu12.04中shell脚本无法使用source的原因及解决方法
  5. 射影几何笔记4:证明的思路
  6. php内置邮件sendmail发送,PHP发送邮件函数sendmail()
  7. wxWidgets:使用通用对话框
  8. she is so css什么意思,输入she is so什么意思 微信she is so什么梗
  9. python网络爬虫 抓取金融分析师名单
  10. WARNING:Result from SERVER not valid. Partial Result:
  11. 怎么创建c语言数组的格式,c – 如何创建类类型数组?
  12. java实现kafka发送消息和接收消息(java无注解方式+springBoot注解方式)
  13. C语言程序设计-基础
  14. c语言写乘法表代码解读,C语言输出九九乘法表代码及解析
  15. 《CSS权威指南》第3版
  16. Mysql创建锁芯_A级锁规格释疑
  17. 【MySQL】报错:ERROR 2002 (HY000): Can‘t connect to local MySQL server through socket ‘/var/lib/mysql/mys
  18. BZOJ 4008: [HNOI2015]亚瑟王
  19. 网易2019实习生招聘编程题解答
  20. 快速删除node_modules文件夹:rimraf node_modules

热门文章

  1. 聊聊feign的Contract
  2. Wordpress 网站设计入门0 本地Web主机安装
  3. docker基础手册
  4. 字典(DICT)知识大全
  5. 2020 年 11月 程序员工资统计,平均 14327 元
  6. 【数据库】在进行概念结构设计时,将事物作为属性的基本准则是什么?
  7. 嵌入式开发学习之--RCC(下)
  8. 后端程序员学习前端篇(一)
  9. 跨界转型 打造大数据旗舰
  10. video 宽高自适应_HTML5/CSS/jQuery video大小屏幕自适应及获取视频宽高