1

我有一个录音机类来录制声音:

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 方向,因为我在方向改变时改变了布局。如何以更改方向保存记录?

4

2 回答 2

2

也许更好的方法是使用 aIntentService并在那里进行记录。
在服务中包含记录逻辑将简化事情,因为服务不会受到方向变化的影响,因为它在后台运行,与活动生命周期分离。

另一种选择是使用片段。片段可以通过调用来保留它们的实例变量setRetainInstance(true),例如在onCreate()片段的方法中。

最后,当方向发生变化时,您可以使用onRetainNonConfigurationInstance()保存普通对象。但是这种方法已被弃用,并且首选使用片段而不是它。

于 2013-07-15T07:16:01.990 回答
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
于 2013-07-15T07:16:49.287 回答