2017-12-17 27 views
2

알람 종류의 응용 프로그램을 만듭니다. 특정 활동을 열 때 장치의 알람 볼륨 수준으로 사용자 지정 사운드를 재생하려고합니다. 장치의 미디어 볼륨이 꺼져 있고 알람 볼륨이 켜져 있으면 사용자 정의 사운드가 재생됩니다. 나는 이미 시도 무엇장치의 미디어 볼륨이 꺼져있는 동안 알람 소리 재생

:

private void playAlarmSound(String fileName) { 
    MediaPlayer p = new MediaPlayer(); 
    AudioManager audioManager= (AudioManager) getSystemService(AUDIO_SERVICE); 
    try { 
     AssetFileDescriptor afd = this.getAssets().openFd(fileName); 
     int volumeLevel=audioManager.getStreamVolume(AudioManager.STREAM_ALARM); 
     p.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength()); 
     p.setVolume(volumeLevel,volumeLevel); 
     afd.close(); 
     p.prepare(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    p.start(); 
} 

하지만이에 의해

가 사운드를 재생하지만, 미디어 볼륨이 꺼져있을 때 소리를 재생하지 않습니다에 미디어 볼륨입니다.

답변

1

경고 볼륨 수준을 읽었는데 오디오가 해당 스트림을 통해 재생된다는 의미는 아닙니다.

MediaPlayer에서 USAGE_ALARM을 나타내는 AudioAttributes을 빌드하고 설정해야합니다. 즉

:

p.setAudioAttributes(
    new AudioAttributes.Builder() 
     .setUsage(AudioAttributes.USAGE_ALARM) 
     .build() 
); 
+0

감사 jmart. 괜찮 았어. 하지만 "setAudioAttributes"는 API 수준 21 이상에서만 사용할 수 있습니다. 21 세 미만은 어떻게됩니까? – Shivam

+0

api 21 이전에는 MediaPlayer에서 setAudioStreamType을 사용해야합니다. – jmart