2011-05-17 6 views
5

पर मीडिया प्लेयर में मान्य मध्यस्थता के बिना getDuration को कॉल करने का प्रयास मैं एसडीकार्ड से तलाश बार के साथ गाना बज रहा हूं। गीत की अवधि प्राप्त करते समय मुझे वैध मेडियाप्लेयर और अवैध राज्य अपवाद के बिना getDuration कॉल करने का प्रयास मिलता है। फ़ाइल नाम और पथ मान्य है। मैंने लंबे समय तक कोशिश की कि मुझे समाधान नहीं मिल सका। और गीत बजाने के दौरान तलाश बार कैसे ले जाएं। कृपया मेरी मदद करें। मेरी कोड:एंड्रॉइड

Button play,pause,stop; 
SeekBar seek; 
MediaPlayer mediaPlayer; 
SurfaceView sv; 
boolean isPlaying = false; 

    play.setOnClickListener(new View.OnClickListener() 
    { 
     public void onClick(View v) 
     { 
      playsong(filename); 
     } 
    }); 


private void playsong(String filename2) { 
    try{ 
     Log.e("filename2",filename2); 
     mediaPlayer = new MediaPlayer(); 
     mediaPlayer.setDataSource(filename2); 
     seek.setMax(mediaPlayer.getDuration()); 
     mediaPlayer.prepare(); 
     mediaPlayer.start(); 
     myHandler.post(runn); 
     isPlaying = true; 
     mediaPlayer.setOnCompletionListener(this);   
    } 
    catch(Exception ex){ 
     Log.e("sdcard-err2:",""+ex); 
    } 

} 

private Handler myHandler = new Handler(); 
    final Runnable runn = new Runnable() 
    { 
     public void run() 
     { 
      if (mediaPlayer != null) 
      { 
       if (isPlaying) 
       { 
        try 
        { 
         int currentPosition = mediaPlayer.getCurrentPosition(); 

         seek.setProgress(currentPosition); 

        } catch (Exception e) { 
         e.printStackTrace(); 
        } 

        sv.postDelayed(runn, 150); 
       } 
      } 
     } 

    }; 

मेरी लॉग बिल्ली त्रुटियों:

05-17 09:46:43.578: ERROR/filename2(1670): /sdcard/The Dance Theme.mp3 
05-17 09:46:43.594: ERROR/MediaPlayer(1670): Attempt to call getDuration without a valid mediaplayer 
05-17 09:46:43.594: ERROR/MediaPlayer(1670): error (-38, 0) 
05-17 09:46:43.594: ERROR/MediaPlayer(1670): prepareAsync called in state 0 
05-17 09:46:43.594: ERROR/sdcard-err2:(1670): java.lang.IllegalStateException 
05-17 09:46:43.594: ERROR/MediaPlayer(1670): Error (-38,0) 

उत्तर

12

आप getDuration बुला रहा हो सकता है फ़ाइल से पहले पूरी तरह से लोड है। देखें कि this question का समाधान आपके लिए काम करता है या नहीं।

+0

धन्यवाद यह काम करता है। –