关于camera拍照音的一点研究
来源:互联网 发布:秦淮数据靠谱吗 编辑:程序博客网 时间:2024/06/07 13:51
大家可能使用过各种各样的手机,在使用中可能会发现某些手机的camera声音是没法关闭的;这是因为在有些国家法律规定,带拍照功能的手机设备上必须开启拍照音,这样是为了防止偷拍。但是如果我们想关闭手机拍照音或可以随系统的音量变化改怎么办呢?
通过做过的项目,会有两种需求:
1、camera音量不可变,但是当手机静音或震动时,拍照无声。
2、camera音量随着系统音量的大小而变化。
针对以上两种需求,在开发中我是通过如下修改来实现的。
1、更改init.rc中setprop ro.camera.sound.forced这个property值,将其置为0;这种修改主要是针对需求1的。
2、针对需求2,可以有两种改法:
1)修改frameworks\base\services\camera\libcameraservice\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 {
LOGE("Failed to load CameraService sounds: %s", file);
delete mp;
return NULL;
}
return mp;
}
将AUDIO_STREAM_ENFORCED_AUDIBLE改成AUDIO_STREAM_RING即可;这种是将camera的声音类型改了。
2)修改frameworks\base\services\camera\libcameraservice\CameraService.cpp中关于播放声音的地方,在我的代码中主要就是更改:
void CameraService::playSound(sound_kind kind) {
LOG1("playSound(%d)", kind);
Mutex::Autolock lock(mSoundLock);
sp<MediaPlayer> player = mSoundPlayer[kind];
if (player != 0) {
player->seekTo(0);
player->start();
}
}
在代码中添加获得系统音量的代码,并将音量设置一下,更改后代码如下:
void CameraService::playSound(sound_kind kind) {
LOG1("playSound(%d)", kind);
Mutex::Autolock lock(mSoundLock);
sp<MediaPlayer> player = mSoundPlayer[kind];
if (player != 0) {
int index;
AudioSystem::getStreamVolumeIndex(AUDIO_STREAM_RING, &index);
AudioSystem::setStreamVolumeIndex(AUDIO_STREAM_ENFORCED_AUDIBLE, index);
player->seekTo(0);
player->start();
}
}
- 关于camera拍照音的一点研究
- 关于camera 构架设计的一点看法
- 关于camera 构架设计的一点看法
- 关于Unity Camera的一点小小总结
- 关于LSN的一点研究
- 关于Android使用Camera自定义拍照出现模糊不清的解决方案
- 关于 Hook Win32 API 的一点研究
- 关于SSH架构的一点研究
- 关于alpha透明的一点研究
- 关于扩展欧几里得的一点研究
- 关于以太网PAUSE的一点研究
- 关于人工智能研究思路的一点设想
- 关于Azure Storage 的一点研究
- 关于扩展欧几里得的一点研究
- 关于 Hook Win32 API 的一点研究
- 关于KMP算法的一点研究
- 真Unity3d_关于AR的Camera一点冷知识
- Unity关于像素,Camera大小,以及分辨率的研究
- ListView总结
- 利用Random类产生10个[10,99]之间的随机数,并将这10个随机数在列表框中显示出来,每个数占一项。用户选择某项后,在右边标签中显示所选内容。
- 30分钟,让你成为一个更好的程序员
- 关于try...catch...finally中return的疑惑
- 智慧医疗缺的不仅是技术
- 关于camera拍照音的一点研究
- ZOJ 2830 Champion of the Swordsmanship
- EL表达式与JSTL标签库
- UVa 10130 - SuperSale
- 滚动条
- 第八周上机任务项目三
- 类与对象
- 两分钟彻底让你明白Android Activity生命周期(图文)!
- 利用Timer和图片框控件,编写一个图片不断向左移动的小动画