2010-03-02 4 views
22

카메라 미리보기 캡처에서 기본 카메라 셔터 사운드 클립을 재생하고 싶습니다. 나는 takePicture()이 호출 될 때 재생되는 사운드 클립을 언급하고 있습니다.
어떻게 그럴 수 있습니까? 누군가가 계단을 통해 나를 걸을 수 있습니까?Android에서 기본 카메라 사운드 재생 방법

답변

9

당신은 매개 변수를 이해하기 위해 소리를 http://developer.android.com/reference/android/media/SoundPool.html

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

체크 아웃 재생 다음

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

SoundPool

을 사용 할 수 있습니다.

프로젝트의 res/raw에서 camera_click.ogg라는 미디어 파일이 필요합니다. 프로젝트에 Apache 라이센스로 라이센스가 부여 된 경우 Android 오픈 소스 프로젝트에서 얻을 수있는 Android 기본 사운드 (frameworks/base/data/sounds/effects/camera_click.ogg)를 다음 위치에서 사용할 수 있어야합니다. 프로젝트에 Apache 라이센스하에 라이센스가 부여되지 않은 경우 사용할 수 있는지 여부는 알 수 없습니다. 나는 변호사가 아니다. 시스템 파일이있는 경우

+0

docs : "priority 필드 : 사운드의 우선 순위. 현재로서는 아무런 영향이 없으며 나중에 호환성을 위해 값 1을 사용하십시오." – greg7gkb

+0

Apache 라이센스는 매우 관대합니다. 어떤 프로젝트에서든 리소스를 사용할 수 있습니다. 반면에 이미 장치에서 사용할 수있는 사운드를 찾을 수 있습니다. –

19

, 당신은 다음과 같이 사용할 수 있습니다 :

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(); 
    } 
} 
+5

코드 시작 부분에 추가 : MediaPlayer _shootMP = null; – Derzu

+2

@Derzu :'_sootMP'는 카메라 액티비티의 클래스 멤버였습니다. 캡처 할 때마다 다시 만들 필요가 없습니다. –

+0

귀하의 경우에는 훌륭하지만 독자는 여전히 그것이 무엇인지 알아야합니다. –

45

당신은 (API 16 일부터 사용 가능) MediaActionSound 클래스를 사용할 수 있습니다. 예 :

MediaActionSound sound = new MediaActionSound(); 
sound.play(MediaActionSound.SHUTTER_CLICK); 
+0

이 방법에는 볼륨이 없습니다. 이 장치는 어떤 볼륨이 장치에 설정 되더라도 셔터 음을 최대 음량으로 들려줍니다. – Hashman