Я понимаю, что это старый вопрос, на который уже дан ответ, но, учитывая, что эта ссылка является самым сильным источником ссылок на мое сообщение, я счел необходимым сделать более информированный ответ, а также объяснить новые обновления CameraDetectionбиблиотека.
причины:
есть несколько хорошо известных причин, которые могут заставить Camera.getCamera () вернуть действительный объект Camera, но камера фактически не будет работать.
, если камера уже используется.Это наиболее распространено, если на вашем компьютере работает Skype.Вам даже не нужно использовать камеру в этот момент, но в последний раз я проверял, если Skype открыт, он крадет вашу камеру.
Ноутбуки Mac использовалисьиметь несколько камер в списке, даже если они не были подключены.это часто показывалось как камера DVI и что-то еще (извините за плохую память).Если по какой-либо причине одна из этих «отключенных» камер была выбрана по умолчанию, то у вас возникнут проблемы.
Адаптер Google Chat / Video в прошлом вызывал проблемы.просто его установка на некоторое время вызвала у людей много проблем (возможно, это началось в 2011 году?), поскольку вы никогда не знаете, какую версию ОС или плеера вы получите, но это все еще может быть проблемой.
почему эта проблема отстой:
определение того, работает ли камера на самом деле , является трудной задачей.лучший вариант, который у нас есть, это отслеживать активность камеры и fps, чтобы увидеть, работает ли она.
что вы должны ожидать
, чтобы определить поведение работающей камеры, я использую таймер для проверки fps и уровней активности камеры.это общий результат: (этот таймер установлен на 100 мс)
fps:0 activity:-1
... x20 ...
fps:0 activity:100
fps:0 activity:100
fps:8.1 activity:5
fps:8.5 activity:46
fps:8.2 activity:3
fps:8.4 activity:3
, поэтому камера не отвечает на 2,1 целых секунд !!!какие!?!?!?Я знаю.но затем он, наконец, начинает действовать. Это обычное поведение, хотя я тестирую его на 6-ядерном 3,3-ГГц компьютере с небольшой нагрузкой.моя библиотека продолжает проверять камеру, ожидая изменения этих уровней активности и fps.
что вы получаете, когда оно не работает
можете ли вы догадаться, что происходит, когда камера не работает?вы догадались!
вы получаете это безостановочно, навсегда
fps:0 activity:-1
fps:0 activity:-1
fps:0 activity:-1
, поэтому мой код будет проверять камеру по умолчанию в течение 3 полных секунд, ожидая некоторой активности, а затем выйдет.это плохая часть, может быть, все оборудование отстой, а процессор уже перегружен, и для получения ответа требуется больше 3 секунд?горе нам, ActionScript, ребята.
CameraDetection
моя библиотека делает все это и даже больше!он даже обрабатывает получение разрешения от пользователя на использование мультимедийных устройств!
обновлено 2012.10.06 , теперь оно имеет:
- MediaPermissions - класс, который обрабатывает худшую часть камер.он получит разрешение, сообщит вам, было ли это разрешено или отклонено, и даже скажет, если у пользователя установлен флажок «запомнено»
- CameraChecker - абстракция для очистки библиотеки.
- CameraDetection - проще в использовании и сообщает вам еще больше!получать события, когда диалоговое окно разрешений открывается и закрывается, когда пользователь дает разрешение, и когда камера найдена, камеры не используются, и даже когда есть камеры, но ни одна из них не работает
- регистрация! - почти готово, я буду поддерживать ведение журнала всех данных, которые использует CameraDetection, поэтому, возможно, мы сможем получить достаточно данных, чтобы подтолкнуть Adobe к исправлению чего-либо ...
пожалуйста, посетите Домашняя страница CameraDetection и не забудьте просмотреть другие посты об этом!
, чтобы получить код, который вы можете перейти непосредственно на github