Нужно знать, находится ли телефон ДАЛЕКО или БЛИЗКО от уха пользователя во время разговора

Я хочу отслеживать положение телефона, пока пользователь разговаривает по телефону. Я не хочу прописывать для него датчик приближения, потому что он избыточен, и я не хочу считать расход батареи этого датчика на себе, система все равно использует датчик приближения при начале звонка.

Мой вопрос заключается в том, как я могу получить положение («далеко»/«близко» в терминологии журналов Android) телефона относительно уха пользователя?

Спасибо Буш


person Bush    schedule 05.09.2012    source источник
comment
как только вы регистрируете датчик, система подсчитывает время работы датчика в вашем приложении (независимо от того, что оно уже открыто другим приложением - проверено и проверено), а датчики - довольно тяжелые потребители. Я хочу, чтобы процент потребления батареи моим приложением был ниже Я могу.   -  person Bush    schedule 05.09.2012
comment
Если стандартное телефонное приложение не имеет API, позволяющего вам получить доступ к данным датчика приближения, я не думаю, что вы сможете получить информацию без регистрации слушателя...   -  person Sam    schedule 05.09.2012


Ответы (1)


Насколько мне известно, датчик приближения — лучший способ проверить расстояние от лица пользователя.

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

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

person Raghav Sood    schedule 05.09.2012
comment
спасибо Raghav, но мне не нужно расстояние, мне нужно только знать, когда Android считает расстояние «дальним» или «близким», Android делает это со мной или без меня.. Я не копался в их алгоритме, и я не хочу .. Я просто хочу доверять им и уведомлять меня, когда они рассматривают расстояние как далекое и близкое .. - person Bush; 05.09.2012
comment
Тогда можно просто использовать датчик приближения. Расход батареи не очень большой. Если это не вариант, вы должны найти способ проверить, включен ли экран в данный момент. Поскольку Android отключает его во время звонков, когда телефон находится рядом, проверка этого должна дать вам местоположение. - person Raghav Sood; 05.09.2012