2011-05-09 110 views
2

我录制了音频,并通过mediaplayer播放。录音,播放工作正常。我在播放录制的声音时使用了一个搜索栏。我使用了以下编码来播放存储在SD卡中的内容。它工作正常.. mFileName是SD卡中的音频文件。 搜索栏在播放时不移动。任何建议...Seekbar游戏时不移动

 private void startPlaying() 
{ 

MediaPlayer mPlayer = new MediaPlayer(); 

    try { 
     mPlayer.setDataSource(mFileName); 
     mPlayer.prepare(); 
     mPlayer.start(); 
     mSeekBar.setMax(mPlayer.getDuration()); 
    } catch (IOException e) { 
     Log.e(LOG_TAG, "prepare() failed"); 
    } 
} 

而且我用

mSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 

     @Override 
     public void onStopTrackingTouch(SeekBar seekBar) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void onStartTrackingTouch(SeekBar seekBar) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { 
      // TODO Auto-generated method stub 
      if(fromUser){ 
       mPlayer.seekTo(progress); 
       mSeekBar.setProgress(progress); 
      } 
     } 
    }); 
    Thread currentThread = new Thread((Runnable) this); 
    currentThread.start(); 

public void run() { 
    // TODO Auto-generated method stub 
    try { 
     while(mPlayer != null){ 
      int currentPosition = mPlayer.getCurrentPosition(); 
      Message msg = new Message(); 
      msg.what = currentPosition; 
      threadHandler.sendMessage(msg); 
     } 
     Thread.sleep(100); 
    } catch (InterruptedException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 
private Handler threadHandler = new Handler(){ 
    public void handleMessage(Message msg){ 

     mSeekBar.setProgress(msg.what); 
    } 
}; 

进度条只移动在用户移动。它不会自动移动。

回答

3

seekbar不会奇迹般地自我更新以显示MediaPlayer的当前位置。下面是显示了如何轮询线程相应检查MediaPlayer的位置每一秒钟左右,更新搜索条做一个链接:我实现了太

http://united-coders.com/nico-heid/an-android-seekbar-for-your-mediaplayer

+0

。但它不起作用。查看获取编辑的代码。 – Manikandan 2011-05-09 14:12:51

+0

你的'run()'方法没有像样本那样实现。 'Thread.sleep'应该在while循环中,而不是在它之后。尝试让链接的示例先正确工作,然后开始按照您想要的方向修改示例代码。 – MusiGenesis 2011-05-09 14:21:42