注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

姑射道人的博客

博客新地址:nixuchen.com

 
 
 

日志

 
 

实现类似微信摇一摇功能  

2012-03-31 15:54:37|  分类: android |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
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){
 
  /*因为一般正常情况下,任意轴数值最大就在9.8~10之间,只有在你突然摇动手机
  *的时候,瞬时加速度才会突然增大或减少。
  *所以,经过实际测试,只需监听任一轴的加速度大于14的时候,改变你需要的设置
  *就OK了~~~
  */
   if((Math.abs(values[0])>14||Math.abs(values[1])>14||Math.abs(values[2])>14)){
   
    //摇动手机后,设置button上显示的字为空
    clear.setText(null);
    
    //摇动手机后,再伴随震动提示~~
    vibrator.vibrate(500);
   
   }
  }
}

}
  评论这张
 
阅读(2147)| 评论(2)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017