0
완벽하게 작동하는 코드가 있었고 프로젝트에 다른 클래스를 작성한 후 똑같은 코드를 다시 시도하여 오류가 발생하기 시작했습니다.MediaPlayer가 준비되지 않았습니다
이 내 코드입니다 :
public class myMediaPlayer extends Activity implements TextureView.SurfaceTextureListener,
MediaPlayer.OnBufferingUpdateListener, MediaPlayer.OnCompletionListener,
MediaPlayer.OnPreparedListener, MediaPlayer.OnVideoSizeChangedListener{
private TextureView mTextureView;
private MediaPlayer mMediaPlayer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_single_channel_player);
mTextureView = (TextureView)findViewById(R.id.Video);
mTextureView.setSurfaceTextureListener(this);
Log.d("debug","Listener Set");
}
@Override
public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) {
Surface s = new Surface(surface);
Log.d("debug", "Surface Texture Available");
try {
mMediaPlayer = new MediaPlayer();
try {
mMediaPlayer.setDataSource(this, Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.t));
} catch (IOException e) {
Log.d("IOException", "setDataSource method faulty");
}
Log.d("debug", "data source set");
mMediaPlayer.setSurface(s);
Log.d("debug", "Surface set");
try {
mMediaPlayer.prepare();
} catch (IOException e) {
Log.d("IOException", "Prepare method problem");
}
Log.d("debug", "prepared");
mMediaPlayer.setOnBufferingUpdateListener(this);
mMediaPlayer.setOnCompletionListener(this);
mMediaPlayer.setOnPreparedListener(this);
mMediaPlayer.setOnVideoSizeChangedListener(this);
Log.d("debug", "listeners set");
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.d("error", e.getMessage());
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.d("error", e.getMessage());
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.d("error", e.getMessage());
}
}
@Override
public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) {
//TODO
Log.d("Debug","SurfaceTextureSizeChanged");
}
@Override
public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) {
Log.d("Debug","SurfaceTextureDestroyed");
return false;
}
@Override
public void onSurfaceTextureUpdated(SurfaceTexture surface) {
//TODO
Log.d("Debug","SurfaceTextureUpdated");
}
@Override
public void onBufferingUpdate(MediaPlayer mp, int percent) {
Log.d("Debug","BufferingUpdate");
}
@Override
public void onCompletion(MediaPlayer mp) {
Log.d("Debug", "Media Player Complete");
}
@Override
public void onPrepared(MediaPlayer mp) {
Log.d("Debug","Media Player Prepared");
mp.start();
}
@Override
public void onVideoSizeChanged(MediaPlayer mp, int width, int height) {
Log.d("Debug","VideoSizeChanged");
}
@Override
public void onDestroy() {
Log.d("Debug","Activity Destroyed");
if (mMediaPlayer != null) mMediaPlayer.release();
}
}
데모가 그러 하듯이 거의 동일하다. 그것은 잠시 동안 일하고 있었는데, 갑자기 prepare 메소드에 오류가 있습니다 (필자의 로그에 "prepare method error"가 나타남). 갑자기 왜 일을 그만 두었는지 아무도 모른다.
01-12 20 : 18 : 10.530 23003-23003/com.edifyelectronics.tv.app W/ActivityThread : 어플리케이션 com.edifyelectronics.tv.app 될 수
이
는 로그 캣 출력 인 포트 8100에서 디버깅 ... 01-12 20 : 18 : 10.559 23003-23003/com.edifyelectronics.tv.app D/debug : 리스너 세트 01-12 20 : 18 : 10.570 23003-23023/com.edifyelectronics .dv.app D/OpenGLRenderer : 요청한 더러운 영역 렌더링 : true 01-12 20 : 18 : 10.579 23003-23003/com.edifyelectronics.tv.app D/Atlas : 유효성 검사 중 ... 01-12 20 : 1 8 : 10.608 23003-23023/com.edifyelectronics.tv.app I은 /는 Adreno-EGL : : QUALCOMM 빌드 : 10/28/14, c33033c, Ia6306ec328 01-12 20 : 18 : 10.609 23003-23023/COM .edifyelectronics.tv.app I/OpenGLRenderer : 초기화 됨 EGL, 버전 1.4 01-12 20 : 18 : 10.637 23003-23023/com.edifyelectronics.tv.app D/OpenGLRenderer : 활성화 디버그 모드 0 01-12 20 : 18 : 10.742 23003-23003/com.edifyelectronics.tv.app D/디버그 : 표면 질감 사용 가능 01-12 20 : 18 : 11.080 23003-23003/com.edifyelectronics.tv.app D/디버그 : 데이터 소스 세트 01-12 20 : 18 : 11.082 23003-23003/com.edifyelectronics.tv.app D/debug : 서피스 세트 01-12 20 : 18 : 11.176 23003-2302 1/com.edifyelectronics.tv.app E/MediaPlayer : 오류 (1, -2147483648) 01-12 20 : 18 : 11.177 23003-23003/com.edifyelectronics.tv.app D/IOException : 준비 방법 문제 01 -12 20 : 18 : 11.177 23003-23003/com.edifyelectronics.tv.app D/debug : prepared 01-12 20 : 18 : 11.177 23003-23003/com.edifyelectronics.tv.app D/debug : 리스너 세트
어떤 종류의 오류가 발생합니까? – Dilip
logcat 출력을 보는 것이 더 좋습니다. – Opiatefuchs
비 특정 오류가 나타납니다. 로그캣 출력이 추가되었습니다. – Kongo