私は音声録音用のアプリケーションを開発しています...問題は、それをバックグラウンドで動作させる方法がわからないことです。つまり、ユーザーがアプリケーションを閉じても、レコーダーは動作し続けます。最大に達した場合は、ファイルを削除して再度記録します。
ユーザーはボタンを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");
}
}
ここでの問題は、永久に作成する方法と、最大サイズに達したときに削除する方法です。また、このコードを使用すると、出力ファイルが見つからなかったため、実際に記録されているかどうかわかりません。