Android的媒体播放器与搜索栏 [英] Android mediaplayer with seekbar
本文介绍了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屋!
查看全文