Довольно старый вопрос, но я считаю его все еще актуальным. На сегодняшний день страница обзор датчиков в В главе Сенсорная система координат по-прежнему говорится:
Наиболее важным моментом, который нужно понять об этой системе координат, является то, что оси не меняются местами при изменении ориентации экрана устройства, т. е. система координат датчика никогда не меняется при перемещении устройства. Это поведение такое же, как поведение системы координат OpenGL.
Меня эта формулировка все еще сбивает с толку, конечно, это может быть потому, что я не являюсь носителем английского языка.
Насколько я понимаю, в Android (как и в iOS) система координат, принимаемая датчиками, интегрирована с устройством. То есть система координат привязана к устройству и ее оси вращаются вместе с устройством.
Таким образом, для телефона с портретной естественной ориентацией ось Y направлена вверх, когда телефон держится вертикально в портретной ориентации перед пользователем. См. изображение ниже из того же руководства по Android:
Затем, когда пользователь поворачивает телефон в альбомную левую ориентацию (то есть с кнопкой «Домой» справа), ось Y указывает налево. См. изображение ниже из учебника по Matlab. (хотя экран больше не обращен к пользователю):
Также есть часто цитируемый пост из блога разработчиков Android, Один поворот экрана заслуживает другого, в котором говорится:
Система координат датчика, используемая API для естественной ориентации устройства, не меняется при перемещении устройства и совпадает с системой координат OpenGL.
что для меня звучит прямо противоположно моему предыдущему рассуждению. Но опять же, в следующей главе Итак, в чем проблема? вы видите, что когда телефон поворачивается в альбомную лево, ось Y указывает налево, как и в моем предыдущем рассуждении.
person
superjos
schedule
18.05.2020