媒体录制永远

时间:2013-02-09 08:55:12

标签: android activerecord media-player android-mediaplayer android-mediarecorder

我正在开发一个录音应用程序......问题是我不知道如何让它在后台运行。我的意思是即使用户关闭应用程序,记录器仍然工作..如果它达到最大值..它删除文件并再次记录..

用户只需按一次按钮,应用程序应该永久工作,直到用户卸载程序。

我的代码如下:

public class MainActivity extends Activity {
private MediaRecorder recorder ;

Button B ;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    recorder = new MediaRecorder();

    B = (Button)findViewById(R.id.button1) ;

      B.setOnClickListener(new View.OnClickListener() {

           public void onClick(View v) {

               Thread startThread = new Thread ( new startRe (recorder));
               startThread.start() ; 
               B.setEnabled(false); 

           }
      }
      );


}
}

录音课程:

public class startRe implements Runnable {
private MediaRecorder recorder;


startRe( MediaRecorder r ) {

    this.recorder = r ; 
}
public void run() {
    // TODO Auto-generated method stub
    startRecording();
}


public void startRecording() {
    //recorder = new MediaRecorder();
    recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
    recorder.setOutputFile(getFilePath());
    try{
        recorder.prepare();
        recorder.start();
    }catch (Exception e){
        e.printStackTrace();
    }

}


private String getFilePath() {
    String filePath = Environment.getExternalStorageDirectory().getPath();
    File file = new File(filePath, "MediaRecorderSample");

    if(!file.exists())
        file.mkdirs();

    return (file.getAbsolutePath() + "/" + System.currentTimeMillis() + ".mp4");
}

}

现在的问题是如何永久地制作它以及如何在达到最大值时将其删除 尺寸。 此外,使用此代码我不知道它是否真的录制,因为我找不到输出文件..

1 个答案:

答案 0 :(得分:0)

您可以通过在服务中启动录制并调用startService()来完成此操作。 这样,即使名为startService()的Activity已关闭,录制也将继续进行。