- 浏览: 180435 次
- 性别:
- 来自: 浙江
文章分类
最新评论
代码参考:http://www.eoeandroid.com/thread-323631-1-1.html
微信摇一摇主要用了加速度传感器,代码如下:
public class MainActivity extends Activity {
private SensorManager sensorManager;
private Vibrator vibrator;
private static final String TAG = "SensorTest";
private static final int SENSOR_SHAKE = 10;
private long lastUpdateTime=-1;
private static long INTERVAL_TIME=1000;
private static int i=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);
}
@Override
protected void onResume() {
super.onResume();
if (sensorManager != null) {// 注册监听器
sensorManager.registerListener(sensorEventListener, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL);
// 第一个参数是Listener,第二个参数是所得传感器类型,第三个参数值获取传感器信息的频率
}
}
@Override
protected void onPause() {
super.onPause();
if (sensorManager != null) {// 取消监听器
sensorManager.unregisterListener(sensorEventListener);
}
}
/**
* 重力感应监听
*/
private SensorEventListener sensorEventListener = new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
// Log.e(TAG,"onSensorChanged");
// 现在检测时间
long currentUpdateTime = System.currentTimeMillis();
//第一次进入,更新lastUpdateTime
// if(lastUpdateTime==-1){
// lastUpdateTime=currentUpdateTime;
//// return ;
// }
// 两次检测的时间间隔
long timeInterval = currentUpdateTime - lastUpdateTime;
// 判断是否达到了检测时间间隔
if (timeInterval < INTERVAL_TIME )
return;
// 传感器信息改变时执行该方法
float[] values = event.values;
float x = values[0]; // x轴方向的重力加速度,向右为正
float y = values[1]; // y轴方向的重力加速度,向前为正
float z = values[2]; // z轴方向的重力加速度,向上为正
int medumValue = 14;
if (Math.abs(x) > medumValue || Math.abs(y) > medumValue || Math.abs(z) > medumValue) {
// 现在的时间变成last时间
lastUpdateTime = currentUpdateTime;
Log.e(TAG, "x轴方向的重力加速度" + x + ";y轴方向的重力加速度" + y + ";z轴方向的重力加速度" + z);
vibrator.vibrate(200);
Message msg = new Message();
msg.what = SENSOR_SHAKE;
handler.sendMessage(msg);
}
}
@Override
public void onAccuracyChanged(Sensor arg0, int arg1) {
Log.e(TAG,"onAccuracyChanged");
}
};
/**
* 动作执行
*/
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case SENSOR_SHAKE:
i++;
Toast.makeText(MainActivity.this, "检测到摇晃,执行操作! "+i, Toast.LENGTH_SHORT).show();
Log.e(TAG, "检测到摇晃,执行操作!"+i);
break;
}
}
};
}
别忘了震动权限:
<uses-permission android:name="android.permission.VIBRATE"/>
微信摇一摇主要用了加速度传感器,代码如下:
public class MainActivity extends Activity {
private SensorManager sensorManager;
private Vibrator vibrator;
private static final String TAG = "SensorTest";
private static final int SENSOR_SHAKE = 10;
private long lastUpdateTime=-1;
private static long INTERVAL_TIME=1000;
private static int i=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);
}
@Override
protected void onResume() {
super.onResume();
if (sensorManager != null) {// 注册监听器
sensorManager.registerListener(sensorEventListener, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL);
// 第一个参数是Listener,第二个参数是所得传感器类型,第三个参数值获取传感器信息的频率
}
}
@Override
protected void onPause() {
super.onPause();
if (sensorManager != null) {// 取消监听器
sensorManager.unregisterListener(sensorEventListener);
}
}
/**
* 重力感应监听
*/
private SensorEventListener sensorEventListener = new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
// Log.e(TAG,"onSensorChanged");
// 现在检测时间
long currentUpdateTime = System.currentTimeMillis();
//第一次进入,更新lastUpdateTime
// if(lastUpdateTime==-1){
// lastUpdateTime=currentUpdateTime;
//// return ;
// }
// 两次检测的时间间隔
long timeInterval = currentUpdateTime - lastUpdateTime;
// 判断是否达到了检测时间间隔
if (timeInterval < INTERVAL_TIME )
return;
// 传感器信息改变时执行该方法
float[] values = event.values;
float x = values[0]; // x轴方向的重力加速度,向右为正
float y = values[1]; // y轴方向的重力加速度,向前为正
float z = values[2]; // z轴方向的重力加速度,向上为正
int medumValue = 14;
if (Math.abs(x) > medumValue || Math.abs(y) > medumValue || Math.abs(z) > medumValue) {
// 现在的时间变成last时间
lastUpdateTime = currentUpdateTime;
Log.e(TAG, "x轴方向的重力加速度" + x + ";y轴方向的重力加速度" + y + ";z轴方向的重力加速度" + z);
vibrator.vibrate(200);
Message msg = new Message();
msg.what = SENSOR_SHAKE;
handler.sendMessage(msg);
}
}
@Override
public void onAccuracyChanged(Sensor arg0, int arg1) {
Log.e(TAG,"onAccuracyChanged");
}
};
/**
* 动作执行
*/
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case SENSOR_SHAKE:
i++;
Toast.makeText(MainActivity.this, "检测到摇晃,执行操作! "+i, Toast.LENGTH_SHORT).show();
Log.e(TAG, "检测到摇晃,执行操作!"+i);
break;
}
}
};
}
别忘了震动权限:
<uses-permission android:name="android.permission.VIBRATE"/>
发表评论
-
关于Android的webSocket的简单使用
2017-05-12 14:34 906使用第三方jar: autobahn-0.5.0.jar 连 ... -
Comparator自定义排序的使用
2017-05-11 14:18 704java对于集合的自定义排序方法有: Arrays.sort ... -
查看Android虚拟机文件相关命令
2017-05-02 14:12 510我们在虚拟机下添加文件后,想查看下文件是否正确创建,可在win ... -
android6.0创建文件问题
2017-05-02 12:58 531Android在6.0有了动态权限管理,在文件创建时就需要动态 ... -
xutils的http模块的简单使用
2017-04-28 16:05 467先导入xutils相关依赖: compile 'org.xut ... -
Litepal的简单使用
2017-04-27 17:21 586相关包下载地址:https://github.com/Lite ... -
Android下拉刷新上拉加载控件的使用
2017-04-21 10:46 782参考链接:http://www.jianshu.com/p/6 ... -
图片加载框架
2017-04-19 16:29 358图片加载框架: picasso ImageLoader -
Android的Service总结
2017-04-17 15:46 406参考链接:http://www.cnblogs.com/lwb ... -
解决ViewPager的addOnPageChangeListener不加载第一个的问题
2017-03-18 17:53 2575今天在使用ViewPager的时候发现个问题。 需求如下: ... -
clone方法的使用
2017-01-04 10:14 508由于Java有引用这一说,当两个变量指向同一块内存时,改变 ... -
Fragment无法切换问题
2016-12-16 14:57 2064Android有一个回收机制,当内存不足时,会自动回收相关内存 ... -
关于Material Design的CollapsingToolbarLayout初次使用
2016-12-16 13:38 563最近了解了下CollapsingToolbarLayout的使 ... -
MVP模式的学习
2016-12-10 15:15 604以前我写代码都是使用MVC模式,这种模式使Activity变得 ... -
Material Design:Android Design Support Library 介绍
2016-12-10 14:14 415参考链接 : https://blog.leancloud.c ... -
SpannableString简介
2016-12-10 14:03 375参考链接: http://www.cnblogs.com/ji ... -
getResources().getDrawable方法的废弃
2016-12-10 13:20 1154参考链接:http://www.jianshu.com/p/e ... -
关于AndroidStudio的Unsupported major.minor version 52.0异常
2016-12-10 13:15 2326参考链接:http://blog.csdn.net/fakin ... -
Android记录
2015-06-01 10:54 598http://tools.android-studio.org ... -
android自定义控件相关使用
2015-04-24 16:53 563用代码简单介绍下自定义控件的使用: 先看主activity: ...
相关推荐
微信摇一摇源码
android特效集锦系列之仿微信摇一摇
手机端HTML5微信摇一摇案例,简单易懂,可直接使用。
微信摇一摇配置ibeacon设备手册(苹果手机)
微信摇一摇周边接口文档,蓝牙4.0开发文档。
仿微信摇一摇
高仿微信摇一摇Demo,图片资源,声音资源齐全,效果高度仿真
iphone应用之微信摇一摇效果,振动,图片上下移
模仿微信摇一摇的demo,动画效果,里面有两个使用的demo。
HTML5手机微信摇一摇游戏代码基于jquery.1.11.1.min.js制作,模仿微信摇一摇功能,可手动摇,效果流畅。
微信周边摇一摇红包源码文档,微信周边摇一摇红包接口配置源码
仿微信摇一摇功能android 重力感应开发 本实例主要使用了android的重力感应功能并配合动画及声音效果实现,相信对大家一定很有帮助。
10亿红包从天降,揭秘微信摇一摇背后的技术细节,腾讯的技术分享。
摇一摇周边是微信针对低功耗蓝牙硬件(支持iBeacon协议,下文简称iBeacon设备)提供的连接入口。在手机蓝牙打开的状态下,当用户在微信中打开摇一摇时,如果周围有iBeacon设备,会自动出现周边入口。此时用户摇一摇...
仿微信界面 帮助你了解安卓中摇一摇功能的实现,测试可用