2014-12-03 16 views
1

Android 4.4.2의 MediaPlayer가 Audiofile에서 자동으로 페이드 인 것으로 나타났습니다. 페이드 인해서는 안되는 사운드를 재생할 때 MediaPlayer를 사용하고 있습니다. 4.2.1의 Smarthpone에서는 잘 작동했지만 4.4.2의 경우에는 다른 전화에서 페이딩이 발생합니다.Java Android : Mediaplayer가 자동으로 퇴색합니다

나는 또한 SoundPool을 살펴 봤지만 파일이 아직 재생 중인지 알려주는 기능이 빠져 있습니다.

자동 페이드 인을 끌 수 있습니까? 아니면 Soundpool을 사용해야하고 트랙 길이를 직접 확인해야합니까?

덕분에, VanDahken

+0

어떤 AUDIO_STREAM typ e MedialPlayer를 사용할 때 지정 하시겠습니까? – dasar

+0

STREAM_MUSIC 및 STREAM_NOTIFICATION을 (를) 사용해 보았습니다. – VanDahlen

답변

0

당신은 시작 재생하기 전에 setAudioAttributes(AudioAttributes attributes)을 시도 할 수 있습니다.

atrs = new AudioAttributes.Builder() 
      .setUsage(AudioAttributes.USAGE_MEDIA) 
      .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC) 
      .build(); 

CONTENT_TYPE으로 시도해보십시오.

0

동일한 문제가 있습니다. 좋은 점은 두 개의 다른 안드로이드 버전에서 작동한다는 것입니다. 4.4.2에 문제가 있습니다. 내가 찾은 첫 번째 해결책은 압축되지 않은 음악 파일 (데이터 형식 LEI16의 .wav)을 사용하는 것이었지만 음악 파일이 너무 컸습니다.

오디오 스트림 유형을 STREAM_RING으로 설정하면 페이드 인이 발생하지 않는 것으로 나타났습니다.하지만 전화벨을위한 것이기 때문에 좋은 생각이 아닙니다.

내 앱의 경우 음악이 페이드 인없이 재생되어야하는 중요한 부분 (앱이 처음 시작될 때)이 하나뿐이므로 수정 사항을 얻을 수있었습니다. 인트로 음악이 시작되기 전에 몇 초 정도 걸립니다, 그래서 내가 무엇을하고 있는가하는 것입니다 :

-prepareAsync()를 소개

- 일의 시작에 준비 할 때, 0F 및 시작에 setVolume()()

- 그럼이 (몇 초 정도되는 끝 내 경우에 :가 완료 될 앱의 소개 걸리는 시간) 약간의 지연 후, 시크 리스너를 추가하고, seekTo (0)

- 탐색이 완료되면 볼륨을 원하는 값으로 설정하십시오