Accelerometer
Captura el movimiento del dispositivo sobre los ejes x, y, z.
Métodos
Argumentos
Objetos (Solo lectura)
accelerometer.getCurrentAcceleration
Obtiene la aceleración actual sobre los ejes x, y, z.
navigator.accelerometer.getCurrentAcceleration(accelerometerSuccess, accelerometerError);
Descripción
El acelerómetro es un sensor de movimiento que detecta los movimientos relativos a la actual orientación del dispositivo (la diferencia). El acelerómetro puede detectar movimiento 3D sobre los ejes x, y, z.
La aceleración se obtiene mediante la función 'callback' accelerometerSuccess
.
Plataformas Soportadas
- Android
- BlackBerry WebWorks (OS 5.0 y superior)
- iPhone
Ejemplo Rápido
function onSuccess(acceleration) {
alert('Aceleración X: ' + acceleration.x + '\n' +
'Aceleración Y: ' + acceleration.y + '\n' +
'Aceleración Z: ' + acceleration.z + '\n' +
'Timestamp: ' + acceleration.timestamp + '\n');
};
function onError() {
alert('onError!');
};
navigator.accelerometer.getCurrentAcceleration(onSuccess, onError);
Ejemplo Completo
<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de Acceleration</title>
<script type="text/javascript" charset="utf-8" src="phonegap.js"></script>
<script type="text/javascript" charset="utf-8">
// Espera a que PhoneGap se inicie
//
document.addEventListener("deviceready", onDeviceReady, false);
// PhoneGap esta listo
//
function onDeviceReady() {
navigator.accelerometer.getCurrentAcceleration(onSuccess, onError);
}
// onSuccess: Obtiene el resultado
//
function onSuccess(acceleration) {
alert('Aceleración X: ' + acceleration.x + '\n' +
'Aceleración Y: ' + acceleration.y + '\n' +
'Aceleración Z: ' + acceleration.z + '\n' +
'Timestamp: ' + acceleration.timestamp + '\n');
}
// onError: Ocurrio un error
//
function onError() {
alert('onError!');
}
</script>
</head>
<body>
<h1>Ejemplo</h1>
<p>getCurrentAcceleration</p>
</body>
</html>
Peculiaridades en iPhone
- iPhone no soporta obtener la aceleración exacta en un preciso momento.
- Debes estar muy atento a la aceleración y la captura de los datos en cada intervalo.
- Porque
getCurrentAcceleration
simplemente proporciona el ultimo valor que se obtuvo en la llamadawatchAccelerometer
.
accelerometer.watchAcceleration
Obtiene la aceleración de los ejes x, y, z, cada un cierto intervalo de tiempo.
var watchID = navigator.accelerometer.watchAcceleration(accelerometerSuccess,
accelerometerError,
[accelerometerOptions]);
Descripción
El acelerómetro es un sensor de movimiento que detecta cambios en el movimiento relativa a la posición actual (la diferencia). El acelerómetro puede detectar movimiento 3D sobre los ejes x, y, z
La función accelerometer.watchAcceleration
crea un visor que se encarga de observar la aceleración cada ciertos intervalos de tiempo. Cada vez que el visor de aceleración obtiene la aceleración, la función accelerometerSuccess
se disparara. Puedes especificar el intervalo (milisegundos) en la opción frequency
del objeto acceleratorOptions
.
Esta función retorna un identificador que referencia a este visor de aceleración, puedes usarlo en la función clearWatch
para detenerlo.
Plataformas Soportadas
- Android
- BlackBerry WebWorks (OS 5.0 y superior)
- iPhone
Ejemplo Rápido
function onSuccess(acceleration) {
alert('Aceleración X: ' + acceleration.x + '\n' +
'Aceleración Y: ' + acceleration.y + '\n' +
'Aceleración Z: ' + acceleration.z + '\n' +
'Timestamp: ' + acceleration.timestamp + '\n');
};
function onError() {
alert('onError!');
};
var options = { frequency: 3000 }; // Actualizar cada 3 segundos
var watchID = navigator.accelerometer.watchAcceleration(onSuccess, onError, options);
Ejemplo Completo
<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de Acceleration</title>
<script type="text/javascript" charset="utf-8" src="phonegap.js"></script>
<script type="text/javascript" charset="utf-8">
// El identificador del visor de aceleracion `watchAcceleration`
var watchID = null;
// Espera a que PhoneGap se inicie
//
document.addEventListener("deviceready", onDeviceReady, false);
// PhoneGap esta listo
//
function onDeviceReady() {
startWatch();
}
// Empieza a observar la aceleracion
//
function startWatch() {
// Actualizar cada 3 segundos
var options = { frequency: 3000 };
watchID = navigator.accelerometer.watchAcceleration(onSuccess, onError, options);
}
// Dejar de observar la aceleracion
//
function stopWatch() {
if (watchID) {
navigator.accelerometer.clearWatch(watchID);
watchID = null;
}
}
// onSuccess: Obtiene el resultado
//
function onSuccess(acceleration) {
var element = document.getElementById('accelerometer');
element.innerHTML = 'Aceleracion X: ' + acceleration.x + '<br />' +
'Aceleración Y: ' + acceleration.y + '<br />' +
'Aceleración Z: ' + acceleration.z + '<br />' +
'Timestamp: ' + acceleration.timestamp + '<br />';
}
// onError: Ocurrio un error
//
function onError() {
alert('onError!');
}
</script>
</head>
<body>
<div id="accelerometer">Esperando al acelerómetro...</div>
</body>
</html>
Peculiaridades iPhone
- En cada intervalo de tiempo, PhoneGap llamara a la función onSuccess y le pasara los resultados del acelerómetro.
- Sin embargo, PhoneGap restringe el intervalo a un mínimo de 40ms y un máximo de 1000ms.
- Por ejemplo, si solicitas un intervalo de 3 segundos (3000ms), PhoneGap automáticamente obtendrá la aceleración cada 1 segundo, pero llamara a la función onSuccess cada 3 segundos.
accelerometer.clearWatch
Detiene el visor de aceleración con el watchID
especificado.
navigator.accelerometer.clearWatch(watchID);
-
watchID: El identificador del visor de aceleración
watchAcceleration
que quieres detener.
Plataformas Soportadas
- Android
- BlackBerry WebWorks (OS 5.0 y superior)
- iPhone
Ejemplo Rápido
var watchID = navigator.accelerometer.watchAcceleration(onSuccess, onError, options);
// ... mas tarde ...
navigator.accelerometer.clearWatch(watchID);
Ejemplo Completo
<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de Acceleration</title>
<script type="text/javascript" charset="utf-8" src="phonegap.js"></script>
<script type="text/javascript" charset="utf-8">
// El identificador del visor de aceleración a detener
var watchID = null;
// Espera a que PhoneGap se inicie
//
document.addEventListener("deviceready", onDeviceReady, false);
// PhoneGap esta listo
//
function onDeviceReady() {
startWatch();
}
// Empieza a observar la aceleración
//
function startWatch() {
// Actualiza cada 3 segundos
var options = { frequency: 3000 };
watchID = navigator.accelerometer.watchAcceleration(onSuccess, onError, options);
}
// Deja de observar la aceleración
//
function stopWatch() {
if (watchID) {
navigator.accelerometer.clearWatch(watchID);
watchID = null;
}
}
// onSuccess: Obtiene el resultado de la aceleración actual
//
function onSuccess(acceleration) {
var element = document.getElementById('accelerometer');
element.innerHTML = 'Aceleración X: ' + acceleration.x + '<br />' +
'Aceleración Y: ' + acceleration.y + '<br />' +
'Aceleración Z: ' + acceleration.z + '<br />' +
'Timestamp: ' + acceleration.timestamp + '<br />';
}
// onError: Fallo al obtener la aceleración
//
function onError() {
alert('onError!');
}
</script>
</head>
<body>
<div id="accelerometer">Esperando al acelerómetro...</div>
<button onclick="stopWatch();">Detener el visor</button>
</body>
</html>
Acceleration
Obtiene información actual sobre el sensor de movimiento.
Atributos
-
x: Valor de movimiento en el eje X. Rango [0, 1] (
Number
) -
y: Valor de movimiento en el eje Y. Rango [0, 1] (
Number
) -
z: Valor de movimiento en el eje Z. Rango [0, 1] (
Number
) -
timestamp: Timestamp de cuando se obtuvo (milisegundos). (
DOMTimeStamp
)
Descripción
Este objeto es creado y compuesto por PhoneGap, luego es retornado por el metodo Accelerometer
.
Plataformas Soportadas
- Android
- BlackBerry WebWorks (OS 5.0 y superior)
- iPhone
Ejemplo Rapido
function onSuccess(acceleration) {
alert('Aceleración X: ' + acceleration.x + '\n' +
'Aceleración Y: ' + acceleration.y + '\n' +
'Aceleración Z: ' + acceleration.z + '\n' +
'Timestamp: ' + acceleration.timestamp + '\n');
};
function onError() {
alert('onError!');
};
navigator.accelerometer.getCurrentAcceleration(onSuccess, onError);
Ejemplo Completo
<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de Acceleration</title>
<script type="text/javascript" charset="utf-8" src="phonegap.js"></script>
<script type="text/javascript" charset="utf-8">
// Espera a que Phonegap se inicie
//
document.addEventListener("deviceready", onDeviceReady, false);
// PhoneGap esta listo
//
function onDeviceReady() {
navigator.accelerometer.getCurrentAcceleration(onSuccess, onError);
}
// onSuccess: Obtiene el resultado
//
function onSuccess() {
alert('Aceleración X: ' + acceleration.x + '\n' +
'Aceleración Y: ' + acceleration.y + '\n' +
'Aceleración Z: ' + acceleration.z + '\n' +
'Timestamp: ' + acceleration.timestamp + '\n');
}
// onError: Ocurrió un error
//
function onError() {
alert('onError!');
}
</script>
</head>
<body>
<h1>Ejemplo</h1>
<p>getCurrentAcceleration</p>
</body>
</html>
accelerometerSuccess
Función 'callback' onSuccess que proporciona información sobre la aceleración.
function(acceleration) {
// Hacer algo...
}
Argumentos
- acceleration: La aceleración actual. (Aceleración)
Ejemplo
function onSuccess(acceleration) {
alert('Aceleración X: ' + acceleration.x + '\n' +
'Aceleración Y: ' + acceleration.y + '\n' +
'Aceleración Z: ' + acceleration.z + '\n' +
'Timestamp: ' + acceleration.timestamp + '\n');
};
accelerometerError
Funcion 'callback' onError para las funciones de aceleración.
function() {
// Maneja el error
}
accelerometerOptions
Este argumento es opcional y sirve para personalizar la obtención del acelerómetro.
Opciones
-
frequency: Cada cuantos milisegundos obtener la aceleración (
Acceleration
). (Number) (Por defecto: 10000)