sipdroid 开始发送视频和结束发送视频时的蹦蹦声

我们使用sipdroid做服务端时,每次收到rtsp的play请求或teardown请求时,我们的手机或pad都会发出 ‘蹦’的一声。这个声音有时候挺讨厌的,至少我希望不要发出这个声音。

那这个声音是哪里来的呢?

浏览了一遍源码,没有播放声音的代码。那就是系统层发出的声音了。

其实当你进系统自动的相机,点击录像按钮时,你的手机或pad也会发出 ‘蹦’的一声。那说明这个声音是camera或者mediarecorder整出来的。


一、先看相机,当我们点击相机的录制按钮时,会调用

->videocamera.java的onShutterButtonClick();

->startVideoRecording(){

......

if (effectsActive()) {
            try {
                mEffectsRecorder.startRecording();

......

}

effectsrecorder.java 的startRecording(){

......

 mCameraSound.playSound(CameraSound.START_VIDEO_RECORDING);

......

}

CameraSound.START_VIDEO_RECORDING对应的文件就是"/system/media/audio/ui/VideoRecord.ogg"。

那么修改的方法就有很多了,最暴力的,删除videorecord.ogg;

温柔的,可以修改effects,看看调用条件:

private boolean effectsActive() {
        return (mEffectType != EffectsRecorder.EFFECT_NONE);
    }

而mEffectType = CameraSettings.readEffectType(mPreferences);

看看camerasetting.java的readEffectType方法,是读取camera应用的SharedPreferences文件的pref_video_effect_key这一键值。

camera应用的SharedPreferences文件在/data/data/com.android.camera/shared_prefs 目录下。


二、那么如果我们直接调用mediarecorder 的api又是怎样呢?

->mediarecorder.java 的start();

......

->mediarecorder.cpp 的start();

......

->cerdaxrecorder.cpp的start(); 

->mCamera->startRecording();

->也就是cameraservice.cpp的  startRecording();

->startCameraMode(CAMERA_RECORDING_MODE);

->startRecordingMode()

->mCameraService->playSound(SOUND_RECORDING);

而mSoundPlayer[SOUND_RECORDING] = newMediaPlayer("/system/media/audio/ui/VideoRecord.ogg");

原来mediarecorder的开始录像也会最终调用cameraservice的播放声音。而且这个调用时没有条件的调用,修改起来比较麻烦。

当然了,三个诸葛亮抵不过一巴掌,直接删除videorecord.ogg,啥声音都没了。

要不就只有修改cameraservic.cpp的startRecordingMode()方法了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值