Я работаю над приложением по распознаванию лиц с Android Studio (на основе Camera2 Api Face Recon) Проблема заключается в следующем: сеанс захвата останавливается, когда выполняются некоторые условия. Затем пользователь может сделать снимок или повторить попытку (начинается сеанс захвата). Я хотел бы дать время пользователю после того, как он использовал кнопку повтора, чтобы заменить свое лицо.
Кнопки повторного запуска и съемки появляются, когда лицо занимает более 20% экрана. В это же время я использую stopRepeating, чтобы заморозить сеанс захвата камеры. Я пытался поместить эти функции в обработчик, но когда я помещал stopRepeating внутри обработчика, приложение вылетало.
if(face/sizeEc>0.20 && face/sizeEc<0.6){
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
TextView textView = (TextView) getView().findViewById(R.id.picture);
textView.setVisibility(View.VISIBLE);
TextView textView2 = (TextView) getView().findViewById(R.id.picture2);
textView2.setVisibility(View.VISIBLE);
try {
mCaptureSession.stopRepeating();
} catch (CameraAccessException e) {
e.printStackTrace();
}
}
}, 2000);
//I tried to use this handler in order to allow user to replace his head
//But there is a problem when the handler is used with stopRepeating
}
и код для кнопки повтора:
textView2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
try {
mCaptureSession.setRepeatingRequest(mPreviewRequest,
mCaptureCallback, mBackgroundHandler);
} catch (CameraAccessException e) {
e.printStackTrace();
}
textView.setVisibility(View.GONE);
textView2.setVisibility(View.GONE);
asDelayed=true;
}
});
Как я уже сказал, когда я делаю это, происходит сбой приложения при использовании фотосъемки после повторной попытки. Я хотел бы дать пользователю время сменить лицо после использования кнопки повтора.
[EDIT] Вот ошибка
2019-05-15 08: 44: 12.149 28923-28923 / weladee.frontware.com.weladee_android E / AndroidRuntime: ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: основное
Процесс: weladee.frontware.com.weladee_android, PID: 28923
java.lang.NullPointerException: попытка вызвать виртуальный метод 'void android.hardware.camera2.CameraCaptureSession.stopRepeating ()' для ссылки на пустой объект
на weladee.frontware.com.weladee_android.utils.front_camera.CameraFacingFront $ 4 $ 1 $ 1.run (CameraFacingFront.java:429)
на android.os.Handler.handleCallback (Handler.java:761)
на android.os.Handler.dispatchMessage (Handler.java:98)
на android.os.Looper.loop (Looper.java:156)
на android.app.ActivityThread.main (ActivityThread.java:6523)
в java.lang.reflect.Method.invoke (родной метод)
на com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:942)
на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:832)