Android Seekbar在媒体播放器的实现方面没有进展
我尝试用seekbar实现音频播放。但是seekbar没有被调用。有人能告诉我哪里出错了吗?我想将录制时间限制设置为2分钟。这是我的代码Android Seekbar在媒体播放器的实现方面没有进展,android,audio,media-player,playback,seekbar,Android,Audio,Media Player,Playback,Seekbar,我尝试用seekbar实现音频播放。但是seekbar没有被调用。有人能告诉我哪里出错了吗?我想将录制时间限制设置为2分钟。这是我的代码 @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.option4); startPlaying = (Button) findViewById(R.id.play); stopP
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.option4);
startPlaying = (Button) findViewById(R.id.play);
stopPlaying = (Button) findViewById(R.id.stop);
startRecord = (Button) findViewById(R.id.start);
seekBar = (SeekBar) findViewById(R.id.seek_bar);
seekBar.setOnSeekBarChangeListener(this);
seekBar.setEnabled(false);
startRecord.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
ditchMediaRecorder();
mFileName = Environment.getExternalStorageDirectory().getAbsolutePath();
mFileName += "/audiorecordtest.3gp";
File outputFile=new File(mFileName);
if(outputFile.exists()){
outputFile.delete();
}
mRecorder=new MediaRecorder();
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mRecorder.setOutputFile(mFileName);
try {
mRecorder.prepare();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
mRecorder.start();
}
});
startPlaying.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
ditchMediaPlayer();
mPlayer=new MediaPlayer();
try {
mPlayer.setDataSource(mFileName);
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
mPlayer.prepare();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
seekBar.setEnabled(true);
seekBar.setMax(mPlayer.getDuration());
mPlayer.start();
new Thread().start();
}
});
stopPlaying.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(mRecorder!=null){
mRecorder.stop();
}
}
});
}
private void ditchMediaPlayer() {
if(mPlayer!=null){
mPlayer.release();
}
}
private void ditchMediaRecorder() {
// TODO Auto-generated method stub
if(mRecorder!=null){
mRecorder.release();
}
}
@Override
public void run() {
int currentPosition = mPlayer.getCurrentPosition();
int total = mPlayer.getDuration();
System.out.println("In run");
while (mPlayer != null && currentPosition < total) {
try {
Thread.sleep(1000);
System.out.println("In run try block");
currentPosition = mPlayer.getCurrentPosition();
} catch (InterruptedException e) {
return;
} catch (Exception e) {
return;
}
seekBar.setProgress(currentPosition);
}
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
try {
System.out.println("In progres");
if (mPlayer.isPlaying() || mPlayer != null) {
if (fromUser)
mPlayer.seekTo(progress);
} else if (mPlayer== null) {
seekBar.setProgress(0);
}
} catch (Exception e) {
Log.e("seek bar", "" + e);
seekBar.setEnabled(false);
}
}
@覆盖
创建公共空间(捆绑冰柱){
超级冰柱;
setContentView(R.layout.option4);
开始播放=(按钮)findViewById(R.id.play);
stopPlaying=(按钮)findviewbyd(R.id.stop);
startRecord=(按钮)findViewById(R.id.start);
seekBar=(seekBar)findViewById(R.id.seek\u bar);
seekBar.setonseekbarchaneglistener(这个);
seekBar.setEnabled(false);
setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
ditchMediaRecorder();
mFileName=Environment.getExternalStorageDirectory().getAbsolutePath();
mFileName+=“/audiorecordtest.3gp”;
文件输出文件=新文件(mFileName);
if(outputFile.exists()){
outputFile.delete();
}
mRecorder=新的MediaRecorder();
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.ThreeGPP);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mRecorder.setOutputFile(mFileName);
试一试{
mRecorder.prepare();
}捕获(非法状态){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
mRecorder.start();
}
});
setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
ditchMediaPlayer();
mPlayer=新媒体播放器();
试一试{
mPlayer.setDataSource(mFileName);
}捕获(IllegalArgumentException e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(安全异常e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(非法状态){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
试一试{
mPlayer.prepare();
}捕获(非法状态){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
seekBar.setEnabled(真);
seekBar.setMax(mPlayer.getDuration());
mPlayer.start();
新线程().start();
}
});
setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
if(mRecorder!=null){
mRecorder.stop();
}
}
});
}
私有void ditchMediaPlayer(){
if(mPlayer!=null){
mPlayer.release();
}
}
私有无效ditchMediaRecorder(){
//TODO自动生成的方法存根
if(mRecorder!=null){
mRecorder.release();
}
}
@凌驾
公开募捐{
int currentPosition=mPlayer.getCurrentPosition();
int total=mPlayer.getDuration();
System.out.println(“运行中”);
while(mPlayer!=null&¤tPosition
音频将被录制并播放良好,但我的seekbar无法控制。我尝试了不同的方法,但没有成功。请帮助我
谢谢 这对我很有用:
public void forwardSong() {
if (mPlayer != null) {
int currentPosition = mPlayer.getCurrentPosition();
if (currentPosition + seekForwardTime <= mPlayer.getDuration()) {
mPlayer.seekTo(currentPosition + seekForwardTime);
} else {
mPlayer.seekTo(mPlayer.getDuration());
}
}
}
public void forwardSong(){
if(mPlayer!=null){
int currentPosition=mPlayer.getCurrentPosition();
如果(currentPosition+seekForwardTime)您可以使用,您是否有任何错误?@JoelFernandes我粘贴了错误跟踪