- How To Enable Camera in Android Emulator
- Step 1: Add SD Card in AVD
- Step 2: Add Camera Support in Hardware under AVD
- Step 3: Enable Camera Support in Hardware
- Как воспользоваться вебкамерой в эмуляторе Android
- Суть проблемы
- Подходы к решению
- Что установлено
- Сервер
- Клиент
- Результат
- Послесловие
- Как воспользоваться вебкамерой в эмуляторе Android
- Суть проблемы
- Подходы к решению
- Что установлено
- Сервер
- Клиент
- Результат
- Послесловие
- Using Camera in the Android emulator
- 8 Answers 8
- Используйте файл изображения в качестве камеры
How To Enable Camera in Android Emulator
by Viral Patel · May 8, 2012
By default when you create an Android Virtual Devices (AVD) in Android, the Camera is disabled. So if your application uses Camera API, it might not work properly in Android Emulator. Also SDCard must be defined in emulator in order to use Camera.
To enable Camera in your Android Emulator, just add following highlighted code in your AVD’s config.ini file. You can find the config.ini file under your user directory/.android folder.
In case you don’t find the config.ini file or want to enable Camera support through Android SDK and AVD Manager, follow below simple steps.
Open Android SDK and AVD Manager:
Step 1: Add SD Card in AVD
In the SD Card setting, set the value for Size. To enable camera, the SD Card must be enabled in Emulator.
Step 2: Add Camera Support in Hardware under AVD
Now under Hardware section, click New button to add Camera hardware. It will open following Dialog box. Select Camera support from the Property dropdown and click Ok.
Step 3: Enable Camera Support in Hardware
The new hardware: Camera support is visible under Hardware section. Set its value to yes and save changes by pressing Edit AVD.
And that’s all. Just save the changes and launch the emulator. You’ll be able to start Camera application and take snaps (Default android pic) through it.
Источник
Как воспользоваться вебкамерой в эмуляторе Android
Суть проблемы
Если мы используем эмулятор и камеру в нашем приложении, то на выходе получаем приблизительно такую картинку:
Хотелось бы, чтобы вместо этого были изображения с вебкамеры компьютера.
Подходы к решению
1) Можно доработать эмулятор Андроид, который в opensource.
2) Передать поток с вебкамеры по сети, и использовать его в приложении.
3) Использовать Android x86.
Исходники эмулятора для honeycomb недоступны с марта 2011, есть доступные deprecated версии, с ними работать весело, но непродуктивно. А жаль, это был бы наиболее приемлимый вариант. Тем более опыт допиливания приложений, которые работают с видеопотоком и v4l2 под Linux есть.
Androidx86 — похоже выход, это может помочь многим, но… У меня поднять веб-камеру не получилось.
Первый и третий подход нам недоступен, тогда будем бороться за второй подход.
Идея давно уже предложена и даже реализована для старых версий эмулятора и API. Для новых версий API предложено решение, но исключительно для JMF. Отличное решение, но мою камеру JMF не распознал. Заставить камеру работать с JMF не получилось ни в Linux, ни в Windows(возможно я что-то делал не так, по идее это решение должно запускаться в Windows). Все дальнейшие действия я проводил уже исключительно в Linux. Модифицируем решение этой проблемы на базе уже готового кода.
В исходном коде реализована классическая система клиент-сервер. Сервер на компьютере вещает в сеть картинки с камеры, а клиент в эмуляторе (в приложении) принимает эти картинки.
Что установлено
Сервер
Для создания сервера я решил двигаться по пути наименьшего сопротивления и воспользоваться библиотекой v4l4j — которая прекрасно поддерживает мою камеру.
Необходимо доработать исходный код таким образом, чтобы вместо JMF он использовал v4l4j. Вот что получилось.
измененный WebBroadcaster(привожу код полностью, чтобы была понятна логика работы. Автор Tom Gibara, я лишь адаптировал под v4l4j):
Какая логика работы:
При запуске включаем камеру и подготавливаемся к получению изображений:
Потом, когда клиент соединяется — высылаем ему изображение в поток:
Из доработок на будущее— код использует устаревшее getVideoFrame(), который надо-бы заменить на вызов callback функции при появлении нового фрэйма на камере, но пришлось бы вносить изменения также и в логику работы всей связки, потому оставил все как есть, Возможно перепишу лучше позже, когда будет время. Ведь это вспомогательная функция на этапе разработки… В идеале необходимо сделать чтобы программа читала поток в формате MJPEG, т. е. парсила multipart/x-mixed ответ от HTTP сервера и рисовала картинки по мере поступления.
Клиент
Cсылка на классический пример использования обычной камеры. Мы его немного сократим, упростим(в целях обучения и тестирования) и получим вот такой пример для обычной камеры.
Важные строки: Класс который будет отвечать за отображение.
А внутри этого класса Preview, перерисовываем каждый раз поверхность на который выводится предпросмотр.
Если этот код запустить в эмуляторе, то получим квадратик как на скриншоте выше.
Теперь, модифицируем класс таким образом чтобы он показывал картинки с нашего сервера.
1) Возьмем исходник класса SocketCamera отсюда. Добавим в наш проект.
2) Изменим исходный код класса Preview таким образом:
Результат
Теперь запустим сервер:
java -Djava.library.path=/opt/Android/v4l4j-0.8.10 -cp «/opt/Android/v4l4j-0.8.10/v4l4j.jar:./» com/webcambroadcaster/WebcamBroadcaster
где -Djava.library.path=/opt/Android/v4l4j-0.8.10 путь к вашей библиотеке v4l4j
Запустим приложение CameraDemo на эмуляторе. В результате получим видеопоток в с вебкамеры в эмуляторе. Поток немного дергает, идет с запозданием, но это лучше чем ничего.
Послесловие
Задумался о существующем пороге входа в технологию. Вроде бы и небольшой порог, но покупка устройства очень часто недоступна начинающему разработчику. Эмулятор снимает этот порог лишь частично.
А какой же тогда порог входа в разработку приложений под iPhone?
Столкнувшись с тем, что участник сообщества открытого кода закрывет его после некоторого времени, возникают вопросы:
А в прибыли ли только дело?
Может быть работа сообщества не оправдала ожиданий Google?
Неужели теперь есть что скрывать от сообщества?
А что теряет гигант, закрываясь от изучения и дополнения кода сторонними разработчиками?
UPD: Это все возможно уже и не актуально. skl1f подсказывает, что камера поддерживается в SDK.
developer.android.com/sdk/tools-notes.html — вроде документация говорит да, а официальный мануал: developer.android.com/guide/developing/devices/emulator.html — нет. Надо пробовать.
UPD2: Проверил. Камера в эмуляторе работает и доступна для SDK tools rev. 14 и выше и только для Android 4.0 и выше. Для старых платформ выше описанный способ все еще актуален.
Источник
Как воспользоваться вебкамерой в эмуляторе Android
Суть проблемы
Если мы используем эмулятор и камеру в нашем приложении, то на выходе получаем приблизительно такую картинку:
Хотелось бы, чтобы вместо этого были изображения с вебкамеры компьютера.
Подходы к решению
1) Можно доработать эмулятор Андроид, который в opensource.
2) Передать поток с вебкамеры по сети, и использовать его в приложении.
3) Использовать Android x86.
Исходники эмулятора для honeycomb недоступны с марта 2011, есть доступные deprecated версии, с ними работать весело, но непродуктивно. А жаль, это был бы наиболее приемлимый вариант. Тем более опыт допиливания приложений, которые работают с видеопотоком и v4l2 под Linux есть.
Androidx86 — похоже выход, это может помочь многим, но… У меня поднять веб-камеру не получилось.
Первый и третий подход нам недоступен, тогда будем бороться за второй подход.
Идея давно уже предложена и даже реализована для старых версий эмулятора и API. Для новых версий API предложено решение, но исключительно для JMF. Отличное решение, но мою камеру JMF не распознал. Заставить камеру работать с JMF не получилось ни в Linux, ни в Windows(возможно я что-то делал не так, по идее это решение должно запускаться в Windows). Все дальнейшие действия я проводил уже исключительно в Linux. Модифицируем решение этой проблемы на базе уже готового кода.
В исходном коде реализована классическая система клиент-сервер. Сервер на компьютере вещает в сеть картинки с камеры, а клиент в эмуляторе (в приложении) принимает эти картинки.
Что установлено
Сервер
Для создания сервера я решил двигаться по пути наименьшего сопротивления и воспользоваться библиотекой v4l4j — которая прекрасно поддерживает мою камеру.
Необходимо доработать исходный код таким образом, чтобы вместо JMF он использовал v4l4j. Вот что получилось.
измененный WebBroadcaster(привожу код полностью, чтобы была понятна логика работы. Автор Tom Gibara, я лишь адаптировал под v4l4j):
Какая логика работы:
При запуске включаем камеру и подготавливаемся к получению изображений:
Потом, когда клиент соединяется — высылаем ему изображение в поток:
Из доработок на будущее— код использует устаревшее getVideoFrame(), который надо-бы заменить на вызов callback функции при появлении нового фрэйма на камере, но пришлось бы вносить изменения также и в логику работы всей связки, потому оставил все как есть, Возможно перепишу лучше позже, когда будет время. Ведь это вспомогательная функция на этапе разработки… В идеале необходимо сделать чтобы программа читала поток в формате MJPEG, т. е. парсила multipart/x-mixed ответ от HTTP сервера и рисовала картинки по мере поступления.
Клиент
Cсылка на классический пример использования обычной камеры. Мы его немного сократим, упростим(в целях обучения и тестирования) и получим вот такой пример для обычной камеры.
Важные строки: Класс который будет отвечать за отображение.
А внутри этого класса Preview, перерисовываем каждый раз поверхность на который выводится предпросмотр.
Если этот код запустить в эмуляторе, то получим квадратик как на скриншоте выше.
Теперь, модифицируем класс таким образом чтобы он показывал картинки с нашего сервера.
1) Возьмем исходник класса SocketCamera отсюда. Добавим в наш проект.
2) Изменим исходный код класса Preview таким образом:
Результат
Теперь запустим сервер:
java -Djava.library.path=/opt/Android/v4l4j-0.8.10 -cp «/opt/Android/v4l4j-0.8.10/v4l4j.jar:./» com/webcambroadcaster/WebcamBroadcaster
где -Djava.library.path=/opt/Android/v4l4j-0.8.10 путь к вашей библиотеке v4l4j
Запустим приложение CameraDemo на эмуляторе. В результате получим видеопоток в с вебкамеры в эмуляторе. Поток немного дергает, идет с запозданием, но это лучше чем ничего.
Послесловие
Задумался о существующем пороге входа в технологию. Вроде бы и небольшой порог, но покупка устройства очень часто недоступна начинающему разработчику. Эмулятор снимает этот порог лишь частично.
А какой же тогда порог входа в разработку приложений под iPhone?
Столкнувшись с тем, что участник сообщества открытого кода закрывет его после некоторого времени, возникают вопросы:
А в прибыли ли только дело?
Может быть работа сообщества не оправдала ожиданий Google?
Неужели теперь есть что скрывать от сообщества?
А что теряет гигант, закрываясь от изучения и дополнения кода сторонними разработчиками?
UPD: Это все возможно уже и не актуально. skl1f подсказывает, что камера поддерживается в SDK.
developer.android.com/sdk/tools-notes.html — вроде документация говорит да, а официальный мануал: developer.android.com/guide/developing/devices/emulator.html — нет. Надо пробовать.
UPD2: Проверил. Камера в эмуляторе работает и доступна для SDK tools rev. 14 и выше и только для Android 4.0 и выше. Для старых платформ выше описанный способ все еще актуален.
Источник
Using Camera in the Android emulator
I wish to simulate camera in the android emulator using the webcam. Basically I need to only take photos with the camera in the emulator (live preview is not needed i.e if it makes it any easier)
I followed the tutorial here which is the only one I could find that was close to my requirements
But many of the libraries used in that tutorial(like android.hardware.CameraDevice) are not available in present sdk and are replaced by new libraries(like android.hardware.camera).
Any help on how to do this in the present sdk(2.1 or 2.2) would be much appreciated.
8 Answers 8
In your AVD advanced settings, you should be able to set front and back cameras to Webcam() or Emulated .
Update: ICS emulator supports camera.
Some elaboration, in the hope of clarifying what has already been said:
As stated above, Webcams are supported natively in the current SDK, but only on recent android versions (4.0 and higher)
Webcam detection is automatic where present. In 4.0.3, the camera defaults to the front-facing camera so a lot of applications (especially pre-2.3 applications, which can only fetch the default camera, i.e. the back-facing one) will still show you the old checkerbox-with-moving-square stand-in instead.
I think some more info is available in the following post: Camera on Android Eclipse emulator:
Or at least, that’s the most information I’ve been able to find—aside from the brief, uninformative statements in the release notes for the SDK tools.
Источник
Используйте файл изображения в качестве камеры
Вместо использования реальной камеры, я хотел бы смоделировать вход камеры в виде статического файла изображения. Я хочу, чтобы он работал с любым приложением, как если бы это была камера. Точнее говоря, Android находится внутри эмулятора на компьютере без веб-камеры.
(Как и в этом вопросе, но мне достаточно статичного изображения)
Чтобы быть более точным, я хочу отсканировать QR-код из WhatsApp, чтобы использовать веб-сеть WhatsApp, поэтому использование приложений, которые открываются, когда приложение хочет открыть камеру, не работает. Мне нужно что-то вроде поддельного драйвера камеры.
Существуют сторонние приложения «поддельные камеры», которые позволяют вам выбирать изображение, например:
- Image2Camera ( бесплатно )
- Поддельная камера от New Horizon Apps ( бесплатно )
- Fake Camera — пожертвовать версию от Вацлава Балака ( платно )
Обратите внимание, что для того, чтобы эти приложения были полезными , вам необходимо сначала поместить изображение в хранилище устройства (эмулятора) .
Кроме того, поскольку эти приложения на самом деле не являются приложениями для камер, непосредственное открытие приложений не будет действительно полезным (кроме, возможно, чтения инструкции по использованию приложения). Вместо этого, когда вы хотите сделать снимок из приложения, вместо этого эти приложения можно будет выбрать как приложение «камера», а затем вы можете выбрать изображение на устройстве.
Отказ от ответственности : я не связан ни с одним из этих приложений.
Источник