Java android中的音频和seekbar
我用seekbar创建了音频活动,它被播放了,但当seekbar进行时,我遇到了问题,因为我使用了(Thread.sleep),所以声音中的每1秒都被削减 我检查了互联网上的另一个解决方案,我检查的所有代码都使用相同的概念 这是我的密码Java android中的音频和seekbar,java,android,audio,seekbar,Java,Android,Audio,Seekbar,我用seekbar创建了音频活动,它被播放了,但当seekbar进行时,我遇到了问题,因为我使用了(Thread.sleep),所以声音中的每1秒都被削减 我检查了互联网上的另一个解决方案,我检查的所有代码都使用相同的概念 这是我的密码 public class PlaySounds extends Activity implements Runnable { SeekBar seeksounds; MediaPlayer mp; Handler handler = new Handler();
public class PlaySounds extends Activity implements Runnable {
SeekBar seeksounds;
MediaPlayer mp;
Handler handler = new Handler();
int id;
public boolean isFileExists(String fileName) {
try {
File myFile = new File(fileName);
FileInputStream fIn = new FileInputStream(myFile);
BufferedReader myReader = new BufferedReader(new InputStreamReader(fIn));
return true;
} catch (Exception e) {
return false;
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.playsounds);
seeksounds = (SeekBar) findViewById(R.id.seeksounds);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
String path = Environment.getExternalStorageDirectory().toString() + "/dowload/splash.mp3";
if (isFileExists(path)) {
mp = new MediaPlayer();
try {
mp.setDataSource(path);
mp.prepare();
mp.start();
int maxD = mp.getDuration();
int currentD = mp.getCurrentPosition();
seeksounds.setMax(maxD);
seeksounds.setProgress(currentD);
new Thread(this).start();
seeksounds.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar arg0, int progress,
boolean arg2) {
mp.seekTo(progress);
seeksounds.setProgress(progress);
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
});
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
super.onBackPressed();
mp.release();
}
@Override
public void run() {
int currentPosition= 0;
int total = mp.getDuration();
while (mp!=null && currentPosition<total) {
try {
Thread.sleep(1000);
currentPosition= mp.getCurrentPosition();
seeksounds.setProgress(currentPosition);
} catch (Exception e) {
return;
}
}
}
公共类PlaySounds扩展活动实现可运行{
SeekBar搜索声;
MediaPlayer mp;
Handler=newhandler();
int-id;
公共布尔值isFileExists(字符串文件名){
试一试{
File myFile=新文件(文件名);
FileInputStream fIn=新的FileInputStream(myFile);
BufferedReader myReader=新的BufferedReader(新的InputStreamReader(fIn));
返回true;
}捕获(例外e){
返回false;
}
}
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.playsounds);
seeksounds=(SeekBar)findviewbyd(R.id.seeksounds);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_全屏,WindowManager.LayoutParams.FLAG_全屏);
字符串路径=Environment.getExternalStorageDirectory().toString()+“/dowload/splash.mp3”;
如果(isFileExists(path)){
mp=新媒体播放器();
试一试{
mp.setDataSource(路径);
mp.prepare();
mp.start();
int maxD=mp.getDuration();
int currentD=mp.getCurrentPosition();
seeksounds.setMax(maxD);
seeksounds.setProgress(当前d);
新线程(this.start();
seeksounds.setonseekbarchaneglistener(新的onseekbarchaneglistener(){
@凌驾
已更改的公共进程无效(请参见kbar arg0,int progress,
布尔值(arg2){
希克托议员(进步党);
seeksounds.setProgress(进度);
}
@凌驾
开始跟踪触摸时的公共无效(SeekBar SeekBar){
//TODO自动生成的方法存根
}
@凌驾
TopTrackingTouch(SeekBar SeekBar)上的公共无效{
//TODO自动生成的方法存根
}
});
}捕获(例外e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}
}
@凌驾
public void onBackPressed(){
//TODO自动生成的方法存根
super.onBackPressed();
mp.release();
}
@凌驾
公开募捐{
int currentPosition=0;
int total=mp.getDuration();
而(mp!=null&¤tPosition尝试在此处添加mp=null;
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
super.onBackPressed();
mp.release();
mp = null;
}