Я пытаюсь получить предварительный просмотр камеры в textureView, в настоящее время все нормально, когда я запускаю приложение.
Но моя проблема добавляется, когда я хочу поместить свой фрагмент CameraPreview в BottomNavigationView. Все работает нормально при запуске приложения, но если я переключаю фрагмент из BottomNavigationView, вызывается метод onSurfaceTextureDestroyed () в SurfaceTextureListener (означает, что мой SurfaceTexture уничтожен), и мой фрагмент пуст (без предварительного просмотра камеры).
В журналах mTextureView недоступен, поэтому в состоянии метода onResume слушатель переназначается, но метод onSurfaceTextureAvailable () никогда не вызывается.
Когда я блокирую свой телефон с помощью фрагмента CameraPreview, метод уничтожения не вызывается, и при его разблокировке доступен предварительный просмотр камеры, в чем разница между разблокировкой моего телефона и изменением отображаемого фрагмента в BottomNavigationView и тем, как я могу это сделать исправить мою проблему?
Мой код основан на образце Google Camera2API.
mtextureListener
private val mTextureListener = object : TextureView.SurfaceTextureListener
{
@SuppressLint("MissingPermission")
override fun onSurfaceTextureAvailable(surface: SurfaceTexture?, width: Int, height: Int) { checkCameraPermission(width, height) }
override fun onSurfaceTextureSizeChanged(surface: SurfaceTexture?, width: Int, height: Int) = transformImage(width, height)
override fun onSurfaceTextureUpdated(surface: SurfaceTexture?) = Unit
override fun onSurfaceTextureDestroyed(surface: SurfaceTexture?): Boolean
{
// Called on fragment switch in bottomnavView but not called on phone locked... why ? and how to fix ?
Log.e(TAG, "Surface texture destroyed"); return true
}
}
onResume инициализация текстуры
if (mTextureView.isAvailable)
{
this.checkCameraPermission(mTextureView.width, mTextureView.height)
} else
{
this.mTextureView.surfaceTextureListener = mTextureListener
}
Фактически: CameraPreview недоступен, когда я включаю его в BottomNavView
Ожидается: я хочу видеть камеру Preview при каждом переключении с BottomNavView