Как получить кадры предварительного просмотра camera2 программно (без макета) в Android?

#android #android-camera2 #surface #textureview

#Android #android-camera2 #Поверхность #textureview

Вопрос:

Я создал службу переднего плана с целью получения кадров из предварительного просмотра camera2 без отображения макета пользователю. Когда я создаю Textureview в макете и использую его, все работает нормально, и я могу получить кадры, вызвав getBitmap (int width, int height) TextureView. Я сохранил кадры, и я знаю, что это работает нормально. Вот мой код:

 textureView = mainActivity.findViewById(R.id.texture_view);
surfaceTexture = textureView.getSurfaceTexture();
surface = new Surface(surfaceTexture);
  

Но мне нужно, чтобы мой код работал без макета. Я создал TextureView программно, но когда я запускаю его и сохраняю кадры, они пустые. Это код, который я запускаю, чтобы заставить его работать без макета:

 textureView = new TextureView(context);
textureView.setSurfaceTexture(new SurfaceTexture(100));
surfaceTexture = textureView.getSurfaceTexture();
surface = new Surface(surfaceTexture);
  

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

Ответ №1:

Я не думаю, что вы можете избежать использования surface. Но, может быть, вам сойдет с рук динамическое раздувание его с высотой макета и шириной 0dp.