Android特色開(kāi)發(fā)之傳感器和語(yǔ)音識(shí)別
//注冊(cè)傳感器
Boolean mRegisteredSensor = mSensorManager.registerListener(this, sensor,
SensorManager.SENSOR_DELAY_FASTEST);
//卸載傳感器
mSensorManager.unregisterListener(this);
其中,SensorEventListener是使用傳感器的核心部分,包括以下兩個(gè)方法必須實(shí)現(xiàn):
onSensorChanged (SensorEvent event) 方法在傳感器值更改時(shí)調(diào)用。該方法只由受此應(yīng)用程序監(jiān)視的傳感器調(diào)用。該方法的參數(shù)包括一個(gè)SensorEvent對(duì)象,該對(duì)象主要包括一組浮點(diǎn)數(shù),表示傳感器獲得的方向、加速度等信息。例如,以下代碼可以取得其值:
float x = event.values[SensorManager.DATA_X];
float y = event.values[SensorManager.DATA_Y];
float z = event.values[SensorManager.DATA_Z];
onAccuracyChanged (Sensor sensor,int accuracy) 方法在傳感器的精準(zhǔn)度發(fā)生改變時(shí)調(diào)用。其參數(shù)包括兩個(gè)整數(shù):一個(gè)表示傳感器,另一個(gè)表示該傳感器新的準(zhǔn)確值。
具體實(shí)現(xiàn)如代碼清單1所示。
代碼清單1 Examples_09_01srccomyarinandroidExamples_09_01Activity01.java
public class Activity01 extends Activity implements SensorEventListener
{
private boolean mRegisteredSensor;
//定義SensorManager
private SensorManager mSensorManager;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mRegisteredSensor = false;
//取得SensorManager實(shí)例
mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
}
protected void onResume()
{
super.onResume();
//接收SensorManager的一個(gè)列表(Listener)
//這里我們指定類(lèi)型為T(mén)YPE_ORIENTATION(方向傳感器)
List
(Sensor.TYPE_ORIENTATION);
if (sensors.size() > 0)
{
Sensor sensor = sensors.get(0);
//注冊(cè)SensorManager
//this->接收sensor的實(shí)例
//接收傳感器類(lèi)型的列表
//接收的頻率
mRegisteredSensor = mSensorManager.registerListener(this,
sensor, SensorManager.SENSOR_DELAY_FASTEST);
評(píng)論