Я уже проверил Сделать фото при обнаружении лица. Однако при этом используется 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();
}
Однако мне трудно понять, как это сделать, потому что оба приложения структурированы по-разному, и мои попытки объединить их пока не очень хорошо работают.
takePicture()
для объектаcameraSource
, который требует, чтобы вы установили обратный вызов при съемке изображения. - person Antek   schedule 06.07.2017