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

rqcrx0a6  于 2023-06-20  发布在  Android
关注(0)|答案(3)|浏览(166)

我想以编程方式播放相机快门声音。我没有使用ShutterCallback,它会自动播放那个声音,所以我需要用其他方式来做。有人知道解决办法吗?

lsmepo6l

lsmepo6l1#

MediaActionSound来自API 16。

  1. AudioManager audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
  2. switch( audio.getRingerMode() ){
  3. case AudioManager.RINGER_MODE_NORMAL:
  4. MediaActionSound sound = new MediaActionSound();
  5. sound.play(MediaActionSound.SHUTTER_CLICK);
  6. break;
  7. case AudioManager.RINGER_MODE_SILENT:
  8. break;
  9. case AudioManager.RINGER_MODE_VIBRATE:
  10. break;
  11. }

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

tjvv9vkg

tjvv9vkg2#

他的资源解释了如何播放音频文件
http://www.vogella.com/articles/AndroidMedia/article.html
您可能需要提供自己的快门音效。
如果系统文件在那里,你可以这样使用它:

  1. public void shootSound()
  2. {
  3. AudioManager meng = (AudioManager) getContext().getSystemService(Context.AUDIO_SERVICE);
  4. int volume = meng.getStreamVolume( AudioManager.STREAM_NOTIFICATION);
  5. if (volume != 0)
  6. {
  7. if (_shootMP == null)
  8. _shootMP = MediaPlayer.create(getContext(), Uri.parse("file:///system/media/audio/ui/camera_click.ogg"));
  9. if (_shootMP != null)
  10. _shootMP.start();
  11. }
  12. }
展开查看全部
au9on6nz

au9on6nz3#

你可以使用这个函数:

  1. private fun shuttleVolume() {
  2. val sound = MediaActionSound()
  3. sound.play(MediaActionSound.SHUTTER_CLICK)
  4. }

样本代码:

  1. imageCaptureButton.setOnClickListener {
  2. shuttleVolume()
  3. takePhoto()
  4. }

在您需要时调用它,例如在拍照之前!

相关问题