Android的MediaPlayer的实时快进和快退按钮实现使用可运行 [英] Android MediaPlayer real time fastforward and rewind button implementation using runnable

查看:3176
本文介绍了Android的MediaPlayer的实时快进和快退按钮实现使用可运行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要帮助,这却没有真正找到明确的指示。如何创建一个按钮,将快进和暂停快退当前歌曲。

请参阅答案


解决方案

 专用处理器repeatUpdateHandler =新的处理程序();
公众诠释mValue; //增量
私人布尔mAutoIncrement = FALSE; //用于实时快速向前的
私人布尔mAutoDecrement = FALSE; //用于实时倒带私有类RptUpdater实现Runnable {
        公共无效的run(){
            如果(mAutoIncrement){
                mValue + = 30; //改变这个值来控制多少转发
                mediaPlayer.seekTo(getCurrentPosition()+ mValue);
                repeatUpdateHandler.postDelayed(新RptUpdater(),50);
            }否则如果(mAutoDecrement){
                mValue - = 30; //改变这个值来控制多少倒带
                seekTo(getCurrentPosition() - mValue);
                repeatUpdateHandler.postDelayed(新RptUpdater(),50);
            }
        }
    }BTN prev.setOnTouchListener(新View.OnTouchListener(){
            @覆盖
            公共布尔onTouch(视图V,MotionEvent事件){
                如果(event.getAction()== MotionEvent.ACTION_DOWN){
                    v.set pressed(真);
                    mAutoDecrement = TRUE;
                    repeatUpdateHandler.post(新RptUpdater());
                    返回false;
                }
                否则如果(event.getAction()== MotionEvent.ACTION_UP){
                    v.set pressed(假);
                    如果((event.getAction()== MotionEvent.ACTION_UP || event.getAction()== MotionEvent.ACTION_CANCEL)
                            &功放;&安培; mAutoDecrement){
                        mAutoDecrement = FALSE;
                    }
                    返回false;
                }
                返回false;
            }
        });btnNext.setOnTouchListener(新View.OnTouchListener(){
            @覆盖
            公共布尔onTouch(视图V,MotionEvent事件){
                如果(event.getAction()== MotionEvent.ACTION_DOWN){
                    v.set pressed(真);
                    mAutoIncrement = TRUE;
                    repeatUpdateHandler.post(新RptUpdater());
                    返回false;
                }
                否则如果(event.getAction()== MotionEvent.ACTION_UP){
                    v.set pressed(假);
                    如果((event.getAction()== MotionEvent.ACTION_UP || event.getAction()== MotionEvent.ACTION_CANCEL)
                            &功放;&安培; mAutoIncrement){
                        mAutoIncrement = FALSE;
                    }
                    返回false;
                }                返回false;
            }
        });

I needed help with this but didn't really find clear instructions. How to create a button that will fast forward and rewind current song on hold.

Please see answer

解决方案

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

这篇关于Android的MediaPlayer的实时快进和快退按钮实现使用可运行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆