我有录音机课程来录音:
public class MeeRecorder {
private static String mpathName = null;
private MediaRecorder mRecorder = null;
private String pName = "";
private String fileName = "";
public static final String TEST_PATH = "/test/";
public MeeRecorder() {
}
public void onRecord(boolean start) {
if (start) {
startRecording();
} else {
stopRecording();
}
}
private void startRecording() {
mRecorder = new MediaRecorder();
createPath();
mpathName = Environment.getExternalStorageDirectory().getAbsolutePath();
mpathName += TEST_PATH+"/"+getFileName()+VoiceRecorder.FILE_EXT;
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mRecorder.setOutputFile(mpathName);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
try {
mRecorder.prepare();
} catch (IOException e) {
Log.e("DEBUG", "prepare() failed");
}
mRecorder.start();
}
private void createPath(){
File recordersDirectory = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+TEST_PATH);
recordersDirectory.mkdirs();
}
public void stopRecording() {
if(mRecorder!=null){
mRecorder.stop();
mRecorder.release();
mRecorder = null;
}
}
public String getmPathName() {
return mpathName;
}
public void setmPathName(String mPathName) {
MeasureRecorder.mpathName = mPathName;
}
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
}
我在我的活动和活动记录声音中创建了这个类的对象。现在我遇到了问题,因为当我改变方向时我的录音已停止。我无法使用configChanges方向,因为我在更改方向时更改布局。如何以更改方向保存录制文件?
答案 0 :(得分:2)
也许更好的方法是使用IntentService
并在那里进行录音
在服务中使用记录逻辑可以简化操作,因为服务不会受到方向更改的影响,因为它在与活动生命周期分离的背景中运行。
另一种选择是使用Fragments。片段只能通过调用setRetainInstance(true)
来保留其实例变量,例如在片段的onCreate()
方法中。
最后,您可以使用onRetainNonConfigurationInstance()
在发生方向更改时保存普通对象。但是这种方法已被弃用,并且首选使用片段而不是它。
答案 1 :(得分:1)
有两种解决方案
1. fix your orientation to landscape or portrait
android:orientation="vertical"
or
android:orientation="horizontal"
2. trigger a service from activity to record the audio