Да, можно получить фактическое расстояние от поверхности телефона.
Фактически ВСЕ аппаратные датчики действительно предоставляют эту информацию.Но, к сожалению, API-интерфейс датчика, определенный в Android, определяет близость к логическому значению, т. Е. NEAR (1) ИЛИ FAR (0).
Чтобы получить логическое значение для реального расстояния, расстояние, полученное от оборудования датчика приближениясравнивается с пороговым значением.Это часто делается в сенсоре-HAL.
Кроме того, некоторые аппаратные ИС датчика освещенности / приближения сами по себе обеспечивают логическую близость.В этом случае порог настраивается аппаратно.Аппаратное обеспечение сравнивает каждую выборку, полученную с пороговым значением, внутренне, а затем сообщает логическое «близость».
Независимо от типа используемого сенсорного оборудования, Android (до версии 4.1 «jelly-bean»)НЕ выставляет параметр расстояния приближения как часть его API датчика .Можно изменить датчик-HAL или попытаться напрямую взаимодействовать с драйвером датчика приближения (обычно это запись sys-fs).
Подробнее о Датчик освещенности / приближения на Android .