English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Análisis de la aplicación de aplicaciones con sensación de gravedad en programación de Android

Este artículo proporciona un ejemplo de programación en Android para la aplicación de detección de gravedad. Lo compartimos con todos para su referencia, y se detalla a continuación:

La detección de gravedad se realiza principalmente mediante el sensor de aceleración del teléfono (acelerómetro)

En el desarrollo de Android hay un total de ocho tipos de sensores, pero no todos los dispositivos físicos pueden soportar estos sensores. Debido a que muchos usuarios no prestan atención a ciertas funciones, los desarrolladores pueden deshabilitar ciertas características. Aún así, se debe desarrollar según la situación real del dispositivo físico. A continuación, se discutirá principalmente la implementación específica del sensor de aceleración, y el nombre del sensor es el siguiente:








1

2

public void onSensorChanged(SensorEvent e) {
  float x = e.values[SensorManager.DATA_X];
  float y = e.values[SensorManager.DATA_Y];
  float z = e.values[SensorManager.DATA_Z];
};

3-1010“ entre. A continuación

(1“) La pantalla del teléfono está colocada hacia la izquierda10“

(2-10“

(3“) La pantalla del teléfono está colocada verticalmente10,

(4-10,

(5“) La pantalla del teléfono está apoyada hacia arriba10);

(6)(La pantalla del teléfono está hacia arriba, el eje Z apunta hacia el suelo, colocada horizontalmente, en este momento, el eje X e Y no tienen componentes de gravedad, porque el eje Z apunta hacia el suelo, por lo que su componente de gravedad es el más pequeño. En este momento, los valores de las componentes de gravedad en los ejes X, Y, Z son (0, 0,-10)

3. Registro de SensorEventListener

Se utiliza el método getDefaultSensor(Sensor.TYPE_ACCELEROMETER) de SensorMannager para obtener el objeto Sensor de detección de aceleración gravitacional. Porque estoy discutiendo el sensor de aceleración gravitacional, el parámetro es Sensor.TYPE_ACCELEROMETER. Si se necesita obtener otros sensores, se debe ingresar el nombre correspondiente. Se utiliza el método registerListener() de SensorMannager para registrarse, el tercer parámetro es la precisión de detección, se debe elegir la precisión según las necesidades diferentes, se recomienda usar SensorManagerSENSOR_DELAY_ GAME en el desarrollo de juegos.

4 . Forma simple de cálculo de velocidad de detección de gravedad

Cada vez que se sacude el teléfono, se calculan las componentes de gravedad en el eje X, Y y Z, que se pueden registrar. Luego, se puede hacer una comparación entre las componentes de gravedad de cada sacudida y las componentes de gravedad anteriores, utilizando la diferencia y el tiempo para calcular la velocidad de movimiento.

El dispositivo de detección de gravedad incluye tres partes: el sensor, el procesador y el controlador. El sensor es responsable de detectar el estado de la memoria y calcular el valor de aceleración gravitacional de la memoria; el procesador juzga si el valor de aceleración está fuera del rango seguro; y el controlador es responsable de controlar el bloqueo o liberación del cabezal magnético en el área de estacionamiento seguro. Una vez que el sensor detecta y el procesador juzga que la aceleración gravitacional actual está por encima del valor seguro, el controlador detendrá el trabajo de lectura y escritura del cabezal magnético a través del control de hardware y se reposicionará rápidamente, bloqueándose en el área de estacionamiento del cabezal específica. Esta serie de acciones se llevará a cabo200 milisegundos se completa. Cuando el dispositivo de detección detecta que el valor de aceleración se recupera al rango normal, el producto comenzará a funcionar nuevamente.

El código del framework de multimedia de Android se encuentra en los siguientes directorios: external/opencore/. Esta carpeta es el directorio raíz del framework de multimedia de Android, que contiene los subdirectorios siguientes:

* android: Aquí hay una biblioteca de nivel superior, que se basa en el SDK de PVPlayer y PVAuthor para implementar un Player y Author para Android
* baselibs: Contiene bibliotecas de bajo nivel que incluyen estructuras de datos y seguridad en hilos
* codecs_v2: Esta es una biblioteca con mucho contenido, principalmente contiene la implementación de codecs y una implementación de OpenMAX
* engines: Implementación de los motores PVPlayer y PVAuthor
*extern_libs_v2: 包含了 khronos 的 OpenMAX 的头文件
*fileformats: 文件格式的据具体解析(parser)类
* nodes: 编解码和文件解析的各个 node 类
* oscl: 操作系统兼容库
* pvmi: 输入输出控制的抽象接口
* protocols: 主要是与网络相关的 RTSP、RTP、HTTP 等协议的相关内容
* pvcommon: pvcommon 库文件的 Android.mk 文件,没有源文件
*pvplayer: pvplayer 库文件的 Android.mk 文件,没有源文件
* pvauthor: pvauthor 库文件的 Android.mk 文件,没有源文件
* tools_v2:编译工具以及一些可注册的模块

以下是部分测试代码:

private SensorManager sensorMgr;
Sensor sensor = sensorMgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
//保存上一次 x y z 的坐标
float bx = 0;
float by = 0;
float bz = 0;
long btime = 0;//这一次的时间
sensorMgr = (SensorManager) getSystemService(SENSOR_SERVICE);
SensorEventListener lsn = new SensorEventListener() {
  public void onSensorChanged(SensorEvent e) {
    float x = e.values[SensorManager.DATA_X];
    float y = e.values[SensorManager.DATA_Y];
    float z = e.values[SensorManager.DATA_Z];
    //计算出 X Y Z的数值下面可以根据这个数值来计算摇晃的速度了
    //速度 = 路程/时间
    //X轴的速度
    float speadX = (x - bx) / (System.currentTimeMillis() - btime);
    //y轴的速度
    float speadY = (y - by) / (System.currentTimeMillis() - btime);
    //z轴的速度
    float speadZ = (z - bz) / (System.currentTimeMillis() - btime);
    //así se puede calcular esta velocidad simple, si quieres calcular la aceleración también, en la mecánica de movimiento, la aceleración a está relacionada con la velocidad
    //la distancia tienen relación: Vt=V0+at,S=V0*t+1/2at^2, S=(Vt^2-V0^2)/(2a), también se puede resolver a según esta información
    bx = x;
    by = y;
    bz = z;
    btime = System.currentTimeMillis();
  };
  public void onAccuracyChanged(Sensor s, int accuracy) {
  };
};
// Registrar listener, el tercer parámetro es la precisión de detección
sensorMgr.registerListener(lsn, sensor, SensorManager.SENSOR_DELAY_GAME);

Los lectores interesados en más contenido relacionado con Android pueden ver la sección especial de este sitio: 'Introducción y tutorial avanzado de desarrollo de Android', 'Resumen de técnicas de vista View de Android', 'Resumen de técnicas de operación de activity en Android', 'Resumen de técnicas de operación de base de datos SQLite en Android', 'Resumen de técnicas de operación de datos en formato JSON en Android', 'Resumen de técnicas de operación de base de datos en Android', 'Resumen de técnicas de operación de archivos en Android', 'Resumen de métodos de operación de tarjeta SD en desarrollo de Android', 'Resumen de técnicas de operación de recursos en Android' y 'Resumen de uso de controles en Android'

Espero que lo descrito en este artículo pueda ayudar a todos en el diseño de programas Android.

Declaración: El contenido de este artículo se obtiene de la red, es propiedad del autor original, el contenido se contribuye y carga de manera autónoma por los usuarios de Internet, este sitio no posee los derechos de propiedad, no se ha realizado un procesamiento editorial humano y no asume ninguna responsabilidad legal relacionada. Si encuentra contenido sospechoso de infracción de derechos de autor, por favor envíe un correo electrónico a: notice#oldtoolbag.com (al enviar un correo electrónico, reemplace # con @ para denunciar y proporcione evidencia. Una vez verificada, este sitio eliminará inmediatamente el contenido sospechoso de infracción de derechos de autor.)

Te gustará