Сделать снимок при обнаружении лица Android-vision API

Я уже проверил Сделать фото при обнаружении лица. Однако при этом используется FaceDetectionListener, который устарел.

У меня есть FaceTracker, который отслеживает лица и рисует рамку вокруг этого лица. Это код из примеров Google: https://github.com/googlesamples/android-vision/tree/master/visionSamples/FaceTracker

У меня также есть приложение Camera2Basic, которое делает снимки при нажатии кнопки. Этот код использует Camera2API, что и рекомендует Google. Вот код: https://github.com/googlesamples/android-Camera2Basic.

Что мне нужно сделать, так это делать снимок автоматически всякий раз, когда обнаруживается лицо, а не когда я нажимаю кнопку, что и делает Camera2Basic. FaceTracker имеет Activity- FaceTrackerActivity, у которого есть метод

        /**
         * Start tracking the detected face instance within the face overlay.
         */
        @Override
        public void onNewItem(int faceId, Face item) {
            mFaceGraphic.setId(faceId);
        }

И Camera2Basic имеет Fragment - Camera2BasicFragment, у которого есть метод onClick (представляющий onClickListener для изображения Button). onClick() вызывает метод takePicture(), который мне нужен для автоматического вызова при обнаружении onNewItem в FaceTracker.

Вот onClick-

    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.picture: {
                takePicture();
                break;
            }
            case R.id.info: {
                Activity activity = getActivity();
                if (null != activity) {
                    new AlertDialog.Builder(activity)
                            .setMessage(R.string.intro_message)
                            .setPositiveButton(android.R.string.ok, null)
                            .show();
                }
                break;
            }
        }
}

А вот takePicture-

    /**
     * Initiate a still image capture.
     */
    private void takePicture() {
        lockFocus();
}

Однако мне трудно понять, как это сделать, потому что оба приложения структурированы по-разному, и мои попытки объединить их пока не очень хорошо работают.


person picotard    schedule 22.04.2017    source источник
comment
может быть вид текстуры или вид поверхности, чтобы открыть камеру и показать предварительный просмотр внутри нее. затем используйте эту поверхность для захвата в любых условиях, которые вы хотите.   -  person Elias Fazel    schedule 22.04.2017
comment
Я знаю, что это и старый пост, но я основывался на тех же обстоятельствах на примере отслеживания лица. Затем вы можете запустить метод takePicture() для объекта cameraSource, который требует, чтобы вы установили обратный вызов при съемке изображения.   -  person Antek    schedule 06.07.2017