3.安卓模仿微信摇一摇功能
来源:互联网 发布:java开发求职简历 编辑:程序博客网 时间:2024/05/29 19:34
本例中主要就是使用
SensorManager类获取传感器服务
注册SensorEventListener,用它感知加速度传感器的读值变化,就是我们晃动手机的加速度的AD量
Vibrator类在手机摇动的情况下,开始振动。
所以,OnCreate中开始就try 创建两个类的实例 获取系统相关的服务
OnResume方法中:
为SensorManager注册监听器
mSensorManager.registerListener(mSensorEventListener,mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),SensorManager.SENSOR_DELAY_NORMAL);对应的,我们希望当Activity不在前台时,摇动不要引起振动
mSensorManager.unregisterListener(mSensorEventListener); super.onPause();
实时显示传感器三轴信息
str="x="+df.format(x)+"y="+df.format(y)+"z="+df.format(z);textView.setText(str);if (Math.abs(x)>gate&&shakeThread==null){isRunning=true;shakeThread=new thread(handler);shakeThread.start();}判断一下X是否超过我们设置的阈值
超过就开启一个线程振动
try { for (int i=0; i<2; i++) { if (i==0) Thread.sleep(1000); else Thread.sleep(300); mVibrator.vibrate(200); } Thread.sleep(1500); }catch(InterruptedException e) { e.printStackTrace(); }故意检测两次,不然摇动时几乎没有延迟,效果不好
第一次检测到后让线程睡一秒
在第二次检测到摇动后不久就振动吧
让该线程再睡会觉,两次振动间隔也不要太紧
以上的关键代码如果掌握了,以下的完整代码不看也罢
package com.ljh.shake;import java.text.DecimalFormat;import android.app.Activity;import android.content.Context;import android.hardware.Sensor;import android.hardware.SensorEvent;import android.hardware.SensorEventListener;import android.hardware.SensorManager;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.os.Vibrator;import android.view.Menu;import android.widget.TextView;import android.widget.Toast;public class ShakeAct extends Activity {private SensorManager mSensorManager;private Vibrator mVibrator;private TextView textView;private BooleanisRunning;private threadshakeThread;private static final int SENSOR_SHAKE = 10; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_shake); textView=(TextView)findViewById(R.id.textView); try { mSensorManager=(SensorManager)getSystemService(Context.SENSOR_SERVICE); mVibrator=(Vibrator)getSystemService(Context.VIBRATOR_SERVICE); } catch(Exception e) { e.printStackTrace(); } } @Override protected void onResume() {// TODO Auto-generated method stubmSensorManager.registerListener(mSensorEventListener,mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),SensorManager.SENSOR_DELAY_NORMAL);super.onResume();} @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_shake, menu); return true; } @Override protected void onPause() { // TODO Auto-generated method stub mSensorManager.unregisterListener(mSensorEventListener); super.onPause(); } private SensorEventListener mSensorEventListener=new SensorEventListener() {public void onSensorChanged(SensorEvent arg0) {// TODO Auto-generated method stubDecimalFormat df=new DecimalFormat("##.#");float values[]=arg0.values;float x=values[0];float y=values[1];float z=values[2];float gate=18;String str;str="x="+df.format(x)+"y="+df.format(y)+"z="+df.format(z);textView.setText(str);if (Math.abs(x)>gate&&shakeThread==null){isRunning=true;shakeThread=new thread(handler);shakeThread.start();}}public void onAccuracyChanged(Sensor arg0, int arg1) {// TODO Auto-generated method stub}}; public Handler handler=new Handler(){public void handleMessage(Message msg) {switch(msg.what){case 0:Toast.makeText(ShakeAct.this,"执行操作",Toast.LENGTH_SHORT).show();shakeThread=null;}};};private class thread extends Thread{ private Handler handler; public thread(Handler handler) {// TODO Auto-generated constructor stub this.handler=handler;} @Override public void run() { isRunning=true; try { for (int i=0; i<2; i++) { if (i==0) Thread.sleep(1000); else Thread.sleep(300); mVibrator.vibrate(200); } Thread.sleep(1500); }catch(InterruptedException e) { e.printStackTrace(); } Message msg = handler.obtainMessage(); msg.what=0; handler.sendMessage(msg); } } }
- 3.安卓模仿微信摇一摇功能
- 安卓模仿膜拜单车地图显示的功能
- 安卓模仿电子词典
- 安卓模仿签名
- js模仿微信摇一摇功能
- 模仿微信摇一摇功能
- 安卓模仿2048小游戏
- Qt模仿安卓QQ聊天界面
- 安卓模仿新浪微博看看
- 安卓NDK开发案列二:模仿压力表
- 安卓高级5 传感器和震动 模仿微信摇一摇Ui效果
- 安卓分享功能
- 安卓功能代码
- 安卓功能
- 安卓图标功能
- 安卓模仿Windows自带计算器简易布局
- iOS模仿安卓Material Design的涟漪动画按钮
- 安卓rotation旋转动画模仿QQ音乐相册转动
- 我的NeoComplCache和SnipMate共处方案
- Linux的用户与权限管理
- 瓶颈
- 多维建模(Adventure Works )(二)——定义和部署多维数据集
- 完美实现WordPress自定义增加删除个人资料并且展示文章页
- 3.安卓模仿微信摇一摇功能
- ssh自动断开(备注)
- vc++ 6.0 删除一个类操作
- c++实现无限大整数的加法
- maven2 编译 JPEGImageEncoder
- android对应版本号
- 【linux】ubuntu下安装gae遇到的两个问题及解决办法
- Objective-c中Category的用法
- 函数的参数传递的几种形式(值、地址、引用)及指针基础知识