1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > Android开发 实现摇一摇功能

Android开发 实现摇一摇功能

时间:2020-09-02 17:33:05

相关推荐

Android开发 实现摇一摇功能

SensorManager对象:

常量:

int TYPE_ACCELEROMETER 加速度

int TYPE_ALL 所有类型,NexusOne默认为 加速度

int TYPE_GYROSCOPE 回转仪(这个不太懂)

int TYPE_LIGHT 光线感应

int TYPE_MAGNETIC_FIELD 磁场

int TYPE_ORIENTATION 定向(指北针)和角度

int TYPE_PRESSUR 压力计

int TYPE_PROXIMITY 距离

int TYPE_TEMPERATURE 温度啦

1. 通过getSystemService(SENSOR_SERVICE)方法获取SensorManager对象

2. 创建一个 SensorListener /*SensorEventListener* /监听器,实现 onAccuracyChanged(int sensor, int accuracy)

和onSensorChanged(int sensor, float[] values)方法

3 在onSensorChanged(int sensor, float[] values)内判断是否为“摇一摇”动作(使用常量 intTYPE_ACCELEROMETER)

4 使用 SensorManager对象的registerListener(SensorListener listener, int sensors, int rate)方法注册监听

参数sensors: 所得到的传感器类型 Sensors sensor=sensorMgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);

参数rate: SENSOR_DELAY_FASTEST 最灵敏

SENSOR_DELAY_GAME 一般(游戏)

SENSOR_DELAY_NORMAL 比较慢。

SENSOR_DELAY_UI 最慢的

5 使用 SensorManager对象的unregisterListener(SensorListener listener) 取消监听;

代码:

1. MainActivity.java

import android.hardware.Sensor;import android.hardware.SensorEvent;import android.hardware.SensorEventListener;import android.hardware.SensorManager;import android.os.Bundle;import android.app.Activity;import android.content.Intent;import android.view.Menu;public class MainActivity extends Activity{private SensorManager sensorManager = null;private SensorEventListener mListener = null;@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);mListener = new SensorEventListener(){@Overridepublic void onSensorChanged(SensorEvent event){// TODO Auto-generated method stubfloat[] values = event.values;float x = values[0];//float y = values[1];float z = values[2];int medumValue = 15;//一般摇一摇动作是其位置在空间的X轴和Z轴上的变动if (Math.abs(x) > medumValue /*&& Math.abs(y) > medumValue*/ && Math.abs(z) > medumValue){Intent intent = new Intent(MainActivity.this, SecondActivity.class);startActivity(intent);}}@Overridepublic void onAccuracyChanged(Sensor sensor, int accuracy){// TODO Auto-generated method stub}};}@Overrideprotected void onResume(){super.onResume();//注册监听器if(sensorManager!= null)sensorManager.registerListener(mListener, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),sensorManager.SENSOR_DELAY_GAME );}@Overrideprotected void onStop(){super.onStop();//取消监听器sensorManager.unregisterListener(mListener);}@Overridepublic boolean onCreateOptionsMenu(Menu menu){// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}

2. SecondActivity.java

import android.app.Activity;import android.os.Bundle;public class SecondActivity extends Activity{@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_second);}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。