Como jogar som da câmera nativa no Android

votos
24

Eu gostaria de jogar clipe de som do obturador da câmera nativa na captura de visualização da câmera. Estou me referindo ao clipe de som reproduzido quando takePicture()é chamado.
Como poderia isso? Alguém pode me percorrer as etapas?

Publicado 02/03/2010 em 17:43
fonte usuário
Em outras línguas...                            


5 respostas

votos
48

Você pode usar o MediaActionSound classe (disponível a partir de API 16). Por exemplo:

MediaActionSound sound = new MediaActionSound();
sound.play(MediaActionSound.SHUTTER_CLICK);
Respondeu 28/07/2015 em 07:30
fonte usuário

votos
19

Se o arquivo de sistema está lá, você pode usá-lo como este:

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();
    }
}
Respondeu 08/08/2010 em 13:30
fonte usuário

votos
9

Você pode querer usar Soundpool

SoundPool soundPool = new SoundPool(1, AudioManager.STREAM_NOTIFICATION, 0);
int shutterSound = soundPool.load(this, R.raw.camera_click, 0);

e, em seguida, para reproduzir o som

soundPool.play(shutterSound, 1f, 1f, 0, 0, 1);

Confira http://developer.android.com/reference/android/media/SoundPool.html para compreender os parâmetros.

Você vai precisar de um arquivo de mídia chamado camera_click.ogg em seu projeto no res / raw. Você deve ser capaz de usar o som padrão Android, que pode ser obtido a partir do projeto de código aberto Android no seguinte local (estruturas / base / data / sons / efeitos / camera_click.ogg) se seu projeto está licenciado sob a licença Apache. Se o seu projeto não está licenciado sob a licença Apache Eu não tenho idéia se você pode usá-lo ou não. Eu não sou um advogado.

Respondeu 07/05/2010 em 18:32
fonte usuário

votos
3

Este recurso explica como reproduzir arquivos de áudio: https://developer.android.com/guide/topics/media/index.html

Você provavelmente terá que fornecer seu próprio efeito de som do obturador.

Respondeu 09/04/2010 em 13:31
fonte usuário

votos
0

Este trecho irá ajudá-lo a reproduzir o som apenas quando o modo de toque está em modo normal e não em modo silencioso ou vibrar.

private var audioManager: AudioManager? = null
private var mediaPlayer: MediaPlayer? = null

private fun initAudio() {
    Log.v(LOG_TAG, "initAudio")

    audioManager ?: let {
        audioManager = context!!.getSystemService(Context.AUDIO_SERVICE) as AudioManager?
    }

    mediaPlayer = try {
        MediaPlayer().apply {
            if (Build.VERSION.SDK_INT >= 21) {
                val audioAttributes = AudioAttributes.Builder()
                    .setUsage(AudioAttributes.USAGE_MEDIA)
                    .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
                    .build()
                setAudioAttributes(audioAttributes)
            } else {
                setAudioStreamType(AudioManager.STREAM_MUSIC)
            }
            if (Build.VERSION.SDK_INT <= 28) {
                setDataSource(context!!, Uri.parse("file:///system/media/audio/ui/camera_click.ogg"))
            } else {
                setDataSource(context!!, Uri.parse("file:///system/product/media/audio/ui/camera_click.ogg"))
            }
            prepare()
        }
    } catch (e: Exception) {
        Log.e(LOG_TAG, "initAudio", e)
        null
    }
}

private fun playClickSound() {

    if (audioManager?.ringerMode == AudioManager.RINGER_MODE_NORMAL) {
        mediaPlayer?.start()
    }
}
Respondeu 14/05/2019 em 21:46
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more