位置: 编程技术 - 正文

android 实现摇一摇功能(android摇一摇实现)

编辑:rootadmin

推荐整理分享android 实现摇一摇功能(android摇一摇实现),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:安卓系统摇一摇在哪里,android摇一摇实现,android摇一摇实现,安卓手机摇一摇没反应,android摇一摇实现,安卓系统摇一摇在哪里,android 摇一摇,安卓手机怎么摇一摇,内容如对您有帮助,希望把文章链接给更多的朋友!

实现“摇一摇”功能,其实很简单,就是检测手机的重力感应,具体实现代码如下:

android 实现摇一摇功能(android摇一摇实现)

一、在 AndroidManifest.xml 中添加操作权限

<uses-permission android:name="android.permission.VIBRATE"/>

二、实现代码

[java] view plaincopypackage com.xs.test; import android.app.Activity; 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.util.Log; import android.widget.Toast; /** * 安卓晃动手机监听--“摇一摇” * * @author 单红宇 * */ public class TestSensorActivity extends Activity { private SensorManager sensorManager; private Vibrator vibrator; private static final String TAG = "TestSensorActivity"; private static final int SENSOR_SHAKE = ; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.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) { // 传感器信息改变时执行该方法 float[] values = event.values; float x = values[0]; // x轴方向的重力加速度,向右为正 float y = values[1]; // y轴方向的重力加速度,向前为正 float z = values[2]; // z轴方向的重力加速度,向上为正 Log.i(TAG, "x轴方向的重力加速度" &#; x &#; ";y轴方向的重力加速度" &#; y &#; ";z轴方向的重力加速度" &#; z); // 一般在这三个方向的重力加速度达到就达到了摇晃手机的状态。 int medumValue = ;// 三星 i怎么晃都不会超过,没办法,只设置了 if (Math.abs(x) > medumValue || Math.abs(y) > medumValue || Math.abs(z) > medumValue) { vibrator.vibrate(); Message msg = new Message(); msg.what = SENSOR_SHAKE; handler.sendMessage(msg); } } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { } }; /** * 动作执行 */ Handler handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what) { case SENSOR_SHAKE: Toast.makeText(TestSensorActivity.this, "检测到摇晃,执行操作!", Toast.LENGTH_SHORT).show(); Log.i(TAG, "检测到摇晃,执行操作!"); break; } } }; } 这种摇一摇比较普通,没有经过算法的加强,重力加速度就是。算法优化如下package com.example.url;import java.io.IOException;import java.net.URL;import com.hahashijie.imageload.ImageLoader;import android.annotation.SuppressLint;import android.app.Activity;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.drawable.Drawable;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.util.Log;import android.widget.ImageView;@SuppressLint("HandlerLeak")public class MainActivity extends Activity {private ImageView image;private SensorManager sensorManager;private Sensor sensor;private Vibrator vibrator;private static final int UPTATE_INTERVAL_TIME = ;private static final int SPEED_SHRESHOLD = ;//这个&#;调节灵敏度private long lastUpdateTime;private float lastX;private float lastY;private float lastZ;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);image = (ImageView) findViewById(R.id.image);}@Overrideprotected void onResume() {// TODO Auto-generated method stubsuper.onResume();if (sensorManager != null) { sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); } if (sensor != null) { sensorManager.registerListener(sensorEventListener, sensor,SensorManager.SENSOR_DELAY_GAME);//这里选择感应频率 }}/*** 重力感应监听*/private SensorEventListener sensorEventListener = new SensorEventListener() {@Overridepublic void onSensorChanged(SensorEvent event) {long currentUpdateTime = System.currentTimeMillis();long timeInterval = currentUpdateTime - lastUpdateTime;if (timeInterval < UPTATE_INTERVAL_TIME) {return;}lastUpdateTime = currentUpdateTime;// 传感器信息改变时执行该方法float[] values = event.values;float x = values[0]; // x轴方向的重力加速度,向右为正float y = values[1]; // y轴方向的重力加速度,向前为正float z = values[2]; // z轴方向的重力加速度,向上为正float deltaX = x - lastX;float deltaY = y - lastY;float deltaZ = z - lastZ;lastX = x;lastY = y;lastZ = z;double speed = (Math.sqrt(deltaX * deltaX &#; deltaY * deltaY&#; deltaZ * deltaZ) / timeInterval) * ;if (speed >= SPEED_SHRESHOLD) {vibrator.vibrate();image.setImageResource(R.drawable.running);}}@Overridepublic void onAccuracyChanged(Sensor sensor, int accuracy) {}};}

Android基础系列-----------Android系统框架 Android系统是有众多的子项目组成的。从编程语言角度来看,这些项目主要是使用Java和C/C来实现的;从整体系统框架而言,分成内核层、硬件抽象层、系

Android广播接收器Broadcast Receiver-android学习之旅(十二) 首先继承BroadcastReceiver类,并在manifest中注册publicclassMyReceiverextendsBroadcastReceiver{publicMyReceiver(){}@OverridepublicvoidonReceive(Contextcontext,Intentintent){thrownewUnsupporte

android实现拨打电话但不弹出拨号界面 这里只提供一个大概的思路,整个流程不是我一个人就能完成的。测试机型为htconex,Android版本4.2.2,已ROOT。要实现拨号程序可能很简单,一个简单的Int

标签: android摇一摇实现

本文链接地址:https://www.jiuchutong.com/biancheng/381025.html 转载请保留说明!

上一篇:android设备信息获取(android 设备信息)

下一篇:Android基础系列-----------Android系统框架(android基础入门教程)

  • 嵌入式软件产品的增值税即征即退具体实例
  • 报关单完成出口后收汇期限4月30日
  • 税控盘维护费的分录
  • 消费税到底是什么
  • 给对方汇钱
  • 结转存货跌价准备冲减主营业务成本
  • 公司购买的货架入哪个科目
  • 产成品出库入库单
  • 小规模房产税减免
  • 商誉减值可以抵税吗
  • 会计档案交接怎么填写
  • 预付账款转入其他非流动资产
  • 施工单位对分包单位能罚款吗
  • 收到投资担保公司的担保费发票的账务处理
  • 境外所得抵免税额是什么意思
  • 如何填写增值税及附加税费申报表
  • 营改增金融商品范围
  • 工业企业小规模纳税人的认定标准
  • 职工福利费发票不小心抵扣了汇算清缴
  • 收派服务发票需交税吗
  • 经营范围外的业务可以开发票吗
  • 企业涉及预计负债的主要事项包括
  • 360压缩怎么压缩到指定大小
  • kb4580419更新
  • 承租人经营租赁会计分录
  • 不合规发票扣除多少
  • 专项贷款损失准备金在一定程度上具有资本的性质
  • 售后租回融资租赁帐务处理怎么做?
  • 破产企业有清算费用吗
  • 广告宣传费的税收筹划
  • 微信小程序分包加载
  • 清洁费用是属于什么科目
  • 曲折的拼音
  • 税率变更为13%的文件
  • react框架结构
  • 如果收到房租的说说
  • phppdo连接数据库
  • 【强化学习】Q-Learning算法详解
  • 面试官问:mysql 的自增 id 用完了,怎么办?
  • 非贸备案什么意思
  • phpcms模块
  • SQL Server 跨库同步数据
  • 票据粘贴顺序是什么
  • 建筑工程企业人才优势怎么写
  • 烟叶税的计税依据如何确定
  • 按揭贷款买房是否划算
  • 营业外收入如何纳税
  • 交易性金融资产属于流动资产
  • 固定资产的后续支出应如何进行会计处理
  • 融资租赁财产保全金额是多少
  • 公司向外借款给个人怎么做账
  • 公司购买的财产保险要交印花税吗
  • 当月作废的采购发票已认证账务如何处理?
  • 个税基数和社保有关系吗
  • 培训费开增值税专用发票可以抵扣吗
  • 5000以下的固定资产一次性计入费用
  • 固定资产折旧完了怎么做账
  • 融资租入固定资产的入账价值
  • linux安装和配置
  • centos怎么样
  • windows10设置无法使用
  • url是什么文件怎么打开
  • win7复制粘贴快捷键经常失效
  • Windows10系统下iis没有注册.netFrameWork4.0的原因
  • react父组件触发子组件方法
  • windows下用CMD调用COM口
  • [个人学习笔记]Android 从网络获取json并解析 --Demo
  • cocos2dx-3.1.1 labelttf与label
  • json对象如何取值
  • 结合mint-ui移动端下拉加载实践方法总结
  • js绑定函数
  • 悬浮广告怎么屏蔽
  • 批处理文件中echo什么意思
  • 三消游戏在线
  • js中的常用方法
  • python django框架
  • 锂电池税收优惠政策
  • 重庆税务登记证在哪里办理
  • 发票如何验真伪?
  • 税务局绩效工作总结
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设