Android的媒体播放器与搜索栏 [英] Android mediaplayer with seekbar

查看:146
本文介绍了Android的媒体播放器与搜索栏的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何使用机器人mediplayer搜索栏?我用下面的code。搜索栏在firstsong工作才从我的应用程序敬而远之。

  MP = MediaPlayer.create(播放器。,(整数)plsong.get(一));
                       mp.start();           mp.setOnCompletionListener(新OnCompletionListener(){            公共无效onCompletion(MediaPlayer的播放器){
                mp.release();
                   sname.setText();
                 如果(J≤(plsong.size() - 1)){
                        J ++;
                        MP = MediaPlayer.create(播放器。,(整数)plsong.get(J));
                        sname.setText((CharSequence的)soname.get(J));
                        mp.start();
                        mp.setOnCompletionListener(本);
                    }            }
        });
         mp.setOn preparedListener(新在preparedListener(){            在prepared(MediaPlayer的MPSS)公共无效{
                // TODO自动生成方法存根
                总= mp.getDuration();
                的System.out.println(总+总);
            }
        });
            seekbar.setProgress(0);
            seekbar.setOnSeekBarChangeListener(新OnSeekBarChangeListener(){                公共无效onStopTrackingTouch(搜索栏为arg0){
                    // TODO自动生成方法存根                }                公共无效onStartTrackingTouch(搜索栏为arg0){
                    // TODO自动生成方法存根                }                公共无效onProgressChanged(搜索栏搜索栏,INT进步,
                        布尔FROMUSER){
                    // TODO自动生成方法存根                    如果(FROMUSER){
                        mp.seekTo(进度);
                        seekBar.setProgress(进度);
                    }
                }
            });
            螺纹currentThread =新主题(MyCounter.this);
            currentThread.start();
            mplay =(按钮)findViewById(R.id.mplay);
             如果(!mp.isPlaying())
                {            mplay.setText(暂停);
            mplay.setOnClickListener(新View.OnClickListener(){                公共无效的onClick(视图v){
                    // TODO自动生成方法存根                    mp.start();
                    seekbar.setMax(总);
                }
            });
                }
            其他
            {
                mplay.setText(玩);
                mplay.setOnClickListener(新View.OnClickListener(){                    公共无效的onClick(视图v){
                        // TODO自动生成方法存根                        mp.pause();                    }
                });
            }
        }
         公共无效的run(){
                // TODO自动生成方法存根                尝试{
                    而(熔点!= NULL){
                        INT currentPosition = mp.getCurrentPosition();
                        消息味精=新的Message();
                        msg.what = currentPosition;
                        threadHandler.sendMessage(MSG);
                    }
                    视频下载(100);
                }赶上(InterruptedException的E){
                    e.printStackTrace();
                }
            }            私人处理程序threadHandler =新的处理程序(){
                公共无效的handleMessage(消息MSG){
                    seekbar.setProgress(msg.what);
                }
            };


解决方案

删除您创建移动搜索栏的所有线程,并添加这些:

  mp.setOnBufferingUpdateListener(新OnBufferingUpdateListener(){
公共无效onBufferingUpdate(MediaPlayer的熔点,诠释百分比){
搜索栏搜索栏=(搜索栏)findViewById(R.id.seekBar);
如果(mp.isPlaying()及&放大器;!搜索栏=空){
seekBar.setProgress(mp.getCurrentPosition());
}}
});

How to use the seekbar in android mediplayer? I used the below code. seekbar working at a firstsong only then turn away from my application.

mp = MediaPlayer.create(player.this, (Integer) plsong.get(i));
                       mp.start();

           mp.setOnCompletionListener(new OnCompletionListener() {

            public void onCompletion(MediaPlayer player) {
                mp.release();
                   sname.setText(" "); 
                 if (j < (plsong.size() - 1)) {
                        j++;
                        mp = MediaPlayer.create(player.this,(Integer) plsong.get(j));
                        sname.setText((CharSequence) soname.get(j));
                        mp.start();   
                        mp.setOnCompletionListener(this);


                    }           

            }
        });
         mp.setOnPreparedListener(new OnPreparedListener() {

            public void onPrepared(MediaPlayer mpss) {
                // TODO Auto-generated method stub
                total = mp.getDuration();
                System.out.println("total" + total);
            }
        });
            seekbar.setProgress(0);
            seekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {

                public void onStopTrackingTouch(SeekBar arg0) {
                    // TODO Auto-generated method stub

                }

                public void onStartTrackingTouch(SeekBar arg0) {
                    // TODO Auto-generated method stub

                }

                public void onProgressChanged(SeekBar seekBar, int progress,
                        boolean fromUser) {
                    // TODO Auto-generated method stub

                    if (fromUser) {
                        mp.seekTo(progress);
                        seekBar.setProgress(progress);
                    }
                }
            });
            Thread currentThread = new Thread(MyCounter.this);
            currentThread.start();
            mplay = (Button) findViewById(R.id.mplay);
             if(!mp.isPlaying())
                {

            mplay.setText("Pause");
            mplay.setOnClickListener(new View.OnClickListener() {

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

                    mp.start();
                    seekbar.setMax(total);
                }
            });
                }
            else
            {
                mplay.setText("play");
                mplay.setOnClickListener(new View.OnClickListener() {

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

                        mp.pause();

                    }
                });
            }


        }
         public void run() {
                // TODO Auto-generated method stub

                try {
                    while (mp != null) {
                        int currentPosition = mp.getCurrentPosition();
                        Message msg = new Message();
                        msg.what = currentPosition;
                        threadHandler.sendMessage(msg);
                    }
                    Thread.sleep(100);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }

            private Handler threadHandler = new Handler() {
                public void handleMessage(Message msg) {
                    seekbar.setProgress(msg.what);
                }
            };

解决方案

Remove all the threads you created to move the seekbar and add these:

mp.setOnBufferingUpdateListener(new OnBufferingUpdateListener(){ 
public void onBufferingUpdate(MediaPlayer mp, int percent) {
SeekBar seekBar = (SeekBar)findViewById(R.id.seekBar);
if (mp.isPlaying() && seekBar!=null) {
seekBar.setProgress(mp.getCurrentPosition());   
}

}
}); 

这篇关于Android的媒体播放器与搜索栏的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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