В принципе, это проблема с моим телефоном.Другие пользователи сообщили, что это также происходит с их телефонами разных марок, но с той же версией Android.У других людей вообще нет проблем - они решительно указывают, что это не проблема со стандартной версией Android, а из реализаций каждой компании для их аппаратных драйверов.
Мне нужны постоянные данные акселерометра, и я не могу получитьКлюч для измерения этих данных для меня - у меня есть Arduino с Bluetooth и акселерометр, поэтому я мог бы реализовать это решение.Поэтому я решил, что временным решением для моего мобильного телефона было включение экрана (затемнение) и игнорирование потребления батареи.Позже я проведу тесты на использование батареи с помощью другого телефона Android, который работает с выключенным экраном.
Дополнительная информация об ошибке
Я исследовал некоторыебольше и нашел отчеты от других пользователей Android, и я думаю, может быть, я понимаю, что происходит.Библиотека libsensors.so, в которой есть драйверы для сенсоров телефонов, разработана не Google, а каждым поставщиком мобильных телефонов - конечно, потому что каждый мобильный телефон имеет свое собственное специальное оборудование.Google предоставляет только заголовочный файл C, чтобы разработчики знали, что они должны реализовать.В некоторых реализациях для этих драйверов разработчики просто выключают акселерометр при выключении экрана, тем самым не позволяя приемнику событий датчика получать новые события.
Я также проверял это с CyanogenMod RC7.2, но это не былоработать также, потому что драйверы акселерометра являются оригинальными от LG.
Электронные письма, которыми обмениваются с отделом кадров LG
Я отправил электронное письмо разработчикам LGP990 и, наконец, получил несколько конкретных ответов!Это может оказать большую помощь некоторым людям, таким как я, которые испытывают эти проблемы с Android.Я написал следующий вопрос
Здравствуйте!Я занимаюсь диссертацией в области компьютерных наук и в настоящее время собираю данные с аппаратного обеспечения акселерометраНа данный момент я обнаружил, что акселерометры не отправляют события, когда экран выключен, поэтому даже когда я беру блокировку из одной из моих программ, я могу убедиться, что моя программа все еще работает (через вывод LOGcat), но нетсобытие акселерометр выходит.Я должен затемнить свой экран (который я не могу себе позволить, батарея разряжается слишком быстро), чтобы снова начать получать события акселерометра.Я также пытался получить к нему доступ через собственный код C, регистрируя события акселерометра, но результат был тот же, акселерометр не выдавал никаких значений, даже если я вращал свое устройство.Поэтому мне было интересно, смогу ли я иметь прямой доступ к оборудованию с собственным кодом без необходимости регистрироваться в слушателе.Это возможно?Если да, не могли бы вы дать еще один совет?Буду очень признателен за любую помощь!Мартин
За что я получил этот ответ:
Дорогой Мартин, Мы получили ответ от Дев.Команда.Они сказали, что вы не можете получить событие акселерометра, когда экран телефона выключен.Поскольку уровень HAL не реализовал путь sysFS для получения события H / W, такого как акселерометр, и нет открытого API для получения события.Спасибо.С уважением.(Шон Ким)
Затем я отправил электронное письмо обратно, сказав, среди прочего, что я считаю это ошибкой, поскольку при получении wake-блокировки необходимо иметь доступ ко всему оборудованию:
[...] Я задал этот вопрос, потому что у меня есть друзья, у которых также есть телефоны Android с той же версией пряников, но от других марок мобильных телефонов, и некоторые из них сообщили, что получают события от акселерометров, когдаэкран выключен.Я читал на некоторых форумах, что эта ошибка - я считаю ее ошибкой, поскольку, когда я приобрету Wakelock, я ожидаю, что будет происходить некоторая обработка - зависит от драйверов сенсоров, которые поставщики реализуют для своих мобильных телефонов.Это йЕсть ли вероятность того, что эти драйверы могут быть обновлены или эта ошибка будет исправлена в какой-то момент?Это очень помогло бы мне с моей текущей работой [...]
И тогда я получил ответ:
Насколько мне известно от Дев.Команда, это не ошибка.Это безгранично для этого телефона из-за архитектуры H / W.Нам необходимо изменить архитектуру HAL и драйвер устройства для поддержки вашего запроса.Но, как вы знаете, это слишком сложно из-за нехватки ресурсов.Мы пытаемся помочь вам всеми нашими усилиями, но мы не можем поддержать ваш запрос, как я уже упоминал.(Шон Ким)
Так что они, видимо, знают об этом, но не пытаются исправить это, потому что либо не считают это ошибкой - которую я все еще твердо считаю логическим недостатком - либо ониу вас нет времени / ресурсов для его исправления.
Итог Если у вас есть мобильный телефон, который не отправляет события акселерометра с выключенным экраном, попробуйте обновить прошивку.Если это не помогло, и вы действительно хотите сделать серьезный взлом, заново внедрите свой аппаратный уровень - подсказка: это, вероятно, связано с libsensors.so.