0

このライブラリをフラグメントに統合しようとしています。このチュートリアルでは、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 を追加するにはどうすればよいですか? これの代わりに何を渡す必要がありますか?

4

0 に答える 0