Использование обеих камер на Android: «Не удалось подключиться к службе камеры» - PullRequest
11 голосов
/ 27 августа 2011

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

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 одновременно для определенного аппаратная камера.

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

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

Ответы [ 3 ]

14 голосов
/ 27 августа 2011

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

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

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

2 голосов
/ 17 октября 2015

Обе камеры могут быть запущены вместе, если оборудование поддерживает это. Сначала вам нужно найти конкретный 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

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

0 голосов
/ 30 января 2014

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

Вы должны освободить подключенный объект камеры для доступа к другому.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...