利用Sensor实现android手机类似于微信摇一摇
2012-03-24 23:04
417 查看
出处:http://blog.csdn.net/jamin0107/article/details/7297367
传感器有几种类型:
方向传感器: Sensor.TYPE_ORIENTATION
加速度(重力)传感器: Sensor.TYPE_ACCELEROMETER
光线传感器: Sensor.TYPE_LIGHT
磁场传感器: Sensor.TYPE_MAGNETIC_FIELD
距离(临近性)传感器: Sensor.TYPE_PROXIMITY
温度传感器: Sensor.TYPE_TEMPERATURE
这里我们利用的是加速度传感器
[java] view
plaincopy
package com.jamin.sensor;
import android.app.Activity;
import android.app.Service;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.os.Vibrator;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class SensorTestActivity extends Activity implements SensorEventListener{
/** Called when the activity is first created. */
TextView tv = null;
Button button = null;
SensorManager sensorManager = null;
Vibrator vibrator = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
button = (Button) findViewById(R.id.button1);
tv = (TextView) findViewById(R.id.textview1);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
tv.setText("文本复原");
}
});
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
vibrator = (Vibrator) getSystemService(Service.VIBRATOR_SERVICE);
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
sensorManager.unregisterListener(this);
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL);
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
//当传感器精度改变时回调该方法,Do nothing.
}
@Override
public void onSensorChanged(SensorEvent event) {
int sensorType = event.sensor.getType();
//values[0]:X轴,values[1]:Y轴,values[2]:Z轴
float[] values = event.values;
if(sensorType == Sensor.TYPE_ACCELEROMETER){
if((Math.abs(values[0])>17||Math.abs(values[1])>17||Math.abs(values[2])>17)){
Log.d("sensor ", "============ values[0] = " + values[0]);
Log.d("sensor ", "============ values[1] = " + values[1]);
Log.d("sensor ", "============ values[2] = " + values[2]);
tv.setText("摇一摇");
//摇动手机后,再伴随震动提示~~
vibrator.vibrate(500);
}
}
}
}
记得在onresume和onpause的时候开关sensor的监听事件。
如果想调整sensor的敏感程度,就去修改,value[0,1,2] 大于的上限。
传感器有几种类型:
方向传感器: Sensor.TYPE_ORIENTATION
加速度(重力)传感器: Sensor.TYPE_ACCELEROMETER
光线传感器: Sensor.TYPE_LIGHT
磁场传感器: Sensor.TYPE_MAGNETIC_FIELD
距离(临近性)传感器: Sensor.TYPE_PROXIMITY
温度传感器: Sensor.TYPE_TEMPERATURE
这里我们利用的是加速度传感器
[java] view
plaincopy
package com.jamin.sensor;
import android.app.Activity;
import android.app.Service;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.os.Vibrator;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class SensorTestActivity extends Activity implements SensorEventListener{
/** Called when the activity is first created. */
TextView tv = null;
Button button = null;
SensorManager sensorManager = null;
Vibrator vibrator = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
button = (Button) findViewById(R.id.button1);
tv = (TextView) findViewById(R.id.textview1);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
tv.setText("文本复原");
}
});
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
vibrator = (Vibrator) getSystemService(Service.VIBRATOR_SERVICE);
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
sensorManager.unregisterListener(this);
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL);
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
//当传感器精度改变时回调该方法,Do nothing.
}
@Override
public void onSensorChanged(SensorEvent event) {
int sensorType = event.sensor.getType();
//values[0]:X轴,values[1]:Y轴,values[2]:Z轴
float[] values = event.values;
if(sensorType == Sensor.TYPE_ACCELEROMETER){
if((Math.abs(values[0])>17||Math.abs(values[1])>17||Math.abs(values[2])>17)){
Log.d("sensor ", "============ values[0] = " + values[0]);
Log.d("sensor ", "============ values[1] = " + values[1]);
Log.d("sensor ", "============ values[2] = " + values[2]);
tv.setText("摇一摇");
//摇动手机后,再伴随震动提示~~
vibrator.vibrate(500);
}
}
}
}
记得在onresume和onpause的时候开关sensor的监听事件。
如果想调整sensor的敏感程度,就去修改,value[0,1,2] 大于的上限。
相关文章推荐
- android系列:利用Sensor实现android手机类似于微信摇一摇
- android利用闪光灯实现手机电筒
- 获取Android设备的方向,Sensor和SensorManager实现手机旋转角度
- 利用 android手机DLNA功能,实现手机视频无线播放到电脑、电视
- 利用简易Tomcat服务器结合MysqL实现Android手机注册与登录(客户端部分)
- 利用简易Tomcat服务器结合MysqL实现Android手机注册与登录(客户端部分)
- Android利用Sensor(传感器)实现指南针小功能
- android中利用Socket实现手机客户端与PC端进行通信
- Android--SensorEventListener和AudioManager实现根据条件转换手机震动和响铃
- 利用简易Tomcat服务器结合MysqL实现Android手机注册与登录(服务器部分)
- Android--SensorEventListener和AudioManager实现根据条件转换手机震动和响铃
- android物联网初步,利用手机蓝牙与单片机通信,实现led灯开关和定时
- 我的Android进阶之旅------>Android利用Sensor(传感器)实现水平仪功能的小例
- 利用简易Tomcat服务器结合MysqL实现Android手机注册与登录(服务器部分)
- android 手机利用重力感应摇晃 换歌曲 “摇晃”实现
- Android手机摇一摇的实现SensorEventListener
- 我的Android进阶之旅------>Android利用Sensor(传感器)实现指南针功能
- Android之——利用系统权限实现手机重启(获取系统权限签名详解)
- Android中利用动态加载实现手机淘宝的节日特效
- Android--SensorEventListener和AudioManager实现根据条件转换手机震动和响铃