CameraView.setLifecycleOwner (this) обратный вызов во фрагменте - PullRequest
0 голосов
/ 20 ноября 2018

Я пытаюсь интегрировать эту библиотеку в свой фрагмент.В этом уроке они сказали, что нужно вызывать frag.viewLifecycleOwner вместо этого в camera.setLifecycleOwner (this).Я проследил весь процесс, чтобы начать запись видео.Я также попытался отладить его, но после вызова camera.startCapturingVideo (файл) он не получает обратный вызов для 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);

    }

Как я могу добавить колбэк во фрагмент, Что я должен передать вместо этого.

...