2011-05-13 24 views
0

我正在嘗試播放媒體播放器以及搜索欄。當我試圖播放存儲在我的應用程序中的文件夾中的歌曲時,它工作正常,搜索欄移動。從我的應用程序播放歌曲時尋求酒吧不工作

當我試圖播放來自SD卡的連續歌曲時,它會崩潰,並在logcat中顯示以下錯誤。

ERROR/sdcard play(2500): 02 - bird flu.mp3 
ERROR/MediaPlayer(2500): Command PLAYER_SET_DATA_SOURCE completed with an error or info PVMFErrNotSupported 
ERROR/MediaPlayer(2500): error (1, -4) 
ERROR/MediaPlayer(2500): Attempt to call getDuration without a valid mediaplayer 
ERROR/MediaPlayer(2500): error (-38, 0) 
ERROR/sdcard play(2500): 03 Un Mela Aasadhaan.mp3 
ERROR/MediaPlayer(2500): setDataSource called in state 0 
ERROR/MediaPlayer(2500): prepareAsync called in state 0 
ERROR/MediaPlayer(2500): Attempt to call getDuration without a valid mediaplayer 
ERROR/MediaPlayer(2500): error (-38, 0) 

以下是我的代碼

sv = (SurfaceView)findViewById(R.id.surfaceView1); 
//  mediaPlayer =MediaPlayer.create(this, R.raw.b);   
init_mediaPlayer();  


// sv.postDelayed(runnable,200);     
    seek = (SeekBar)findViewById(R.id.seekBar1); 


seek.setMax(mediaPlayer.getDuration()); 

System.out.println("**** MEDIA PLAYER DURATION "+ mediaPlayer.getDuration());  


play.setOnClickListener(new View.OnClickListener() 

{ 
public void onClick(View v) 

{ 

mediaPlayer.start(); 

myHandler.post(runn); 

isPlaying = true; 

} 

}); 


pause.setOnClickListener(new View.OnClickListener() 

{ 

public void onClick(View v) 

{ 

mediaPlayer.pause(); 


mediaPlayer.prepare(); 


} 

}); 

seek.setProgress(mediaPlayer.getCurrentPosition()); 

System.out.println("**** MEDIA PLAYER CURRENT DURATION "+ mediaPlayer.getCurrentPosition()); 

} 


private void init_mediaPlayer() 
    { 

System.gc(); 

final String[] proj = { MediaStore.Audio.Media._ID,MediaStore.Audio.Media.DATA,MediaStore.Audio.Media.DISPLAY_NAME,MediaStore.Audio.Media.SIZE }; 

      Log.e("media",""+proj); 


musiccursor = managedQuery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,proj, null, null, null); 

Log.e("media1",""+musiccursor); 


count = musiccursor.getCount(); 

Log.e("media2",""+count); 

if(musiccursor!=null) 

{ 

musiccursor.moveToFirst(); 

MediaPlayer mediaPlayer = new MediaPlayer(); 

do{ 

filename=musiccursor.getString(2); 

Log.e("sdcard play",filename); 

mediaPlayer.setDataSource(filename); 

mediaPlayer.prepare(); 

if(mediaPlayer.getCurrentPosition()==mediaPlayer.getDuration())   
{       
end=musiccursor.moveToNext();      
}    
}    
while(end);   
} 

回答

-1

以下是我的代碼,我在哪裏能夠用移動的尋找酒吧播放歌曲...

// SeekBar MediaPlayer mediaPlayer; boolean isPlaying = false; SurfaceView sv; //媒體播放器 Cursor musiccursor; int music_column_index; int count; 字符串文件名; boolean end = true;

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
     setContentView(R.layout.start); 
     sv = (SurfaceView)findViewById(R.id.surfaceView1); 
    mediaPlayer =MediaPlayer.create(this, R.raw.blue); 

    seekbar = (SeekBar)findViewById(R.id.seekBar1); 
    seekbar.setMax(mediaPlayer.getDuration()); 
    System.out.println("**** MEDIA PLAYER DURATION "+ mediaPlayer.getDuration()); 

    Start = (Button)findViewById(R.id.widget306); 
    Start.setOnClickListener(new View.OnClickListener() 
    { 
     @Override 
     public void onClick(View v) 
     { 
      mediaPlayer.start(); //--> Start Media Palyer 
      myHandler.post(runn); //--> SeekBar Progress 
      isPlaying = true; 
     } 
    }); 
    seekbar.setProgress(mediaPlayer.getCurrentPosition()); 
    seekbar = (SeekBar)findViewById(R.id.seekBar1); 
} 
//SeekBar thread 
private Handler myHandler = new Handler(); 
final Runnable runn = new Runnable() 
{ 
    public void run() 
    { 
     if (mediaPlayer != null) 
     { 
      if (isPlaying) 
      { 
       try 
       { 
        int currentPosition = mediaPlayer.getCurrentPosition();    
        seekbar.setProgress(currentPosition); 
       } 
       catch (Exception e) 
       { 
         e.printStackTrace(); 
       } 
       sv.postDelayed(runn, 150); 
      } 
      } 
     } 
}; 
+2

對於每個人的好處,實際問題是什麼? – 2011-09-22 13:53:33