2012-03-02 3 views
1

미디어 플레이어를 싱글 톤으로 설정하여 프로젝트의 다양한 활동에서 제어 할 수 있습니다. 많은 연구가 다음 코드로 이어졌습니다.원시 데이터 소스를 미디어 플레이어 싱글 톤으로 설정

if (current_player == null) 
{ 
    try 
    { 
     current_player = MusicPlayer.getInstance(); 
     AssetFileDescriptor afd = this.getResources().openRawResourceFd(R.raw.mytune); 
     current_player.setDataSource(afd.getFileDescriptor()); 
     current_player.prepare(); 
     current_player.setLooping(true); 
     current_player.start(); 
     afd.close(); 
} 
catch (IllegalArgumentException e) { Log.e("IllegalArgumentException", "error: " + e.getMessage(), e); } 
catch (IllegalStateException e) {Log.e("IllegalStateException", "error: " + e.getMessage(), e); } 
catch (IOException e) {Log.e("IOException", "error: " + e.getMessage(), e); } 
catch (Exception e){ Log.e("Main media player", "error: " + e.getMessage(), e); 
     } 

내가
1. MediaPlayer를가 생성되고 있음을 알 수 있습니까
2. AssetFileDescriptor 올바른 파일의 코드는 IOException가
오류와 .setDataSource 줄에 실패

입니다 : setDataSourceFD가 실패했습니다. 상태 = 0x80000000

이 코드는 의도적으로 작동해야한다고 주장하는 여러 포럼에 표시된 많은 예제와 일부 유사합니다. 내가

current_player= MediaPlayer.create(this, R.raw.mytune); 

잘 작동하는지 증명 분명합니다.

모든 제안 사항에 대해 매우 감사드립니다.

답변

4

자산 디렉토리에 파일을 넣으십시오.

AssetFileDescriptor afd = context.getAssets().openFd(fileName); 
current_player.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength()); 
+0

에 Сorrect 라인 AssetFileDescriptor AFD = ... 당신은 나를 위해 문제를 해결했다. 파일은 res/raw 디렉토리에있을 수 있습니다. 문제는 .setDataSource (afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());를 사용해야한다는 것입니다. – Squiggles