【问题标题】:Android mediaplayer with seekbar带有搜索栏的 Android 媒体播放器
【发布时间】:2012-03-13 12:53:52
【问题描述】:

如何在android mediplayer 中使用seekbar?我使用了下面的代码。 seekbar 在 firstsong 上工作,然后转身离开我的申请。

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

【问题讨论】:

    标签: android


    【解决方案1】:

    删除您为移动搜索栏而创建的所有线程并添加以下内容:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多