1

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

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

我的代码如下:

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");
}

}

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

4

1 回答 1

0

您可以通过在 Service 中开始录制并调用 startService() 来做到这一点。这样,即使启动的名为 startService() 的 Activity 已关闭,录制也会继续进行。

于 2013-02-27T18:37:37.853 回答