간단 한 오디 오 재생 기능 MediaPlayer 사용 중 발생 하 는 구덩이 입 니 다.
public void onCompletion(MediaPlayer mp) {}
방법 은 두 번 갔다.
2.클릭 하여 다시 재생 시,신문
IllegalStateException
잘못
3.activity 를 소각 할 때 2 중의 오 류 를 보고 합 니 다.
우선 도구 류 의 일부 코드 를 붙 입 니 다.
//
public static VoiceMediaPlayer getInstance(){
if(instance==null){
synchronized (VoiceMediaPlayer.class){
if(instance==null){
instance=new VoiceMediaPlayer();
}
}
}
return instance;
}
//
public void initMediaPlayer(){
if(mediaPlayer==null){
mediaPlayer=new MediaPlayer();
}
mediaPlayer.setVolume(1.0f,1.0f);
mediaPlayer.setLooping(false);
}
//
public void stopMediaPlayer(){
mediaPlayer.stop();
mediaPlayer.reset();
}
//
public void play(final String path, final MediaPlayer.OnCompletionListener listener, final MediaPlayer.OnPreparedListener preparedListener){
try{
//mediaPlayer.reset();
mediaPlayer.setDataSource(path);
mediaPlayer.prepareAsync();
mediaPlayer.setOnCompletionListener(listener);
mediaPlayer.setOnPreparedListener(preparedListener);
}catch (IOException e){
e.printStackTrace();
}
}
//
public void destroyMediaPlayer(){
try{
if(mediaPlayer!=null){
mediaPlayer.stop();
//mediaPlayer.reset();
mediaPlayer.release();
mediaPlayer=null;
}
}catch (Exception e){
e.printStackTrace();
}
}
우선 첫 번 째 문제,재생 이 끝나 면 어떻게 두 번 의 리 셋 방법 을 사용 할 수 있 습 니까?
그것 은 내 가 리 셋 방법 인 onComletion 에서 재생 을 중단 하 는 방법 을 호출 한 것 이다.위의 코드 는 미디어 플레이어.reset 방법 을 호출 한 것 을 볼 수 있다.
이 방법의 역할 은 미디어 플레이어 대상 을 방금 만 든 상태 로 초기 화 하 는 것 입 니 다.(원본 코드 에서 재생 이 완 료 될 리 셋 방법 을 찾 지 못 했 습 니 다.)
우 리 는 말 그대로 분석 할 수 밖 에 없 었 다.재생 이 끝나 자마자 reset 방법 을 사용 하여 방금 상태,즉 재생 이 완 료 된 상 태 를 리 셋 하여 다시 한 번
재생 이 완 료 된 상 태 를 호출 했 습 니 다.
실천 적 으로 증명 되다.
두 번 째 질문,재생 완료 클릭 재 재생 왜 틀 렸 을 까?그 이 유 는 제 가 첫 번 째 문제 의 해결 을 바탕 으로 재생 이 완 료 된 후에 재생 정지 방법 을 다시 사용 하지 않 았 기 때 문 입 니 다.
재생 재생 재생 재생 방법 을 호출 할 때 미디어 플레이어 가 상 태 를 리 셋 하지 않 았 습 니까?아니면 이 reset()방법 이 항상 있 었 습 니까?따라서 상기 play 가 필요 합 니 다.
방법 안에 비동기 로드 를 준비 하기 전에 reset 방법 을 호출 합 니 다.
세 번 째 문 제 는 사실 이 reset 방법 입 니 다.매번 그것 입 니 다.귀 찮 습 니 다.
activity 가 소각 되 었 을 때 미디어 플레이 어 를 먼저 풀 어야 합 니 다.미디어 플레이어.release 가 풀 리 기 전에 미디어 플레이어 의 상 태 를 초기 화하 고 reset 방법 을 사용 해 야 합 니 다.
뒤의 두 문 제 는 모두 소스 코드 를 통 해 설명 되 고 간단 하 며 더 이상 소스 코드 를 군말 하지 않 는 다.
이상 의 문 제 는 모두 자신 이 개발 할 때 주의 하지 않 고 제3자 의 것 을 많이 사용 하 는 것 입 니 다.원생 으로 자신 이 쓸 때 그렇게 엄격하게 금지 하지 않 아서 생 긴 것 입 니 다.이 기록 으로 자신 을 격려 하고 화 이 팅!
다음 볼 륨 초점 문제.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.