Acelerómetro
Captura de movimiento del dispositivo en la dirección x, y y z.
Métodos
Argumentos
Objetos (sólo lectura)
- Acceleration
Acceso a la función
A partir de la versión 3.0, Cordova implementa nivel de dispositivo APIs como plugins. Utilice el comando plugin de la CLI, descrito en la interfaz de línea de comandos, para añadir o eliminar esta característica para un proyecto:
$ cordova plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-device-motion.git
$ cordova plugin rm org.apache.cordova.core.device-motion
Estos comandos se aplican a todas las plataformas específicas, sino modificar las opciones de configuración específicas de la plataforma que se describen a continuación:
-
Android (en
app/res/xml/config.xml)<feature name="Accelerometer"> <param name="android-package" value="org.apache.cordova.AccelListener" /> </feature> -
BlackBerry WebWorks
(in www/plugins.xml) <feature name="Accelerometer"> <param name="blackberry-package" value="org.apache.cordova.accelerometer.Accelerometer" /> </feature> (in www/config.xml) <feature id="blackberry.system" required="true" version="1.0.0.0" /> <feature id="org.apache.cordova" required="true" version="1.0.0" /> -
(en iOS
config.xml)<feature name="Accelerometer"> <param name="ios-package" value="CDVAccelerometer" /> </feature> -
Windows Phone (en
Properties/WPAppManifest.xml)<Capabilities> <Capability Name="ID_CAP_SENSORS" /> </Capabilities>Referencia: manifiesto de aplicación para Windows Phone
Algunas plataformas que soportan esta característica sin necesidad de ninguna configuración especial. Ver soporte de plataforma para tener una visión general.
accelerometer.getCurrentAcceleration
Tienes la aceleración actual a lo largo de los ejes x, y y z.
navigator.accelerometer.getCurrentAcceleration(accelerometerSuccess, accelerometerError);
Descripción
El acelerómetro es un sensor de movimiento que detecta el cambio (delta) en movimiento con respecto a la orientación actual del dispositivo, en tres dimensiones a lo largo del eje x, y y z.
Estos valores de aceleración son devueltos a la función de devolución de llamada accelerometerSuccess.
Plataformas soportadas
- Android
- BlackBerry WebWorks (OS 5.0 y superiores)
- iOS
- Tizen
- Windows Phone 7 y 8
- Windows 8
Ejemplo rápido
function onSuccess(acceleration) {
alert('Acceleration X: ' + acceleration.x + '\n' +
'Acceleration Y: ' + acceleration.y + '\n' +
'Acceleration Z: ' + acceleration.z + '\n' +
'Timestamp: ' + acceleration.timestamp + '\n');
};
function onError() {
alert('onError!');
};
navigator.accelerometer.getCurrentAcceleration(onSuccess, onError);
Ejemplo completo
<!DOCTYPE html>
<html>
<head>
<title>Acceleration Example</title>
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script type="text/javascript" charset="utf-8">
// Wait for device API libraries to load
//
document.addEventListener("deviceready", onDeviceReady, false);
// device APIs are available
//
function onDeviceReady() {
navigator.accelerometer.getCurrentAcceleration(onSuccess, onError);
}
// onSuccess: Get a snapshot of the current acceleration
//
function onSuccess(acceleration) {
alert('Acceleration X: ' + acceleration.x + '\n' +
'Acceleration Y: ' + acceleration.y + '\n' +
'Acceleration Z: ' + acceleration.z + '\n' +
'Timestamp: ' + acceleration.timestamp + '\n');
}
// onError: Failed to get the acceleration
//
function onError() {
alert('onError!');
}
</script>
</head>
<body>
<h1>Example</h1>
<p>getCurrentAcceleration</p>
</body>
</html>
iOS rarezas
iOS no reconoce el concepto de conseguir la aceleración actual en cualquier momento dado.
Debes ver la aceleración y capturar los datos en determinados intervalos de tiempo.
Por lo tanto, la función
getCurrentAccelerationrinde el último valor informado de una llamadawatchAccelerometer.
accelerometer.watchAcceleration
A intervalos regulares, tienes la aceleración a lo largo del eje x, y y z.
var watchID = navigator.accelerometer.watchAcceleration(accelerometerSuccess,
accelerometerError,
[accelerometerOptions]);
Descripción
El acelerómetro es un sensor de movimiento que detecta el cambio (delta) en movimiento con respecto a la posición actual. El acelerómetro puede detectar movimiento 3D a lo largo del eje z, x y y.
El método accelerometer.watchAcceleration recupera actual del dispositivo aceleración en un intervalo regular, ejecutar la función de devolución de llamada de accelerometerSuccess cada vez. Especificar el intervalo en milisegundos mediante el parámetro de frequency del objeto acceleratorOptions.
El identificador devuelto reloj referencias intervalo de reloj del acelerómetro y puede utilizarse con accelerometer.clearWatch para dejar de ver el acelerómetro.
Plataformas soportadas
- Android
- BlackBerry WebWorks (OS 5.0 y superiores)
- iOS
- Tizen
- Windows Phone 7 y 8
- Windows 8
Ejemplo rápido
function onSuccess(acceleration) {
alert('Acceleration X: ' + acceleration.x + '\n' +
'Acceleration Y: ' + acceleration.y + '\n' +
'Acceleration Z: ' + acceleration.z + '\n' +
'Timestamp: ' + acceleration.timestamp + '\n');
};
function onError() {
alert('onError!');
};
var options = { frequency: 3000 }; // Update every 3 seconds
var watchID = navigator.accelerometer.watchAcceleration(onSuccess, onError, options);
Ejemplo completo
<!DOCTYPE html>
<html>
<head>
<title>Acceleration Example</title>
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script type="text/javascript" charset="utf-8">
// The watch id references the current `watchAcceleration`
var watchID = null;
// Wait for device API libraries to load
//
document.addEventListener("deviceready", onDeviceReady, false);
// device APIs are available
//
function onDeviceReady() {
startWatch();
}
// Start watching the acceleration
//
function startWatch() {
// Update acceleration every 3 seconds
var options = { frequency: 3000 };
watchID = navigator.accelerometer.watchAcceleration(onSuccess, onError, options);
}
// Stop watching the acceleration
//
function stopWatch() {
if (watchID) {
navigator.accelerometer.clearWatch(watchID);
watchID = null;
}
}
// onSuccess: Get a snapshot of the current acceleration
//
function onSuccess(acceleration) {
var element = document.getElementById('accelerometer');
element.innerHTML = 'Acceleration X: ' + acceleration.x + '<br />' +
'Acceleration Y: ' + acceleration.y + '<br />' +
'Acceleration Z: ' + acceleration.z + '<br />' +
'Timestamp: ' + acceleration.timestamp + '<br />';
}
// onError: Failed to get the acceleration
//
function onError() {
alert('onError!');
}
</script>
</head>
<body>
<div id="accelerometer">Waiting for accelerometer...</div>
</body>
</html>
iOS rarezas
La API llama a la función de devolución de llamada de éxito en el intervalo solicitado, pero restringe la gama de solicitudes para el dispositivo entre 40ms y 1000ms. Por ejemplo, si usted solicita un intervalo de 3 segundos, (3000ms), la API pide datos desde el dispositivo cada 1 segundo, pero sólo ejecuta el callback de éxito cada 3 segundos.
accelerometer.clearWatch
Deja de mirar la aceleración al que hace referencia el parámetro watchID.
navigator.accelerometer.clearWatch(watchID);
-
watchID: el identificador devuelto por
accelerometer.watchAcceleration.
Plataformas soportadas
- Android
- BlackBerry WebWorks (OS 5.0 y superiores)
- iOS
- Tizen
- Windows Phone 7 y 8
- Windows 8
Ejemplo rápido
var watchID = navigator.accelerometer.watchAcceleration(onSuccess, onError, options);
// ... later on ...
navigator.accelerometer.clearWatch(watchID);
Ejemplo completo
<!DOCTYPE html>
<html>
<head>
<title>Acceleration Example</title>
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script type="text/javascript" charset="utf-8">
// The watch id references the current `watchAcceleration`
var watchID = null;
// Wait for device API libraries to load
//
document.addEventListener("deviceready", onDeviceReady, false);
// device APIs are available
//
function onDeviceReady() {
startWatch();
}
// Start watching the acceleration
//
function startWatch() {
// Update acceleration every 3 seconds
var options = { frequency: 3000 };
watchID = navigator.accelerometer.watchAcceleration(onSuccess, onError, options);
}
// Stop watching the acceleration
//
function stopWatch() {
if (watchID) {
navigator.accelerometer.clearWatch(watchID);
watchID = null;
}
}
// onSuccess: Get a snapshot of the current acceleration
//
function onSuccess(acceleration) {
var element = document.getElementById('accelerometer');
element.innerHTML = 'Acceleration X: ' + acceleration.x + '<br />' +
'Acceleration Y: ' + acceleration.y + '<br />' +
'Acceleration Z: ' + acceleration.z + '<br />' +
'Timestamp: ' + acceleration.timestamp + '<br />';
}
// onError: Failed to get the acceleration
//
function onError() {
alert('onError!');
}
</script>
</head>
<body>
<div id="accelerometer">Waiting for accelerometer...</div>
<button onclick="stopWatch();">Stop Watching</button>
</body>
</html>
Aceleración
Contiene data del Accelerometer capturada en un punto específico en el tiempo.
Propiedades
- x: Cantidad de aceleración en el eje X. (en m/s^2) (Number)
- y: Cantidad de aceleración en el eje Y. (en m/s^2) (Number)
- z: Cantidad de aceleración en el eje Z. (en m/s^2) (Number)
- timestamp: Timestamp de la captura en milisegundos. (DOMTimeStamp)
Descripción
Un objeto del tipo Acceleration se rellena y es devuelto por cualquiera de los métodos de la API Accelerometer. Los valores de aceleración incluyen el efecto de la gravedad (9.81 m/s^2), así que cuando un dispositivo esta en posición horizontal con la pantalla hacia arriba, los valores x, y, y z devueltos serían ,, y 9.81.
Plataformas soportadas
- Android
- BlackBerry WebWorks (OS 5.0 y superiores)
- iOS
- Tizen
- Windows Phone 7 y 8
- Windows 8
Ejemplo rápido
function onSuccess(acceleration) {
alert('Acceleration X: ' + acceleration.x + '\n' +
'Acceleration Y: ' + acceleration.y + '\n' +
'Acceleration Z: ' + acceleration.z + '\n' +
'Timestamp: ' + acceleration.timestamp + '\n');
};
function onError() {
alert('onError!');
};
navigator.accelerometer.getCurrentAcceleration(onSuccess, onError);
Ejemplo completo
<!DOCTYPE html>
<html>
<head>
<title>Acceleration Example</title>
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script type="text/javascript" charset="utf-8">
// Wait for device API libraries to load
//
document.addEventListener("deviceready", onDeviceReady, false);
// device APIs are available
//
function onDeviceReady() {
navigator.accelerometer.getCurrentAcceleration(onSuccess, onError);
}
// onSuccess: Get a snapshot of the current acceleration
//
function onSuccess(acceleration) {
alert('Acceleration X: ' + acceleration.x + '\n' +
'Acceleration Y: ' + acceleration.y + '\n' +
'Acceleration Z: ' + acceleration.z + '\n' +
'Timestamp: ' + acceleration.timestamp + '\n');
}
// onError: Failed to get the acceleration
//
function onError() {
alert('onError!');
}
</script>
</head>
<body>
<h1>Example</h1>
<p>getCurrentAcceleration</p>
</body>
</html>
accelerometerSuccess
onSuccess función callback que proporciona la información de Acceleration.
function(acceleration) {
// Do something
}
Parámetros
- acceleration: la aceleración en un momento único. (Aceleración)
Ejemplo
function onSuccess(acceleration) {
alert('Acceleration X: ' + acceleration.x + '\n' +
'Acceleration Y: ' + acceleration.y + '\n' +
'Acceleration Z: ' + acceleration.z + '\n' +
'Timestamp: ' + acceleration.timestamp + '\n');
};
accelerometerError
función de devolución de llamada onError para las funciones de aceleración.
function() {
// Handle the error
}
accelerometerOptions
Un parámetro opcional para personalizar la recuperación de los valores del acelerómetro.
Opciones
-
frequency: ¿Con qué frecuencia se debe recuperar el
Accelerationen milisegundos. (Número) (por defecto: 10000)