利用传感器实现微信的摇一摇功能

来源:互联网 发布:人工智能程序下载 编辑:程序博客网 时间:2024/05/17 23:46
android开发利用传感器实现微信的摇一摇功能(zz)

现在的不少应用都用到了摇动手机改变内容的功能,比如微信中的“摇一摇”功能。前两天要实现这个功能,稍微看了一下关于传感器Sensor的内容。
传感器有几种类型:
     方向传感器:  Sensor.TYPE_ORIENTATION
      加速度(重力)传感器:Sensor.TYPE_ACCELEROMETER
     光线传感器:   Sensor.TYPE_LIGHT
     磁场传感器:  Sensor.TYPE_MAGNETIC_FIELD
      距离(临近性)传感器:Sensor.TYPE_PROXIMITY
     温度传感器:  Sensor.TYPE_TEMPERATURE
在摇动手机的功能中,我们只用加速度传感器就行了

20120208063238323.jpg 

加速度传感器返回值的单位是加速度的单位m/s^2(米每二次方秒),有三个方向的值分别是
  values[0]: x-axis方向加速度
  values[1]: y-axis方向加速度
  values[2]: z-axis方向加速度
  其中x,y,z方向的定义是以水平放置在的手机的右下脚为参照系坐标原点
  x 方向就是手机的水平方向,右为正
  y 方向就是手机的水平垂直方向,前为正
  y方向就是手机的空间垂直方向,天空的方向为正,地球的方向为负
所以说,你的手机放置的空间位置不同,它三个方向的加速度也不同。在这里,三个方向的加速度,与我们传统意义上的加速度(9.8m/s2)有所区别,需细细品味。
以下是摇动手机后清除TextView的文字的代码:


复制代码
package gy.lovers;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

import android.app.Activity;
import android.app.Service;
import android.content.res.Resources;
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.view.View;
import android.widget.Button;

//需要实现SensorEventListener接口
public class LoversChoise extends Activity implements SensorEventListener{

Button clear;

//定义sensor管理器
private SensorManager mSensorManager;
//震动
private Vibrator vibrator;

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.loverschoise);

//获取传感器管理服务
mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
//震动
vibrator = (Vibrator) getSystemService(Service.VIBRATOR_SERVICE);

clear = (Button) findViewById(R.id.clear);

clear.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub

//点击button后,给button按钮设置了text
clear.setText("现在给button的text赋值喽~");

});

@Override
protected void onResume(){
super.onResume();

//加速度传感器
mSensorManager.registerListener(this,
mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
//还有SENSOR_DELAY_UI、SENSOR_DELAY_FASTEST、SENSOR_DELAY_GAME等,
//根据不同应用,需要的反应速率不同,具体根据实际情况设定
SensorManager.SENSOR_DELAY_NORMAL);
}

@Override
protected void onStop(){
mSensorManager.unregisterListener(this);
super.onStop();
}

@Override
protected void onPause(){
mSensorManager.unregisterListener(this);
super.onPause();
}

@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub
//当传感器精度改变时回调该方法,Do nothing.
}
@Override
public void onSensorChanged(SensorEvent event) {
// TODO Auto-generated method stub
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])>14||Math.abs(values[1])>14||Math.abs(values[2])>14)){

//摇动手机后,设置button上显示的字为空
clear.setText(null);

//摇动手机后,再伴随震动提示~~
vibrator.vibrate(500);

}
}
}

}
转至:http://www.cnblogs.com/wufawei/archive/2012/03/04/2379320.html
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 来例假刺激外阴高潮了怎么办 客人消费完说没钱怎么办? 孕13周血糖偏高怎么办 餐后血糖高14点怎么办 餐后血糖20多怎么办 空腹血糖6.6饭后9.2怎么办 键盘shift键失效了怎么办 灵异附身夫妻不合怎么办 鞋子买大了半码怎么办 鞋子买小了半码怎么办 黑布鞋鞋面白了怎么办 黑布鞋不黑了怎么办 黑布鞋退白了怎么办 老北京布鞋款式太少怎么办 老人输液抽搐后昏迷怎么办 头七家里有狗怎么办 股票退市股民的钱怎么办 美国股票退市股民怎么办 百度云字幕和视频不同步怎么办 百度云加载字幕有延迟怎么办 很难适应新环境怎么办 蜘蛛丝碰到嘴唇上起包有毒怎么办? 电瓶车在路上爆胎了怎么办 嘴被虫子咬肿了怎么办 高铁管家购票失败怎么办 高铁车厢空调冷怎么办 高铁票过了时间怎么办 网购火车票丢了怎么办 改签没有票了怎么办 火车票取了没赶上车怎么办 上车后车票丢了怎么办 晒了吗任务过期怎么办 坐火车买了站票怎么办 坐火车忘记带票怎么办 距离二本线差几分怎么办 行李包落火车候车厅怎么办 高铁票买错地点怎么办 高铁票买错日期怎么办 票买错时间了怎么办 上高铁了票丢了怎么办 上车前高铁票丢了怎么办