尝试让MediaRecorder重置,并在我更改为其他类时继续运行

时间:2016-05-12 06:55:17

标签: java android audio mediarecorder

目前我面临三个问题:

  1. 让MediaRecorder重置而不是发布。 我想我需要创建一个MediaRecorder的新实例并发布它()它,但我不知道在哪里。

  2. 我希望它能够继续录制音频,直到手机消失,即使用户改变到不同的屏幕(即转到新课程)。 我试图谷歌这个,但不知道如何实现它。

  3. 编辑 - 我想出了如何使用SimpleDateFormat! 编辑2 - 已实现我需要为第二期创建一个已启动的服务。

    我的代码如下

    类别:

    import android.content.Intent;
    import android.media.MediaPlayer;
    import android.media.MediaRecorder;
    import android.os.Environment;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.webkit.WebView;
    import android.widget.Button;
    import android.widget.TextView;
    
    
    
    import java.io.IOException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    
    public class Drugs extends AppCompatActivity {
    
    
        WebView myBrowser;
        MediaRecorder mRecorder;
        private static String audioFilePath;
        public boolean isRecording = false;
        MediaPlayer mediaPlayer;
        public boolean isPlaying = false;
        SimpleDateFormat simpledate;
    
    
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_drugs);
    
    
    
            myBrowser = (WebView) findViewById(R.id.mybrowser);
            myBrowser.loadUrl("file:///android_asset/drugs.html");
            myBrowser.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
    
            Button btndrugslaw = (Button) findViewById(R.id.drugslaw);
    
    
    
    
            btndrugslaw.setOnClickListener(new View.OnClickListener() {
                public void onClick(View view) {
                    Intent intentdruglaw = new Intent(Drugs.this, DrugLaw.class);
                    startActivity(intentdruglaw);
                }
            });}
    
    
        public void RecordButton (View view) {
            if(mRecorder == null){
                audioFilePath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/" + simpledate 
                        + "/myaudio.3gp";
                mRecorder = new MediaRecorder();
                mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
                mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
                mRecorder.setOutputFile(audioFilePath);
                mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
            }
            if (isRecording) {
                try{
                    stopRecording();
                    isRecording = false;
                    ((Button)view).setText("Start Recording");
                }catch(Exception e){
                    e.printStackTrace();
                }
            } else {
                try{
                    startRecording();
                    isRecording = true;
                    ((Button)view).setText("Stop Recording");
                }catch(Exception e){
                    e.printStackTrace();
                }
            }
        }
    
        public void startRecording() throws IllegalStateException, IOException{
            mRecorder.prepare();
            MediaRecorder mRecorder = new MediaRecorder();
            mRecorder.start();
        }
    
        public void stopRecording() throws IllegalStateException, IOException{
            mRecorder.stop();
            mRecorder.reset();
        }
    
        public void StartPlaying(View view) throws IllegalStateException, IOException {
            if (mediaPlayer == null) {
                mediaPlayer = new MediaPlayer();
                mediaPlayer.setDataSource(audioFilePath);
            }
            if (isPlaying) {
                try {
                    stopPlaying();
                    isPlaying = false;
                    ((Button)view).setText("Play Audio");
                } catch (Exception e) {
                    e.printStackTrace();
                }
            } else {
                try{
                    startPlaying();
                    isPlaying = true;
                    ((Button)view).setText("Stop Audio");
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
    
        }
    
    
        public void startPlaying() throws IllegalStateException, IOException {
            mediaPlayer.prepare();
            mediaPlayer.start();
        }
    
        public void stopPlaying () throws IllegalStateException, IOException {
            mediaPlayer.release();
        }
    
    }
    

0 个答案:

没有答案