Android:以编程方式播放相机快门声

mbz*_*mbz 11 audio camera android

我想以编程方式播放相机快门声.我没有使用自动播放声音的ShutterCallback,所以我需要以其他方式进行.谁知道解决方案?

t0m*_*t0m 17

来自API 16的MediaActionSound.

AudioManager audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
    switch( audio.getRingerMode() ){
        case AudioManager.RINGER_MODE_NORMAL:
            MediaActionSound sound = new MediaActionSound();
            sound.play(MediaActionSound.SHUTTER_CLICK);
        break;
        case AudioManager.RINGER_MODE_SILENT:
        break;
        case AudioManager.RINGER_MODE_VIBRATE:
        break;
    }
Run Code Online (Sandbox Code Playgroud)

尊重Android中的振动/静音模式.

  • MediaActionSound 的构建已经考虑了振铃模式(如果处于振动或静音状态),因此应该能够移除此开关盒。 (2认同)

Jay*_*Jay 8

他的资源解释了如何播放音频文件

http://www.vogella.com/articles/AndroidMedia/article.html

您可能必须提供自己的快门音效.

如果系统文件在那里,您可以像这样使用它:

public void shootSound()
{
    AudioManager meng = (AudioManager) getContext().getSystemService(Context.AUDIO_SERVICE);
    int volume = meng.getStreamVolume( AudioManager.STREAM_NOTIFICATION);

    if (volume != 0)
    {
        if (_shootMP == null)
            _shootMP = MediaPlayer.create(getContext(), Uri.parse("file:///system/media/audio/ui/camera_click.ogg"));
        if (_shootMP != null)
            _shootMP.start();
    }
}
Run Code Online (Sandbox Code Playgroud)