Существует четыре предопределенных способов перемещения устройства:
Это событие наблюдается в том случае, если по какой-либо части устройства постучать два раза. Нажатие регистрируется с помощью датчика ускорения, поэтому неважно по какой части устройства стучать.
(рис 24.1) Событие двойное нажатие
Это событие происходит, когда устройство быстро перемещается несколько раз вперед-назад. Встряска может продолжаться долгое время. Начало и конец встряски воспринимаются как два отдельных события.
(рис 24.2) Событие встряска
Данное событие происходит в тех случаях, когда устройство перемещается вдоль одной из осей туда и обратно, как показано на рисунке.
(рис 24.3) Оси устройства
Эти перемещения идентифицируются как шесть дискретных событий: +X, -X, +Y, -Y, +Z, и -Z.
Когда дисплей находится в режиме портрета активны лишь захваты +X, -X, +Z, и –Z.
Когда дисплей находится в режиме ландшафта активны лишь захваты +Y, -Y, +Z, и -Z.
На следующем рисунке показаны различные события Snap (захват).
(рис 24.4) События захвата +X, +Y и +Z
Это событие происходит, когда пользователь перемещает устройство для выполнения вызова или при выполнении жеста, активирующего функцию, просмотра веб-страниц. Событие "Движение к уху" обнаруживается с помощью датчиков ускорения и близости.
(рис 24.5) Событие "Движение к уху"
Сенсор ускорения измеряет изменение скорости. Его также можно использовать для определения ориентации. Сенсор ускорения измеряет вектор ускорения устройства в трех плоскостях относительно рамки корпуса.
Замечание
Сдвиг ускорения на 1g всегда присутствует вследствие гравитации.
Для того чтобы обнаружить движение устройства необходимо компенсировать гравитационное притяжение Земли, путем вычитания смещения гравитации. Если устройство находится в состоянии покоя, или устройство падает и достигает предельной скорости, сенсор считает 1g (смещение гравитации) и указывает направление силы тяжести.
(рис 24.6) Датчик ускорения предоставляет 3 компонента ускорения (X, Y, Z)
Сенсор ускорения выдает четыре величины: три значения по декартовым осям координат и метку времени. Сенсор ускорения измеряет и возвращает значения в величинах g (гравитация). Если устройство ускоряется в направлении осей ±X, ±Y, или ±Z, то соответствующие значения или возрастают (+), или убывают (-).
В следующей таблице показаны данные, предоставляемые сенсором ускорения.
| Параметр | Тип | Диапазон | Единица измерения |
|---|---|---|---|
| Метка времени | long | - | Миллисекунды |
| X | float | Min. value = -2 Max. value = 2 | g |
| Y | Float | Min. value = -2 Max. value = 2 | g |
| Z | float | Min. value = -2 Max. value = 2 | g |
В следующей таблице дается информация о выходных данных сенсора ускорения для покоящегося устройства.
| Положение | 1 | 2 | 3 | 4 | 5 | 6 |
|---|---|---|---|---|---|---|
| Диаграмма | ![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
| X | 0g | 1g | 0g | -1g | 0g | 0g |
| Y | 1g | 0g | -1g | 0g | 0g | 0g |
| Z | 0g | 0g | 0g | 0g | 1g | -1g |
| Ось вверх(вниз) | Y | X | –Y | –X | Z | -Z |
| Полярность-X | 0 | + | 0 | – | 0 | 0 |
| Полярность-Y | + | 0 | - | 0 | 0 | 0 |
| Полярность-Z | 0 | 0 | 0 | + | - |
При разработке нативных приложений для получения доступа к сенсорам можно использовать класс ).
Создадим базовое веб-приложение Acceleration1.
(рис 24.7)
В файле index.html введем следующий код.
<DOCTYPE html>
<html>
<head>
<script>
function init() {
//Find our div containers in the DOM
var dataContainerOrientation = document.getElementById('dataContainerOrientation');
var dataContainerMotion = document.getElementById('dataContainerMotion');
//Check for support for DeviceOrientation event
if(window.DeviceOrientationEvent) {
window.addEventListener('deviceorientation', function(event) {
var alpha = event.alpha;
var beta = event.beta;
var gamma = event.gamma;
if(alpha!=null || beta!=null || gamma!=null)
dataContainerOrientation.innerHTML = 'alpha: ' + alpha + '<br/>beta: ' + beta + '<br />gamma: ' + gamma;
}, false);
}
// Check for support for DeviceMotion events
if(window.DeviceMotionEvent) {
window.addEventListener('devicemotion', function(event) {
var x = event.accelerationIncludingGravity.x;
var y = event.accelerationIncludingGravity.y;
var z = event.accelerationIncludingGravity.z;
var r = event.rotationRate;
var html = 'Acceleration:<br />';
html += 'x: ' + x +'<br />y: ' + y + '<br/>z: ' + z+ '<br />';
html += 'Rotation rate:<br />';
if(r!=null) html += 'alpha: ' + r.alpha +'<br />beta: ' + r.beta + '<br/>gamma: ' + r.gamma + '<br />';
dataContainerMotion.innerHTML = html;
});
}
}
</script>
</head>
<body onload="init()">
<div id="dataContainerOrientation">
No device orientation data
</div>
<div id="dataContainerMotion">
No device motion data
</div>
</body>
</html>
Запустим проект. Обратите внимание, что в левой части эмулятора имеется возможность управлять положением устройства. Попробуйте регулировать положение телефона в пространстве.
(рис 24.8)
<DOCTYPE html>
<html>
<head>
<style>
#compassContainer{
width:100%;
transform-origin: 50% 50%;
-webkit-transform-origin: 50% 50%;
-moz-transform-origin: 50% 50%;
}
</style>
<script>
function init() {
var compass = document.getElementById('compassContainer');
if(window.DeviceOrientationEvent) {
window.addEventListener('deviceorientation', function(event) {
var dir='';
var alpha;
//Check for iOS property
if(event.webkitCompassHeading) {
alpha = event.webkitCompassHeading;
//Direction is reversed for iOS
dir='-';
}
else alpha = event.alpha;
compass.style.Transform = 'rotate(' + alpha + 'deg)';
compass.style.WebkitTransform = 'rotate('+dir + alpha + 'deg)';
compass.style.MozTransform = 'rotate(-' + alpha + 'deg)';
} , false);
}
}
</script>
</head>
<body onload="init()">
<div id="compassContainer1">
<img src="./images/compass5.png" id="compassContainer"/>
</div>
</body>
</html>
(рис 24.9)
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.