【问题标题】:Seekbar Doesnt move while playingSeekbar 播放时不动
【发布时间】:2011-05-09 22:14:54
【问题描述】:

我已经录制了音频,并通过媒体播放器播放。录音、播放都很好。我在播放录制的声音时使用了搜索栏。我使用以下编码来播放存储在 sdcard 中的内容。它工作正常.. mFileName 是 sdcard 中的音频文件。 播放时搜索栏不动。有什么建议...

      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);
    }
};

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

【问题讨论】:

    标签: android


    【解决方案1】:

    搜索栏不会神奇地自我更新以显示 MediaPlayer 的当前位置。这是一个链接,它显示了如何使用轮询线程执行此操作,该线程大约每秒检查一次 MediaPlayer 的位置并相应地更新搜索栏:

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

    【讨论】:

    • 我也实现了。但它不起作用。查看代码已编辑。
    • 您的run() 方法没有像示例那样实现。 Thread.sleep 应该在 while 循环内,而不是在它之后。尝试先让链接的示例正常工作,然后再按照自己想去的方向开始修改示例代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-14
    • 1970-01-01
    • 2017-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多