android在点击seekbar时强制关闭
我是android编程的新手。我有以下代码,但我有一个问题。当我在不播放声音的情况下点击搜索杆时,它会强制关闭。我的意思是,当我点击“播放”按钮时,我可以在搜索杆上点击并搜索,但如果不点击“播放”按钮,点击搜索杆将导致强制关闭。怎么了android在点击seekbar时强制关闭,android,seekbar,forceclose,playsound,Android,Seekbar,Forceclose,Playsound,我是android编程的新手。我有以下代码,但我有一个问题。当我在不播放声音的情况下点击搜索杆时,它会强制关闭。我的意思是,当我点击“播放”按钮时,我可以在搜索杆上点击并搜索,但如果不点击“播放”按钮,点击搜索杆将导致强制关闭。怎么了 import android.media.MediaPlayer; import android.os.Bundle; import android.app.Activity; import android.view.View; import android.vi
import android.media.MediaPlayer;
import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageButton;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
public class MainActivity extends Activity implements Runnable, OnClickListener, OnSeekBarChangeListener{
private SeekBar seekBar;
private ImageButton startMedia;
private ImageButton pauseMedia;
private MediaPlayer mp;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AudioControl();
}
public void AudioControl(){
seekBar = (SeekBar) findViewById(R.id.seekBar1);
startMedia = (ImageButton) findViewById(R.id.playbutton);
pauseMedia = (ImageButton) findViewById(R.id.pausebutton);
seekBar.setOnSeekBarChangeListener(this);
startMedia.setOnClickListener(this);
pauseMedia.setOnClickListener(this);
}
public void run() {
int currentPosition= 0;
int total = mp.getDuration();
while (mp!=null && currentPosition<total) {
try {
Thread.sleep(1000);
currentPosition= mp.getCurrentPosition();
} catch (InterruptedException e) {
return;
} catch (Exception e) {
return;
}
seekBar.setProgress(currentPosition);
}
}
public void onClick(View v) {
if (v.equals(startMedia)) {
if (mp != null && mp.isPlaying()) return;
if(seekBar.getProgress() > 0) {
mp.start();
return;
}
mp = MediaPlayer.create(MainActivity.this, R.raw.lone);
mp.start();
seekBar.setProgress(0);
seekBar.setMax(mp.getDuration());
new Thread(this).start();
}
if (v.equals(pauseMedia) && mp!=null) {
mp.pause();
}
}
public void onStartTrackingTouch(SeekBar seekBar) {
}
public void onStopTrackingTouch(SeekBar seekBar) {
}
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
if(fromUser) mp.seekTo(progress);
}
}
导入android.media.MediaPlayer;
导入android.os.Bundle;
导入android.app.Activity;
导入android.view.view;
导入android.view.view.OnClickListener;
导入android.widget.ImageButton;
导入android.widget.SeekBar;
导入android.widget.SeekBar.onseekbarchaneglistener;
公共类MainActivity扩展活动实现Runnable、OnClickListener、OnSeekbarChangListener{
私人SeekBar SeekBar;
私有图像按钮开始媒体;
私人影像媒体;
私人媒体播放器;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
音频控制();
}
公共音频控制(){
seekBar=(seekBar)findViewById(R.id.seekBar1);
startMedia=(ImageButton)findViewById(R.id.playbutton);
pauseMedia=(图像按钮)findViewById(R.id.pausebutton);
seekBar.setonseekbarchaneglistener(这个);
startMedia.setOnClickListener(此);
pauseMedia.setOnClickListener(此);
}
公开募捐{
int currentPosition=0;
int total=mp.getDuration();
while(mp!=null&¤tPosition 0){
mp.start();
返回;
}
mp=MediaPlayer.create(MainActivity.this,R.raw.lone);
mp.start();
seekBar.setProgress(0);
seekBar.setMax(mp.getDuration());
新线程(this.start();
}
如果(v.equals(pauseMedia)&&mp!=null){
mp.pause();
}
}
开始跟踪触摸时的公共无效(SeekBar SeekBar){
}
TopTrackingTouch(SeekBar SeekBar)上的公共无效{
}
更改了公共进程无效(SeekBar SeekBar,int progress,
布尔值(用户){
如果(来自用户)mp.seekTo(进度);
}
}
我还有一个问题:
我想当用户点击播放按钮时,暂停按钮变为可见,当用户点击暂停按钮时,暂停按钮变为不可见。我应该编写什么代码,请告诉我应该将代码放在哪里。管理UI的每个方法都必须在UI线程本身上调用: 你不能跑
seekBar.setProgress(currentPosition);
在与UIThread不同的线程上