У меня есть класс MediaRecorder
, который расширяет Fragment
.Внутри этого class
я создал методы для set up the MediaRecorder
, а также методы для start
и stop
записи.
Я попытался создать 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
можно найти здесь . (Этот класс слишком длинный для публикации здесь).
Мой вопрос: почему я получаю NullPointerException
икак я могу заставить это fragment
работать от другого class
.