热门标签 | HotTags
当前位置:  开发笔记 > Android > 正文

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

这篇文章主要为大家详细介绍了Android利用传感器实现微信摇一摇功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了Android微信摇一摇功能的实现方法,供大家参考,具体内容如下

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); 
 
 } 
 
 } 
 
} 
 
} 

现在的不少应用都用到了摇动手机改变内容的功能,比如微信中的“摇一摇”功能。前两天要实现这个功能,稍微看了一下关于传感器Sensor的内容。

传感器有几种类型:

方向传感器:   Sensor.TYPE_ORIENTATION
加速度(重力)传感器: Sensor.TYPE_ACCELEROMETER
光线传感器:    Sensor.TYPE_LIGHT
磁场传感器:   Sensor.TYPE_MAGNETIC_FIELD
距离(临近性)传感器: Sensor.TYPE_PROXIMITY
温度传感器:   Sensor.TYPE_TEMPERATURE

在摇动手机的功能中,我们只用加速度传感器就行了~~

加速度传感器返回值的单位是加速度的单位 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的文字的代码。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


推荐阅读
  • 【Linux进阶指南】第一阶段第三课:体验与部署Ubuntu系统
    在正式踏上Linux学习之旅之前,本课程将引导你深入体验和部署Ubuntu系统。通过详细的操作步骤和实践演练,你将掌握Ubuntu的基本安装、配置及常用命令,为后续的进阶学习打下坚实的基础。此外,课程还将介绍如何解决常见问题和优化系统性能,帮助你更加高效地使用Ubuntu。 ... [详细]
  • 本文源自极分享,详细内容请参阅原文。技术债务如同信用卡负债,随着时间推移,修复成本会越来越高,因此程序员必须对此有深刻认识。此外,团队应致力于培养一种持续维护和优化代码的文化,以减少技术债务的累积。 ... [详细]
  • TensorFlow Lite在移动设备上的部署实践与优化笔记
    近期在探索如何将服务器端的模型迁移到移动设备上,并记录了一些关键问题和解决方案。本文假设读者具备以下基础知识:了解TensorFlow的计算图(Graph)、图定义(GraphDef)和元图定义(MetaGraphDef)。此外,文中还详细介绍了模型转换、性能优化和资源管理等方面的实践经验,为开发者提供有价值的参考。 ... [详细]
  • 移动搜索格局已定,切勿误解微信搜索的真正实力
    近期,微信新版本的内测界面曝光,新增了朋友圈搜索和附近商户搜索功能。种种迹象显示,微信正不断强化其搜索能力。尽管移动搜索市场格局已基本稳定,但不应低估微信搜索的潜力。微信不仅在聊天工具、移动浏览器和新闻阅读等领域持续发力,还在通过搜索功能进一步巩固其在移动互联网领域的地位。 ... [详细]
  • 大家好,全新的技术专栏《从零开始掌握容器云网络实战》正式上线。该专栏将系统地介绍容器云网络的基础知识、核心技术和实际应用案例,帮助读者全面理解和掌握容器云网络的关键技术与实践方法。 ... [详细]
  • 设计实战 | 10个Kotlin项目深度解析:首页模块开发详解
    设计实战 | 10个Kotlin项目深度解析:首页模块开发详解 ... [详细]
  • 理解和应用HTTP请求中的转发与重定向机制
    在HTTP请求处理过程中,客户端发送请求(通常简称为req),服务器进行相应处理后返回响应(通常简称为res)。理解和应用客户端的转发与重定向机制是前端开发的重要内容。这两种机制在Web开发中具有关键作用,能够有效管理和优化用户请求的处理流程。转发机制允许服务器内部将请求传递给另一个资源,而重定向则指示客户端向新的URL发起新的请求,从而实现页面跳转或资源更新。掌握这些技术有助于提升应用的性能和用户体验。 ... [详细]
  • 如何高效地将微信收藏夹中的内容导出至外部设备或平台? ... [详细]
  • 本章节在上一章的基础上,深入探讨了如何通过引入机器人实现自动聊天、表情包回应以及Adidas官方账号的自动抽签功能。具体介绍了使用wxpy库进行微信机器人的开发,优化了智能回复系统的性能和用户体验。通过详细的代码示例和实践操作,展示了如何实现这些高级功能,进一步提升了机器人的智能化水平。 ... [详细]
  • 基于Java的微信小程序:Spring Boot驱动的中小学家校互动与电子作业管理平台
    基于Java的微信小程序,采用Spring Boot作为后端框架,构建了一个高效的中小学家校互动与电子作业管理平台。前端使用了uni-app框架,确保跨平台兼容性。该平台集成了家校沟通、作业发布与管理、学生成绩查询等功能,旨在提升教育管理效率和家长参与度。后端开发环境配置完善,采用Spring Boot、MyBatis等技术栈,确保系统的稳定性和扩展性。 ... [详细]
  • 如何在微信中查看最近三天的朋友圈动态?详解微信最近3天朋友圈展示功能
    微信最近推出了一个新功能,允许用户仅展示最近三天的朋友圈动态。这一更新为用户提供了更高的隐私保护和内容管理灵活性。通过这项功能,用户可以选择将朋友圈内容限制在最近72小时内,从而避免过多的个人历史信息暴露给他人。具体操作步骤简单便捷,用户可以在设置中轻松启用该功能。 ... [详细]
  • 微信小程序图片上传功能详解:wx.chooseImage与wx.uploadFile的使用方法与注意事项
    在微信小程序中,图片上传功能是开发者常用的功能之一。本文详细介绍了 `wx.chooseImage` 和 `wx.uploadFile` 的使用方法及注意事项。通过 `wx.chooseImage`,用户可以选择本地图片或拍摄新照片,而 `wx.uploadFile` 则用于将选中的图片上传到服务器。文章还提供了代码示例,帮助开发者更好地理解和应用这两个 API。此外,文中还讨论了常见的错误处理和性能优化技巧,确保图片上传过程的稳定性和高效性。 ... [详细]
  • 如何正确获取Oracle TNS_ADMIN环境变量的值
    如何正确获取Oracle TNS_ADMIN环境变量的值?TNS_ADMIN 是 Oracle 客户端配置中的一个重要环境变量,用于指定网络配置文件(如 tnsnames.ora)的路径。本文将详细介绍如何在不同操作系统中准确获取该变量的值,并提供实用的命令和步骤,帮助用户确保 Oracle 客户端的网络连接配置正确无误。 ... [详细]
  • JBPM 6.5 环境配置深入解析(下篇)
    本文深入探讨了JBPM 6.5 的环境配置细节,从零开始详细介绍了下载、解压后的文件结构,并结合实际操作步骤,为初学者提供了全面的配置指南。通过具体的示例和详细的解释,帮助读者快速掌握 JBPM 6.5 的安装与配置过程。 ... [详细]
  • 利用CSV Data Set Config实现JMeter参数化测试的详细指南
    本文详细介绍了如何使用JMeter中的CSV Data Set Config元素来实现参数化测试。通过该配置元件,用户可以轻松地从外部CSV文件中读取数据,从而提高测试的灵活性和可扩展性。文章不仅提供了具体的配置步骤,还结合实际案例,展示了如何在不同的测试场景中应用这一功能,帮助读者更好地理解和掌握JMeter参数化测试的技巧。 ... [详细]
author-avatar
手机用户2502860727
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有