本文實例講述了Android開發獲取傳感器數據的方法。分享給大家供大家參考,具體如下:
package mobile.android.sensor;import java.util.List;import android.app.Activity;import android.hardware.Sensor;import android.hardware.SensorEvent;import android.hardware.SensorEventListener;import android.hardware.SensorManager;import android.os.Bundle;import android.widget.TextView;public class Main extends Activity implements SensorEventListener { private TextView tvAccelerometer; private TextView tvMagentic; private TextView tvLight; private TextView tvOrientation; private TextView tvSensors; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // 獲得SensorManager對象 SensorManager sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); // 注冊加速度傳感器 sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_FASTEST); // 注冊磁場傳感器 sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD), SensorManager.SENSOR_DELAY_FASTEST); // 注冊光線傳感器 sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT), SensorManager.SENSOR_DELAY_FASTEST); // 注冊方向傳感器 sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION), SensorManager.SENSOR_DELAY_FASTEST); tvAccelerometer = (TextView) findViewById(R.id.tvAccelerometer); tvMagentic = (TextView) findViewById(R.id.tvMagentic); tvLight = (TextView) findViewById(R.id.tvLight); tvOrientation = (TextView) findViewById(R.id.tvOrientation); tvSensors = (TextView) findViewById(R.id.tvSensors); // 獲得當前手機支持的所有傳感器 List<Sensor> sensors = sensorManager.getSensorList(Sensor.TYPE_ALL); for (Sensor sensor : sensors) { // 輸出當前傳感器的名稱 tvSensors.append(sensor.getName() + "/n"); } } @Override public void onSensorChanged(SensorEvent event) { // 通過getType方法獲得當前傳回數據的傳感器類型 switch (event.sensor.getType()) { case Sensor.TYPE_ACCELEROMETER: // 處理加速度傳感器傳回的數據 String accelerometer = "加速度/n" + "X:" + event.values[0] + "/n" + "Y:" + event.values[1] + "/n" + "Z:" + event.values[2] + "/n"; tvAccelerometer.setText(accelerometer); break; case Sensor.TYPE_LIGHT: // 處理光線傳感器傳回的數據 tvLight.setText("亮度:" + event.values[0]); break; case Sensor.TYPE_MAGNETIC_FIELD: // 處理磁場傳感器傳回的數據 String magentic = "磁場/n" + "X:" + event.values[0] + "/n" + "Y:" + event.values[1] + "/n" + "Z:" + event.values[2] + "/n"; tvMagentic.setText(magentic); break; case Sensor.TYPE_ORIENTATION: // 處理方向傳感器傳回的數據 String orientation = "方向/n" + "X:" + event.values[0] + "/n" + "Y:" + event.values[1] + "/n" + "Z:" + event.values[2] + "/n"; tvOrientation.setText(orientation); break; } } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { }}PS:這里獲得的只是傳感器采集數據,還需要對數據分析,變成有用的信息。
更多關于Android相關內容感興趣的讀者可查看本站專題:《Android開發入門與進階教程》、《Android視圖View技巧總結》、《Android編程之activity操作技巧總結》、《Android操作SQLite數據庫技巧總結》、《Android操作json格式數據技巧總結》、《Android資源操作技巧匯總》及《Android控件用法總結》
希望本文所述對大家Android程序設計有所幫助。
新聞熱點
疑難解答