android加速度
『壹』 利用Android的加速度感測器開發計步器時遇到的問題
沒有研究過步行時候加速度的變化,加速度方向肯定只有一個,但用三個方向表示
SersorEvent.values中三個值放到坐標繫上就能得到這個方向,貌似得用到高中數學啊,忘記了
『貳』 最近看android的感測器,想把手機坐標上的三個方向的加速度轉換成相對於地面的加速度
你先算出地球坐標系和手機坐標系之間的旋轉角度(getRotationMatrix和getOrientation)可以獲取到。然後根據手機獲取到的相對於手機坐標系的加速度值經過旋轉矩陣計算獲取到地球坐標系中的坐標值。
參見http://blog.csdn.net/godfrey90/article/details/6009135
『叄』 android加速度感測器怎麼使用
使用加速度感測器與其他感測器的方法大致相同,通過調用系統API就可以實現。分為以下幾步:
1.獲取SensorManager
2.使用SensorManager獲取加速度感測器
3.創建自定義的感測器監聽函數,並注冊
4.相對應的,在合適位置實現注銷監聽器的調用
簡單的代碼如下:
public class MainActivity extends Activity {
private static final String TAG = "SensorTest";
private SensorManager mSensorManager;
private Sensor mAccelerometer;
private TestSensorListener mSensorListener;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initViews();
// 初始化感測器
mSensorListener = new TestSensorListener();
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
}
@Override
protected void onResume() {
super.onResume();
// 注冊感測器監聽函數
mSensorManager.registerListener(mSensorListener, mAccelerometer, SensorManager.SENSOR_DELAY_UI);
}
@Override
protected void onPause() {
super.onPause();
// 注銷監聽函數
mSensorManager.unregisterListener(mSensorListener);
}
private void initViews() {
mSensorInfoA = (TextView) findViewById(R.id.sensor_info_a);
}
class TestSensorListener implements SensorEventListener {
@Override
public void onSensorChanged(SensorEvent event) {
// 讀取加速度感測器數值,values數組0,1,2分別對應x,y,z軸的加速度
Log.i(TAG, "onSensorChanged: " + event.values[0] + ", " + event.values[1] + ", " + event.values[2]);
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
Log.i(TAG, "onAccuracyChanged");
}
}
}
『肆』 android加速度感測器怎麼去除重力的影響
如果手機需要在隨意狀態都去除的就需要做加速度值各方向的分量減除的,如果只是平行或者垂直放置就不需要了。只是要求分量會比較復雜一些。
加速度感測器是一種能夠測量加速力的電子設備。加速力就是當物體在加速過程中作用在物體上的力,就好比地球引力,也就是重力。加速力可以是個常量,比如g,也可以是變數。加速度計有兩種:一種是角加速度計,是由陀螺儀(角速度感測器)的改進的。另一種就是線加速度計。
『伍』 如何在android的驅動程序中對加速度感測器的數據進行方向和坐標的轉
Android 是面向智能手機和其他攜帶型設備的最受歡迎的操作系統(OS)之一。它為多種感測器提供了標準的API 介面,包括加速度計。加速度計的標准API 定義了原始加速度數據的坐標系統。用戶必須將從感測器中讀取的原始數據轉換為標准單位,並使其符合系統定義的坐標方向。本文介紹了Android 中的坐標系統是如何定義的,以及如何在Android 系統的驅動代碼中對3 軸加速度計數據的方向和坐標進行轉換。本文討論的示例代碼基於飛思卡爾的Android 2.2 和2.3 驅動程序,加速度計則以飛思卡爾的MMA8452Q 加速度感測器為例。
關鍵詞:加速度計,感測器驅動,Android
一部智能手機或便攜設備應具有Wi-Fi 和互聯網功能,能夠運行應用軟體等諸多特徵,而且一定會具有內置感測器。高端智能手機可能集成接近感測器,環境光感測器,3 軸加速度計,以及磁力計等多種感測器。 Android 2.3 添加了一些支持多種新型感測器的API,包括陀螺儀、旋轉向量、線性加速度、重力和氣壓感測器等。應用軟體可以使用這些新型感測器,將它們組合起來,就可以實現高精確度的高級運動檢測功能。
3 軸加速度計或低g 值感測器是Android API 支持的感測器之一,具有特定的坐標系統,可以給應用程序提供標準的介面數據。坐標空間的定義與手機屏幕的默認方向有關
『陸』 如何獲取android加速度感測器的值
sm = (SensorManager)getSystemService(Context.SENSOR_SERVICE); aSensor = sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); mSensor = sm.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD); sm.registerListener(myListener, aSensor, SensorManager.SENSOR_DELAY_NORMAL); sm.registerListener(myListener, mSensor,SensorManager.SENSOR_DELAY_NORMAL); SensorEventListener myListener =new SensorEventListener() { publicvoid onSensorChanged(SensorEvent sensorEvent) { if (sensorEvent.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD) magneticFieldValues = sensorEvent.values; if (sensorEvent.sensor.getType() == Sensor.TYPE_ACCELEROMETER) accelerometerValues = sensorEvent.values; float[] values =newfloat[3]; float[] R = newfloat[9]; SensorManager.getRotationMatrix(R, null, accelerometerValues, magneticFieldValues); SensorManager.getOrientation(R, values); //這里 values[0],values[1],values[2]里邊的數據就是x y z 軸 分別的角度 } publicvoid onAccuracyChanged(Sensor sensor,int accuracy) {} };
『柒』 android加速度感測器去除重力影響
gravity初值可以是0,其實無所謂,不用太離譜,一個常數都行,通過多次迭代都會穩定到實際的重力值附近。這個循環的迭代,實際上是一個一階低通濾波,0.8應該是官方推薦的參數,但應該根據實際的需求可以適當調整,或者自己設計低通濾波。這里的低通濾波是這樣的,因為重力一直穩定不變,頻率很低,而其他方向的加速度不斷變化,頻率較高,所以用低通濾波可以將重力消減,但也不是絕對的去掉。