Android 判断手机放置的方向

#1024程序员节|征文#

文章目录

  • 前言
  • 一、pandas是什么?
  • 二、使用步骤
    • 1.引入库
    • 2.读入数据
  • 总结


需求

老板:我有个手持终端,不能让他倒了,当他倒或者倾斜的时候要发出报警;

程序猿:我这.....

老板:要快!!!明天就要看到接过

程序猿:就让他爆炸吧😆😆😆😆😆😆

一、陀螺仪传感器

       陀螺仪传感器又叫做角速度传感器。它是能检测到物体在空间中的姿态,朝向及转动角度的传感器。它被广泛应用于航空航天导航,便携智能设备体感检测,以及汽车姿态的传感等各个方面。陀螺仪与加速度计的主要区别就是陀螺仪主要用来测量角速度的,而加速度计是测线性加速度的。

看了上面的介绍,哎  能达到这个要求呦

二、使用步骤

1.判断设备是否支持陀螺仪传感器

val sensorManager = getSystemService(SENSOR_SERVICE) val defaultSensor = sensorManager?.getDefaultSensor(Sensor.TYPE_GYROSCOPE)
if(null!=defaultSensor ){
//支持
}else{
//不支持
}

2.注册陀螺仪传感器监听

代码如下:

sensorManager.registerListener(this, defaultSensor, SensorManager.SENSOR_DELAY_NORMAL) override fun onSensorChanged(event: SensorEvent?) {if (event!!.sensor.type == Sensor.TYPE_GYROSCOPE) {// 陀螺仪角度变更事件val x = event.values[0] //X轴val y = event.values[1]  //Y轴val z = event.values[2]  //Z轴 }}override fun onAccuracyChanged(sensor: Sensor?, accuracy: Int) {Log.e("TAG", "精度变化: $accuracy")}

注意:

1、在获取到监听的时候,使用z轴一个轴的判断也是可以的,但是他的值有时候会固定增加,在时候的时候最好也是结合上x轴和y轴的值,三个值一起判断,这样判断起来更加准确。

2、一定要使用多个设备进行反复测试,因为这个陀螺仪有可能在每一台设备中的初始值都是不一样的。

3、建议写个校准功能,这样如果每一台设备的值都不一样,就可以每一台设备进行独立校准了,更加灵活并且判断的也更加准确。

3.常用传感器的种类

 

类型说明用途
TYPE_ACCELEROMETER
加速计传感器:测量在所有三个物理轴向(x、y 和 z)上施加在设备上的加速力(包括重力),以 m/s2 为单位。动态检测(摇晃、倾斜等)
TYPE_GRAVITY
重力传感器:测量在所有三个物理轴向(x、y、z)上施加在设备上的重力,单位为 m/s2。动态检测(摇晃、倾斜等)
TYPE_GYROSCOPE
陀螺仪传感器:测量设备在三个物理轴向(x、y 和 z)上的旋转速率,以 rad/s 为单位。动态检测(摇晃、倾斜等)
TYPE_LIGHT
光传感器:测量环境光级(照度),以 lx 为单位。控制屏幕亮度,自动调节亮度
TYPE_MAGNETIC_FIELD
磁场传感器:测量所有三个物理轴向(x、y、z)上的环境地磁场,以 μT 为单位。罗盘
TYPE_ORIENTATION
方向传感器:测量设备围绕所有三个物理轴(x、y、z)旋转的度数。从 API 级别 3 开始,您可以结合使用重力传感器、地磁场传感器和 getRotationMatrix() 方法来获取设备的倾角矩阵和旋转矩阵。确定设备位置
TYPE_PROXIMITY
接近传感器:测量物体相对于设备显示屏幕的距离,以 cm 为单位。该传感器通常用于确定手机是否被举到人的耳边。通话过程中手机的位置;例如贴近耳朵的时候屏幕变暗
TYPE_ROTATION_VECTOR
旋转矢量传感器:通过提供设备旋转矢量的三个元素来检测设备的屏幕方向。动态检测和旋转检测。

看Sensor这个类里面的传感器是有42种传感器类型,但是有的手机会支持有的手机不支持,还得需要根据当前手机支不支持来判断了,以上只列举了常用的几种类型。


总结

 传感器需要硬件的配合,一定要检测好硬件是否支持。如果硬件不支持,开发一切都是徒劳的!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/58056.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习4

第3章 线性模型 3.1 线性模型的基本形式 3.1.1 线性模型的核心公式 线性模型通过属性的线性组合进行预测,其核心公式为: [ f(x) \omega_1 X_1 \omega_2 X_2 … \omega_d X_d b ] 其中: ω 1 , ω 2 , . . . , ω d \omega_1, \omega_…

医疗实施-项目管理06-估算成本

估算成本 估算成本介绍作用注意事项 常见的估算方法自上而下估算数据分析-储备分析三点估算PERT 常见的估算分类根据产品进行估算根据实施计划估算 估算成本介绍 作用 估算成本是对完成项目所需资源成本进行类似估算的过程。 作用:确定项目所需资金 注意事项 注…

2024-09-28 地址空间与进程控制

一、进程地址空间 Pt.2 同一个变量,地址相同,其实是虚拟地址相同,内容不同其实是被映射到了不同的物理地址 1. 页表 内存保护与页表标志位 在操作系统中,页表用于管理内存的访问权限。每个页表项通常包含一组标志位&…

SZTU数科导论实验_pandas知识点总结

Pandas nunique示例 value_counts主要功能参数示例输出示例 groupby主要功能常用操作基本语法示例输出示例常用聚合方法 这个函数参数中的as_index选择True或者False有什么影响呢参数 as_indexTrue(默认)参数 as_indexFalse适用场景 info示例代码输出解释…

Spring Boot技术在厨艺交流平台中的创新应用

摘 要 使用旧方法对厨艺交流信息进行系统化管理已经不再让人们信赖了,把现在的网络信息技术运用在厨艺交流信息的管理上面可以解决许多信息管理上面的难题,比如处理数据时间很长,数据存在错误不能及时纠正等问题。 这次开发的厨艺交流平台功能…

二:Python学习笔记--基础知识(1) 变量,关键字,数据类型,赋值运算符,比较运算符

目录 1. 变量 2. python关键字 3. python数据类型 3.1 数字类型 整型 int 浮点型 float 内置函数-type 3.2 字符串类型 3.3 布尔类型 3.4 空类型 3.5 列表类型 3.6 元组类型 3.7 字典类型 4. python赋值运算 5. python比较运算符 1. 变量 组成:必须是数…

基于SSM的BBS社区论坛系统源码

运行环境:ideamysql5.7jdk8maven 使用技术:ssmmysqlshirolayui 功能模块:用户管理、模板管理、帖子管理、公告管理、权限管理等

yolov9目标检测/分割预测报错AttributeError: ‘list‘ object has no attribute ‘device‘常见汇总

这篇文章主要是对yolov9目标检测和目标分割预测测试时的报错,进行解决方案。 在说明解决方案前,严重投诉、吐槽一些博主发的一些文章,压根没用的解决方法,也不知道他们从哪里抄的,误人子弟、浪费时间。 我在解决前&…

Lampiao靶机入侵实战

07-Lampiao靶机入侵实战 一、扫描采集信息 1、获取IP地址 nmap -sn 192.168.81.0/24获得IP地址为:192.168.81.1282、获取端口信息 由于nmap默认情况下只扫描常用的1000个端口,覆盖面并不全,所以建议全端口扫描 nmap -p 1-65535 192.168.…

DiffusionDet: Diffusion Model for Object Detection—扩散模型检测论文解析

DiffusionDet: Diffusion Model for Object Detection—扩散模型检测论文解析 这是一篇发表在CVPR 2023的一篇论文,因为自己本身的研究方向是目标跟踪,之前看了一点使用扩散模型进行多跟踪的论文,里面提到了DiffusionDet因此学习一下。 论文…

读数据工程之道:设计和构建健壮的数据系统21数据获取

1. 数据获取 1.1. 数据获取是将数据从一个地方移动到另一个地方的过程 1.1.1. 数据获取与系统内部获取是不同的 1.2. 数据获取是数据工程生命周期中将数据从源系统移入存储的一个中间步骤 1.3. 数据集成则是将来自不同来源系统的数据组合到一个新的数据集 1.4. 数据获取的…

Java中如何实现对象的序列化与反序列化过程?

1、Java中如何实现对象的序列化与反序列化过程? 在Java中,对象序列化是一个过程,该过程可以将对象的状态(属性)转化为可以传输或者存储的形式,然后再将对象状态(属性)反序列化回对象…

数字后端零基础入门系列 | Innovus零基础LAB学习Day6

今天没有具体的数字IC后端lab实验。今天的重点是熟悉掌握静态时序分析STA中的几类timing path以及setup和hold检查机制(包含setup和hold计算公式)。 芯片流片失败的那些故事 数字后端零基础入门系列 | Innovus零基础LAB学习Day5 等大家把今天内容学习…

QT获取本机所有IP地址以及修改本机IP(注意区分Windows和Linux环境)

QT 获取本机所有 IP 地址 Chapter1 QT 获取本机所有 IP 地址获取本机所有 IP 地址,包括 IPV6的地址,需要引用 QNetworkInterface1.检索所有网络接口:2.获取接口的详细信息:3.获取接口的 IP 地址:4.用于网络诊断和监控&…

KEYSIGHT E4980A是德E4980AL 精密LCR表

Keysight E4980A 精密 LCR 表为各种元件测量提供了精度、速度和多功能性的最佳组合。 E4980A 在低阻抗和高阻抗范围内提供快速测量速度和出色的性能,是元件和材料的一般研发和制造测试的终极工具。 LAN、USB 和 GPIB PC 连接可提高您的设计和测试效率。 Keysight E4…

大语言模型的Scaling Law【Power Low】

NLP-大语言模型学习系列目录 一、注意力机制基础——RNN,Seq2Seq等基础知识 二、注意力机制【Self-Attention,自注意力模型】 三、Transformer图文详解【Attention is all you need】 四、大语言模型的Scaling Law【Power Low】 文章目录 NLP-大语言模型学习系列目录一、什么是…

华为HarmonyOS实现实时语音识别转文本

场景介绍 将一段音频信息(短语音模式不超过60s,长语音模式不超过8h)转换为文本,音频信息可以为pcm音频文件或者实时语音。 开发步骤 在使用语音识别时,将实现语音识别相关的类添加至工程。 import { speechRecogni…

练习LabVIEW第十九题

学习目标: 刚学了LabVIEW,在网上找了些题,练习一下LabVIEW,有不对不好不足的地方欢迎指正! 第十九题: 创建一个程序把另外一个VI的前面板显示在Picture控件中 开始编写: 在前面板放置一个二…

第二十七节 图像的卷积操作

图像的卷积操作 图像的卷积操作可以看成是一个窗口区域在另一个大的图像上移动,对每个窗口覆盖的区域都进行点成得到的的值作为像素点的输出值,窗口的移动是从左到右,从上到下,窗口可以理解成一个指定大小的二维矩阵,…

iOS AVAudioSession 详解【音乐播放器的配置】

前言 在 iOS 音频开发中,AVAudioSession 是至关重要的工具,它控制着应用的音频行为,包括播放、录音、后台支持和音频中断处理等。对于音乐播放器等音频需求强烈的应用,设计一个合理的 AVAudioSession 管理体系不仅能保证音频播放…