在做手機開發的時候,我們有時會使用到感應器,特別是在遊戲開發中。下面我沒來學習一下感應器的擷取。
在這裡我們需要一部真實的android手機,我使用的是華為的c8650。
擷取手機中的感應器的步驟為:
- 擷取SensorManager對象
- 執行SensorManager對象的getDefaultSensor()方法擷取Sensor對象,這裡getDefaultSensor()方法要傳遞一個參數,指定具體的感應器類型
- 擷取Sensor對象中的各種屬性
不說那麼多了,先看看我的運行效果吧:
介面:
點擊按鈕後得到資料:
xml布局代碼:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <Button android:id="@+id/btnGetSensor" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/btngetsensorstr"/></LinearLayout>
activity代碼:
package com.nine.sensordemo;import java.util.List;import android.app.Activity;import android.content.Context;import android.hardware.Sensor;import android.hardware.SensorManager;import android.os.Bundle;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class MainActivity extends Activity implements OnClickListener {private Button btnGetSensor; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); initWedget(); } private void initWedget() { btnGetSensor = (Button) findViewById(R.id.btnGetSensor); btnGetSensor.setOnClickListener(this); }public void onClick(View v) {SensorManager manager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);//得到手機上所有的感應器List<Sensor> listSensor = manager.getSensorList(Sensor.TYPE_ALL);int i = 1;for (Sensor sensor : listSensor) {Log.d("sensor " + i, sensor.getName());i++;}//通過調用getDefaultSensor方法擷取某一個類型的預設感應器//Sensor s = manager.getDefaultSensor(Sensor.TYPE_LIGHT);}}
這裡主要是擷取手機的所有感應器,下一步是擷取感應器中的資料。