2015-01-12 3 views
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 : 리스너 세트

+0

어떤 종류의 오류가 발생합니까? – Dilip

+0

logcat 출력을 보는 것이 더 좋습니다. – Opiatefuchs

+0

비 특정 오류가 나타납니다. 로그캣 출력이 추가되었습니다. – Kongo

답변

0

답변이나 해결책이 없지만 갑자기 다시 작업하기 시작했습니다.

관련 문제