Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Seekbar在媒体播放器的实现方面没有进展_Android_Audio_Media Player_Playback_Seekbar - Fatal编程技术网

Android Seekbar在媒体播放器的实现方面没有进展

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

我尝试用seekbar实现音频播放。但是seekbar没有被调用。有人能告诉我哪里出错了吗?我想将录制时间限制设置为2分钟。这是我的代码

   @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我粘贴了错误跟踪