Android——加速传感器(ACCELEROMETER)的应用
加速傳感器可以實(shí)現(xiàn)搖一搖的功能,通過(guò)你速度的變化來(lái)對(duì)它進(jìn)行設(shè)置監(jiān)聽(tīng)。
和之前獲得傳感器的方法類似,不過(guò)多了監(jiān)聽(tīng)而已。
1、SensorManager sm
=(SensorManager) getSystemService(Context.SENSOR_SERVICE);
獲得傳感器服務(wù)。
2、Sensor sensor=sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
獲得加速傳感器。
3、SensorEventListener listener=new SensorEventListener();
里面有兩個(gè)重寫(xiě)方法,onSensorChanged和onAccuracyChanged。
onSensorChanged在傳感器值更改時(shí)調(diào)用。該方法只對(duì)受此應(yīng)用程序監(jiān)視的傳感器調(diào)
用,當(dāng)傳感器的準(zhǔn)確性更改時(shí),將調(diào)用onAccuracyChanged(int sensor,int accuracy)
方法。一般咱們對(duì)數(shù)值改變進(jìn)行調(diào)用第一個(gè)方法。
4、監(jiān)聽(tīng)對(duì)象listener有了需要給加速器注冊(cè)監(jiān)聽(tīng)事件。
sm.registerListener(listener, sensor, SensorManager.SENSOR_DELAY_NORMAL);
最后一個(gè)參數(shù)就選成普通速率就好了。
5、解注冊(cè)。
在Activity的ondestroy方法中執(zhí)行sm.unregisterListener(listener);解開(kāi)注冊(cè)。
來(lái)做一個(gè)搖一搖的功能,通過(guò)搖動(dòng)手機(jī)來(lái)進(jìn)行記錄次數(shù),同時(shí)給他加上振動(dòng)效果。
public class MainActivity extends Activity {private TextView tv;private Sensor sensor;private SensorManager sm;private SensorEventListener listener;private int count;private Vibrator vibrator;private int mx,my,mz;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);tv=(TextView) findViewById(R.id.tv);}@Overrideprotected void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();sm.unregisterListener(listener);}public void yao(View v)//button的監(jiān)聽(tīng)事件{sm=(SensorManager) getSystemService(Context.SENSOR_SERVICE);sensor=sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);listener=new SensorEventListener() {@Overridepublic void onSensorChanged(SensorEvent event) {// TODO Auto-generated method stubfloat xyz[]=event.values;//獲得加速器三個(gè)方位x,y,z的數(shù)值集合int x=(int) xyz[0];int y=(int) xyz[1];int z=(int) xyz[2];if(Math.abs(x-mx)>30||Math.abs(y-my)>30||Math.abs(z-mz)>30)//mx是相對(duì)于之前比較的數(shù)據(jù)。{//獲得振動(dòng)服務(wù) 需要添加權(quán)限vibrator=(Vibrator) getSystemService(Context.VIBRATOR_SERVICE);vibrator.vibrate(400);//振動(dòng)400毫秒count++;tv.setText(count+"");}mx=x;my=y;mz=z;}@Overridepublic void onAccuracyChanged(Sensor sensor, int accuracy) {// TODO Auto-generated method stub}};sm.registerListener(listener, sensor, SensorManager.SENSOR_DELAY_NORMAL);} }振動(dòng)權(quán)限:
< uses-permission android:name=”android.permission.VIBRATE”/>
總結(jié)
以上是生活随笔為你收集整理的Android——加速传感器(ACCELEROMETER)的应用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 百度地图获取本地搜索(LocalSear
- 下一篇: tkinter实现图片自适应