java - Android MediaPlayer实时快进和快退按钮使用runnable实现

标签 java android media-player fast-forward rewind

我需要这方面的帮助,但没有真正找到明确的说明。如何创建一个按钮来快进和快退当前保留的歌曲。

最佳答案

private Handler repeatUpdateHandler = new Handler();
public int mValue;           //increment 
private boolean mAutoIncrement = false;          //for fast foward in real time
private boolean mAutoDecrement = false;         // for rewind in real time



private class RptUpdater implements Runnable {
        public void run() {
            if( mAutoIncrement ){
                mValue += 30; //change this value to control how much to forward
                mediaPlayer.seekTo(getCurrentPosition()+ mValue);
                repeatUpdateHandler.postDelayed( new RptUpdater(), 50 );
            } else if( mAutoDecrement ){
                mValue -= 30; //change this value to control how much to rewind
                seekTo(getCurrentPosition()- mValue);
                repeatUpdateHandler.postDelayed( new RptUpdater(), 50 );
            }
        }
    }



btnPrev.setOnTouchListener(new View.OnTouchListener() { 
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                if(event.getAction() == MotionEvent.ACTION_DOWN) {
                    v.setPressed(true);
                    mAutoDecrement = true;
                    repeatUpdateHandler.post( new RptUpdater() );
                    return false;
                }
                else if(event.getAction() == MotionEvent.ACTION_UP) {
                    v.setPressed(false);
                    if( (event.getAction()==MotionEvent.ACTION_UP || event.getAction()==MotionEvent.ACTION_CANCEL)
                            && mAutoDecrement ){
                        mAutoDecrement = false;
                    }
                    return false;
                }
                return false;
            }
        });

btnNext.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                if(event.getAction() == MotionEvent.ACTION_DOWN) {
                    v.setPressed(true);
                    mAutoIncrement = true;
                    repeatUpdateHandler.post( new RptUpdater() );
                    return false;
                }
                else if(event.getAction() == MotionEvent.ACTION_UP) {
                    v.setPressed(false);
                    if( (event.getAction()==MotionEvent.ACTION_UP || event.getAction()==MotionEvent.ACTION_CANCEL)
                            && mAutoIncrement ){
                        mAutoIncrement = false;
                    }
                    return false;
                }

                return false;
            }
        });

关于java - Android MediaPlayer实时快进和快退按钮使用runnable实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26942375/

相关文章:

java - 如何使用 iText 复制 AcroForm?

java - 禁用当前应用程序的推送通知 android java

audio - 是否有一个好的 React Native 模块用于播放/流式传输音频?

android - 在另一个 Activity 上检查isPlaying()

java - 如何在 Spring 中为计划进程验证系统用户身份?

java - 将中缀转换为后缀表示法的程序

java - 需要帮助理解 getAcceptedIssuers 方法

Android - ImageView - 多屏幕支持 - 将高度/宽度设置为 dp 或 match_parent/wrap_content?

android - 在 android 中播放 mp3 文件时遇到问题

java - 使用 XmlUtils 解析 XML