加速度感測器
阿新 • • 發佈:2018-11-27
一、修改MainActivity檔案
package com.example.yxp.jxol; import android.app.Activity; import android.content.Context; import android.hardware.Sensor; import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.SensorListener; import android.hardware.SensorManager; import android.os.Bundle; import android.util.Log; import java.security.cert.LDAPCertStoreParameters; public class MainActivity extends Activity { private SensorManager manager; private sensorlistener listener; private float[] gravity = new float[3]; private float[] linear_acceleration = new float[3]; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); manager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); Sensor sensor = manager.getDefaultSensor(Sensor.TYPE_ORIENTATION );// 得到加速度感測器 listener = new sensorlistener(); manager.registerListener(listener, sensor, manager.SENSOR_DELAY_UI); // 註冊一個監聽器 } // 監聽器 private class sensorlistener implements SensorEventListener { @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { } @Override public void onSensorChanged(SensorEvent event) { float x = event.values[0]; float y = event.values[1]; float z = event.values[2]; // System.out.println("x:" + x); // System.out.println("y:" + y); // System.out.println("z:" + z); final float alpha = 0.8f; // Isolate the force of gravity with the low-pass filter. gravity[0] = alpha * gravity[0] + (1 - alpha) * event.values[0]; gravity[1] = alpha * gravity[1] + (1 - alpha) * event.values[1]; gravity[2] = alpha * gravity[2] + (1 - alpha) * event.values[2]; // Remove the gravity contribution with the high-pass filter. linear_acceleration[0] = event.values[0] - gravity[0]; linear_acceleration[1] = event.values[1] - gravity[1]; linear_acceleration[2] = event.values[2] - gravity[2]; Log.d("MainActivity", "x:" + linear_acceleration[0]); Log.d("MainActivity", "y:" + linear_acceleration[1]); Log.d("MainActivity", "z:" + linear_acceleration[2]); } } @Override protected void onDestroy() { super.onDestroy(); manager.unregisterListener(listener); listener = null; } }
二、效果