Android MediaRecorder Fragment如何保持同一个实例

时间:2018-04-25 06:27:36

标签: java android android-fragments android-camera2

我有一个MediaRecorder类,它扩展了Fragment。在class内部,我创建了set up the MediaRecorder的方法,以及startstop录制的方法。

我尝试使用onTouch创建Fragment并在start/stop按下的片段内使用button并且它有效。但是当我删除onTouch并尝试使用其他类中的start/stop方法时,我得到了NullPointerException。更准确地说,按下error时没有start,但在按error时给了stop

调试后startRecordingVideo所有3 - > (mCameraDevice, mTextureView, mPreviewSize)为null,因此它甚至不会开始录制,在stopRecordingVideo期间mMediaRecorder也为空。

以下是我尝试在另一个类中使用MediaRecorderFragment的部分:

private Camera2VideoFragment camera2VideoFragment;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.song_player);
    //Camera2Video
    camera2VideoFragment = new Camera2VideoFragment();

    //Start Camera Preview
    getFragmentManager().beginTransaction()
            .replace(R.id.container, Camera2VideoFragment.newInstance())
            .commit();



    playRecordButton.setOnTouchListener(new View.OnTouchListener() {

        @Override
        public boolean onTouch(View view, MotionEvent motionevent) {
             final int action = motionevent.getAction();
             if (action == MotionEvent.ACTION_DOWN) {

                //Start recording video
                startRecordingVideo();

           } else if (action == MotionEvent.ACTION_UP) {

                //Stop Recording Video
                stopRecordingVideo();

           }
            return false;
        }
    }); 
}   

private void startRecordingVideo(){
    camera2VideoFragment.startVideoRecording();
}

private void stopRecordingVideo(){
    camera2VideoFragment.stopVideoRecording();
}

MediaRecorderFragment可以是found here.(此课程太长,无法在此处发布)。

我的问题是,为什么我会获得NullPointerException以及如何让fragment从另一个class开始工作。

0 个答案:

没有答案