У меня проблемы с доступом к обеим (передней и задней камерам одновременно). При включении одной камеры работает. Когда я сначала выключаю, а второй включаю, все работает. Это дает следующее исключение, когда я пытаюсь включить вторую камеру, пока первая все еще показывает изображение.

E/AndroidRuntime(32325): FATAL EXCEPTION: main
E/AndroidRuntime(32325): java.lang.RuntimeException: Fail to connect to camera service
E/AndroidRuntime(32325):    at android.hardware.Camera.native_setup(Native Method)
E/AndroidRuntime(32325):    at android.hardware.Camera.<init>(Camera.java:265)
E/AndroidRuntime(32325):    at android.hardware.Camera.open(Camera.java:226)
E/AndroidRuntime(32325):    at com.example.videostreamer.MainActivity$CameraHandler.start(MainActivity.java:116)
E/AndroidRuntime(32325):    at com.example.videostreamer.MainActivity$2.onClick(MainActivity.java:74)
E/AndroidRuntime(32325):    at android.view.View.performClick(View.java:2532)
E/AndroidRuntime(32325):    at android.widget.CompoundButton.performClick(CompoundButton.java:99)

В документе я нашел фразу, которая гласит:

общедоступная статическая камера открыта (int cameraId)

Начиная с: API уровня 9 Создает новый объект Camera для доступа к конкретной аппаратной камере. Когда вы закончите использовать камеру, вы должны вызвать release (), иначе она останется заблокирован и будет недоступен для других приложений. В вашем приложении должен быть активен только один объект камеры одновременно для определенного аппаратная камера.

.. но у меня есть только один объект Camera для одной аппаратной камеры, и я хотел создать второй объект для второго устройства.

  1. Кто-нибудь знает, возможно ли это (я использую Android 2.3.3)?
  2. Место: android.hardware.Camera.native_setup (собственный метод) может предположить, что, вероятно, это ограничение оборудования / драйвера - я использую HTC Sensation.
11
Jakub Troszok 27 Авг 2011 в 18:46

3 ответа

Лучший ответ

В этом вопросе в основном говорится, что он не может можно сделать, но может быть какой-нибудь взлом. Это отсутствие ответа от групп Google, скорее всего, говорит мне, что нет . Вот еще один ответ размещать сообщения в группах Google. Вот еще одно сообщение, в котором обсуждается использование двух камер на в то же время.

Итак, мой первоначальный ответ - нет, это невозможно. НО может быть какое-то обходное решение, вам просто, возможно, придется найти его самостоятельно, потому что он еще не обнаружен :).

РЕДАКТИРОВАТЬ 21/11/11: К сожалению, я нашел еще одно доказательство того, что это невозможно сделать, официальное от Sprint / HTC здесь. Я понимаю, что вы используете Sensation, а это EVO 4g, но я уверен, что это все еще применимо.

14
Community 23 Май 2017 в 11:47

Обе камеры можно запускать вместе, если это поддерживает оборудование. Сначала вам нужно найти конкретную SoC, используемую вашим телефоном. Вы можете найти это с помощью команды

$ adb shell getprop

Проверьте поле [ro.board.platform], для Nexus 6 возвращается

[ro.board.platform]: [msm8084]

Теперь вам нужно будет проверить, поддерживает ли этот набор микросхем возможность двойного ISP на оборудовании. Для чипсетов Qualcomm snapdragon вы можете найти его здесь. Для Samsung Exynos вы можете найти его здесь. Теперь, если ваше устройство поддерживает двойную камеру и на нем установлена ​​последняя версия ОС, вы можете использовать это приложение (ref), разработанный Jens, чтобы проверить, работает ли двойная камера. Вероятно, он должен работать, он работает на моем Nexus 6. Видео: http://youtu.be/lt8N1Lpa9Zw

Спасибо, джай

2
jaiprakashgogi 17 Окт 2015 в 16:07

Я тоже хотел сделать то же самое, но не могу этого добиться, это ограничение ОС Android.

ВЫ ДОЛЖНЫ ОСВОБОДИТЬ доступ к объекту подключенной камеры для другого пользователя.

Та же проблема возникает при доступе к классу AudioRecord, вы просто не можете создать из него объект, пока не выпустите первый.

0
Kuldeep Sakhiya 30 Янв 2014 в 12:25