2011-05-20 182 views
0

我有3音頻文件在sdcard中的以下路徑/ SD卡/媒體。我正在使用下面的代碼來一個接一個地播放該文件。任何建議 mPlay.setOnClickListener(新OnClickListener(){播放音頻文件

 @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 


       Log.d("Before resume",""); 
      mPlayer = new MediaPlayer(); 

       File dir = new File("/sdcard/media"); 

       String[] children = dir.list(); 
       if (children == null) { 
        // Either dir does not exist or is not a directory 
        Context context = getApplicationContext(); 
        CharSequence text1 = "No media file"; 
        int duration = Toast.LENGTH_SHORT; 
        Toast toast1 = Toast.makeText(context, text1, duration); 
        toast1.setGravity(Gravity.CENTER_VERTICAL, 0, 0); 
        toast1.show(); 
       } else { 

        for (int i=0; i<children.length; i++) { 
         // Get filename of file or directory 
         String mFileName = children[i]; 
         try { 
          mPlayer.setDataSource(mFileName); 
         } catch (IllegalArgumentException e) { 
          // TODO Auto-generated catch block 
          e.printStackTrace(); 
         } catch (IllegalStateException e) { 
          // TODO Auto-generated catch block 
          e.printStackTrace(); 
         } catch (IOException e) { 
          // TODO Auto-generated catch block 
          e.printStackTrace(); 
         } 
         try { 
          mPlayer.prepare(); 
         } catch (IllegalStateException e) { 
          // TODO Auto-generated catch block 
          e.printStackTrace(); 
         } catch (IOException e) { 
          // TODO Auto-generated catch block 
          e.printStackTrace(); 
         } 
         mPlayer.start(); 
         mSeekBar.setMax(mPlayer.getDuration()); 
         new Thread(new Runnable() { 

          @Override 
          public void run() { 
           // TODO Auto-generated method stub 
           while (mPlayer != null 
             && mPlayer.getCurrentPosition() < mPlayer 
               .getDuration()) { 
            Log.d("Indide Run Method", Integer.toString(mPlayer 
              .getCurrentPosition())); 
            try { 
             Thread.sleep(100); 
            } catch (InterruptedException e) { 
             // TODO Auto-generated catch block 
             e.printStackTrace(); 
            } 
            mSeekBar.setProgress(mPlayer.getCurrentPosition()); 
           } 

           // start.setText(mPlayer.getCurrentPosition()); 
          } 

         }).start(); 
         mSeekBar.setProgress(mPlayer.getCurrentPosition()); 
         pauseRecord.setVisibility(View.INVISIBLE); 
         mResume.setVisibility(View.VISIBLE); 
         }          
      } 
     } 

    }); 

而且我有以下錯誤

05-20 15:20:04.851: ERROR/PlayerDriver(1099): Command PLAYER_SET_DATA_SOURCE completed with an error or info PVMFErrNotSupported 
05-20 15:20:04.851: WARN/PlayerDriver(1099): PVMFInfoErrorHandlingComplete 
05-20 15:20:04.851: WARN/MediaPlayer(3164): info/warning (1, 26) 
05-20 15:20:04.851: ERROR/MediaPlayer(3164): error (1, -4) 
05-20 15:20:04.851: WARN/System.err(3164): java.io.IOException: Prepare failed.: status=0x1 
05-20 15:20:04.851: WARN/System.err(3164):  at android.media.MediaPlayer.prepare(Native Method) 
05-20 15:20:04.851: WARN/System.err(3164):  at com.fsp.ResumeRecordTest.ResumeRecordTest$1.onClick(ResumeRecordTest.java:154) 
05-20 15:20:04.851: WARN/System.err(3164):  at android.view.View.performClick(View.java:2397) 
05-20 15:20:04.851: WARN/System.err(3164):  at android.view.View.onTouchEvent(View.java:4212) 

回答