Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Android > Работа с камерой в эмуляторе


Автор: Xonxt 1.8.2011, 18:33
Доброе время суток.

Решил вот попробовать себя на поприще программирования под Android.

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

Я не являюсь счастливым (или не счастливым?) обладателем смартфона на Android, посему я вынужден довольствоваться эмулятором. И потому возникает существенная проблема при создании приложения, использующего камеру. Ведь, как мне впоследствии стало известно, эмулятор работу с камерой не поддерживает вообще! (Интересно, как тогда вообще создаются и отлаживаются подобные приложения? нельзя же постоянно замусоривать для этого настоящие смартфоны!)

Поискав, я нашел, что вроде бы как эта проблема http://www.tomgibara.com/android/camera-source неким Томом Гибарой. Суть состоит в том, что он пытается с эмулятора обращаться к внешней камере через http как к удаленной. Но решение это было разработано еще до Android 1.0 (!) и ныне, походу, не является рабочим, хоть я и, в меру своих познаний в этой области, и пытался заставить его работать.

И далее сколько я ни искал, все отвечали "Tom Gibara did it! See this http://www.tomgibara.com/android/camera-source!". Прямо уж не знаю что делать.

Помогите с этим!

Автор: gabin 1.8.2011, 20:02
Здесь посмотрите - http://www.inter-fuser.com/2009/09/live-camera-preview-in-android-emulator.html

Автор: Xonxt 1.8.2011, 20:07
Цитата(gabin @ 1.8.2011,  19:02)
Здесь посмотрите - http://www.inter-fuser.com/2009/09/live-camera-preview-in-android-emulator.html

да, это я тоже видел. К сожалению, ничего хорошего. Может я что-то неправильно делаю (все по инструкции, взял из SDK пример CameraPreview, отредактировал как сказано. Вот только с WebcamBroadcaster не вышло ничего, так что использовал программу Webcam2000 по совету того же Тома Гибары. И ничего хорошего не произошло, вижу просто белый экран.

Неужели разработчики серьезных приложений для камеры тоже так изгаляются? Или же они сразу на реальных устройствах отлаживают?

Автор: alexu_id 1.8.2011, 20:16
вообще то наверно правильнее на устройстве сразу отлаживать через adb


Автор: gabin 1.8.2011, 20:20
Цитата

да, это я тоже видел. К сожалению, ничего хорошего. Может я что-то неправильно делаю (все по инструкции, взял из SDK пример CameraPreview, отредактировал как сказано. Вот только с WebcamBroadcaster не вышло ничего, так что использовал программу Webcam2000 по совету того же Тома Гибары. И ничего хорошего не произошло, вижу просто белый экран.

А что с WebcamBroadcaster не вышло?
Цитата

Неужели разработчики серьезных приложений для камеры тоже так изгаляются? Или же они сразу на реальных устройствах отлаживают?

Скорее всего на реальных устройствах.

Автор: Xonxt 1.8.2011, 20:34
Цитата(gabin @ 1.8.2011,  19:20)
Цитата

да, это я тоже видел. К сожалению, ничего хорошего. Может я что-то неправильно делаю (все по инструкции, взял из SDK пример CameraPreview, отредактировал как сказано. Вот только с WebcamBroadcaster не вышло ничего, так что использовал программу Webcam2000 по совету того же Тома Гибары. И ничего хорошего не произошло, вижу просто белый экран.

А что с WebcamBroadcaster не вышло?

не вышло то, что оно не компилится. 
Номер раз: http://clip2net.com/s/15tmC
Номер два: http://clip2net.com/s/15tnz

Все джавы, какие только смог найти на офф сайте я поставил, все эти JDK, JRE, JMF... все что только нашел)
Правда некоторые из них еще и не хотят устанавливаться, аргументируя отсутствием J2RE.
Цитата(gabin @ 1.8.2011,  19:20)
Цитата

Неужели разработчики серьезных приложений для камеры тоже так изгаляются? Или же они сразу на реальных устройствах отлаживают?

Скорее всего на реальных устройствах.

Ну с этим-то как раз проблема.

Автор: Xonxt 1.8.2011, 21:10
В общем, дело ясное, что дело темное.
Хочешь разрабатывать приложения на Android, сначала купи смартфон :(

Неужели так сложно реализовать поддержку камеры в эмуляторе? Уже вон 3.1 или 3.2 вышел, а все еще нету.

Автор: Xonxt 1.8.2011, 22:04
Хорошо. Вернемся к http://www.inter-fuser.com/2009/09/live-camera-preview-in-android-emulator.html примеру. 

Я понял, что я делал неправильно. WebcamBroadcaster.java нормально скомпилился, вот только не запускается. Код тот что в примере. На всякий приложу к сообщению.
Вот лог:
Код
C:\Users\Xonxt\workspace\webcambroadcaster>"C:\Program Files\Java\jdk1.7.0\bin\javac.exe" WebcamBroadcaster.java -Xlint:unchecked
WebcamBroadcaster.java:46: warning: [unchecked] unchecked conversion
Vector<CaptureDeviceInfo> devices = CaptureDeviceManager.getDeviceList(null);
      ^
  required: Vector<CaptureDeviceInfo>
  found:    Vector
1 warning

C:\Users\Xonxt\workspace\webcambroadcaster>java "-Djava.library.path=C:\Program Files (x86)\JMF2.1.1e\lib" WebcamBroadcaster
Unable to find a suitable player
В чем может быть проблема?

Автор: spyswamp 2.8.2011, 11:19
Xonxt, "Unable to find a suitable player" wtf? Может, у тебя плеер этот в PATH отсутствует?

"warning: [unchecked] unchecked conversion"

Это фигня, там просто явный каст отсутствует.

Автор: Xonxt 2.8.2011, 14:53
Цитата(spyswamp @ 2.8.2011,  10:19)
Xonxt, "Unable to find a suitable player" wtf? Может, у тебя плеер этот в PATH отсутствует?

"warning: [unchecked] unchecked conversion"

Это фигня, там просто явный каст отсутствует.

Про Warning это и мне понятно.
Меня больше интересует этот плеер. Хрен знает про какой плеер идет речь, если я хочу камеру подрубить.

Автор: spyswamp 2.8.2011, 16:55
Думаю, тебе так же "повезло" в интернете с ответом на этот вопрос. smile

Пока могу предложить только два пути:

1. Почитать комментарии вот здесь внизу: http://www.inter-fuser.com/2009/09/live-camera-preview-in-android-emulator.html

2. Подебажить самому эту функцию:

Код

public class WebcamBroadcaster {

    private static Player createPlayer(int width, int height) 


"Unable to find a suitable player" вылетает только если createPlayer() вернет null.

P.S. когда найдешь ответ, будь добр, размести его здесь - очень многим будет полезна эта тема на русском языке, мне кажется.

Автор: Xonxt 3.8.2011, 18:53
В общем в комментариях я нормального ответа не нашел. У кого-то там была точно такая же проблема как у меня:
Цитата
Hi, 
I used your example of WebcamBroadcaster, but I had some problems. When I execute, it returns null when it tries to execute line 49, and thus it stops on line 157, and returns this message: "Unable to find a suitable player".

What am I doing wrong? Could you please help me with this?
Но единственное что ответил автор:
Цитата
You need to check that you have a device with RGB or YUV Fomat connected to your PC. One way.. Go to JMStudio File->preferences, click on capture devices. If your web cam is not of these formats you'll have to modify the code as I did for the YUV format.
Я сделал как он посоветовал, и собственно моей камеры в списке устройств не появляется.

Дебаггинг той функции показал следующее. В этой строке про попытке получить список устройств захвата:
Код
private static Player createPlayer(int width, int height) {
  try {
    Vector<CaptureDeviceInfo> devices = 
    CaptureDeviceManager.getDeviceList(null); // "null" здесь означает получить список ВСЕХ устройств.
Возвращается null. Т.е. устройство не находится.

Камера обычная ноутбучная. Формат YUY2.

Автор: helsikk 4.8.2011, 11:22
думаю эмулятор не лучший вариант, лучше поискать знакомых со смартом и протестить =)

Автор: spyswamp 4.8.2011, 13:08
Либо стрельни у кого-нибудь внешнюю веб-камеру для тестирования, чтобы JMStudio ее все же нашла. smile

Автор: Xonxt 4.8.2011, 13:24
Цитата(spyswamp @ 4.8.2011,  12:08)
Либо стрельни у кого-нибудь внешнюю веб-камеру для тестирования, чтобы JMStudio ее все же нашла. smile

У меня как раз дома завалялось еще 2 USB-вебкамеры.
Обе тоже не срабатывают :(

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

Автор: Xonxt 5.8.2011, 23:42
Так.
Значит проблема решена.
Стыдно признаться, но все оказалось довольно просто. Так как JMF штука довольно старая, то под моим Windows 7 она просто напросто не работала.

Запустил Windows XP и всё прекрасно работает. По вот http://www.inter-fuser.com/2009/09/live-camera-preview-in-android-emulator.html инструкции. 

Всем спасибо за участие.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)