このライブラリをフラグメントに統合しようとしています。このチュートリアルでは、camera.setLifecycleOwner(this) で this の代わりに fragment.viewLifecycleOwner を呼び出すと述べています。ビデオ録画を開始するためのすべてのプロセスに従いました。私もそれをデバッグしようとしましたが、camera.startCapturingVideo(file) を呼び出した後、onVideoTaken() のコールバックが取得されません。ビデオ ファイルがパスに作成されていますが、再生中に、このビデオを再生できないと表示されます。コールバックを取得していないことが原因だと思います。以下は私のフラグメントです:
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
covered = InhalerData.getInstance().manifest.getPlayerType();
if (covered != null) {
if (covered.equalsIgnoreCase("covered")) {
view = inflater.inflate(R.layout.fragment_video, container, false);
} else {
view = inflater.inflate(R.layout.fragment_video_side_by_side, container, false);
}
}
mContext = getActivity();
setViews();
return view;
}
private void setViews() {
//initializing views
video = view.findViewById(R.id.video);
textureView = view.findViewById(R.id.camera_texture);
parentLayout = view.findViewById(R.id.parent_layout);
overLay = view.findViewById(R.id.overlay);
tv_tips = view.findViewById(R.id.tips);
textureView.setLifecycleOwner(VideoPlayerFragment.this);
return true;
}
});
textureView.addCameraListener(new CameraListener() {
@Override
public void onVideoTaken(File video) {
super.onVideoTaken(video);
onVideo(video);
}
});
}
//This method is called on record button click
private void captureVideo(String name) {
if (textureView.getSessionType() != SessionType.VIDEO) {
return;
}
isRecordingOn = false;
File mediaFile =
new File(Environment.getExternalStorageDirectory().getAbsolutePath()
+ "/" + name + VIDEO_EXTENSION);
textureView.setVideoCodec(VideoCodec.H_264);
textureView.startCapturingVideo(mediaFile, 8000);
if (mRecordingTimer != null) {
mRecordingTimer.start();
}
startBlinking();
textureView.postDelayed(new Runnable() {
@Override
public void run() {
// This will trigger onVideoTaken().
textureView.stopCapturingVideo();
}
}, 8000);
}
フラグメントに callBack を追加するにはどうすればよいですか? これの代わりに何を渡す必要がありますか?