【Android开发基础】手机传感器信息的获取

news2024/10/6 22:23:47

文章目录

    • 一、引言
    • 二、了解
      • 1、概述
      • 2、关键
    • 三、设计
      • 1、UI设计
        • (1)主界面
        • (2)适配器item
      • 2、编码
        • (1)获取数据(传感器信息)
        • (2)渲染数据(初始化适配器)

一、引言

  • 描述:关于传感器的使用,我在同栏目下发了一篇关于传感器(方向传感器、加速度传感器)的使用,这篇博客主要以获取不同手机所支持的传感器信息为主,具体如何使用这些传感器,需要自己进行查阅和学习,也可以私聊我。
  • 博客:传感器(方向传感器、加速度传感器):http://t.csdn.cn/mLstV
  • 难度:初级
  • 知识点:Sensors
  • 效果
    在这里插入图片描述

二、了解

1、概述

(首先看一下官网文档)
在这里插入图片描述
(大致意思)

       大多数 Android 设备都有内置传感器,可以测量运动、方向、 以及各种环境条件。这些传感器能够提供高 精度和准确度,在要监视三维设备移动或 定位,或者您想要监视设备附近周围环境的变化。例如,一个 游戏可能会跟踪设备重力传感器的读数,以推断复杂的用户手势 和运动,例如倾斜、摇晃、旋转或摆动。同样,天气应用程序可能会使用 设备的温度传感器和湿度传感器,用于计算和报告露点或行程 应用程序可以使用地磁场传感器和加速度计来报告指南针 轴承。

Android 平台支持三大类传感器:

运动传感器
这些传感器测量沿三个轴的加速力和旋转力。这 类别包括加速度计、重力传感器、陀螺仪和旋转矢量 传感器。

环境传感器
这些传感器测量各种环境参数,例如环境空气温度 以及压力、照明和湿度。此类别包括气压计、光度计和 温度计。

位置传感器
这些传感器测量设备的物理位置。此类别包括 方向传感器和磁力计。

2、关键

如果要遍历所有传感器,那么这个就是关键

在这里插入图片描述

List<Sensor> sensors = sm.getSensorList(Sensor.TYPE_ALL);

三、设计

如果只是遍历传感器信息,一个BaseAdapter适配器即可

1、UI设计

(1)主界面

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:orientation="vertical">

    <Button
        android:id="@+id/bin_sensor"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="获取当前设备支持的传感器"/>

    <ListView
        android:id="@+id/list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</LinearLayout>

(2)适配器item

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/name"
        android:layout_width="match_parent"
        android:layout_height="75dp"
        android:textSize="18dp"/>
    
</LinearLayout>

2、编码

(1)获取数据(传感器信息)

	private Button sensor;
    private SensorManager sm;
    private ListView list;
    private String[] adapterData;
    
    private void init() {
        list = findViewById(R.id.list);

        sm = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
        sensor = findViewById(R.id.bin_sensor);
        sensor.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                List<Sensor> sensors = sm.getSensorList(Sensor.TYPE_ALL);
                adapterData = new String[sensors.size()];
                for (int i = 0;i < sensors.size();i++) {
                    adapterData[i] = sensors.get(i).getName();
                }
                // 初始化适配器
                initAdapter();
            }
        });
    }

(2)渲染数据(初始化适配器)

    static class AppView{
        TextView name;
    }

    private void initAdapter() {
        BaseAdapter baseAdapter = new BaseAdapter() {
            @Override
            public int getCount() {
                return adapterData.length;
            }

            @Override
            public Object getItem(int position) {
                return adapterData[position];
            }

            @Override
            public long getItemId(int position) {
                return position;
            }

            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
                AppView appView = null;
                if (convertView == null) {
                    convertView = View.inflate(MainActivity.this,R.layout.layout_item,null);
                    appView = new AppView();
                    appView.name = convertView.findViewById(R.id.name);
                    convertView.setTag(appView);
                } else {
                    appView = (AppView) convertView.getTag();
                }
                appView.name.setText(adapterData[position]);
                return convertView;
            }
        };
        list.setAdapter(baseAdapter);
    }

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

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

相关文章

SpringBoot不在使用@Validated 做参数校验但是不想在Controller层怎么办?

目录 场景再现&#xff1a; 怎么做&#xff1f; 遇到了什么问题&#xff1f; 怎么实现&#xff1f; 场景再现&#xff1a; 某API接口接受加密的json字符串&#xff0c;接受字符串之后先进行解密处理&#xff0c;解密完成之后还要进行参数校验处理&#xff0c;如果参数不合规…

华为HCIA备考(数通) 易错题整理 PART1

1.IEEE802.1Q定义的 VLAN 帧格式中VLAN ID总共有多少bit 答&#xff1a;12 2.NAPT允许多个私有IP地址通过不同的端口号映射到同一个公有IP地址上&#xff0c;且不需要做任何关于端口号的配置。 3.IEEE802.1Q定义的VLAN帧总长度为多少字节&#xff1f; 答&#xff1a;4 4.关于…

2023亚马逊云科技中国峰会:强化学习探索—— Amazon DeepRacer

1️⃣前言 Amazon DeepRacer 是一个综合性的学习系统&#xff0c;可供各个水平的用户用来学习和探索强化学习以及试验和构建自动驾驶应用程序。 2️⃣Amazon DeepRacer 介绍 DeepRacer是一款小型自主驾驶车辆&#xff0c;它结合了深度学习、强化学习和云计算等技术&#xff0c…

Karl Guttag评Vision Pro(二):这些硬件问题不容忽视

上周&#xff0c;AR/VR光学专家Karl Guttag从价格、VST透视、应用、交互等方面&#xff0c;将Vision Pro与Quest Pro进行对比&#xff0c;发现Vision Pro在设计上做出更多正确决策。尽管如此&#xff0c;Guttag认为该头显本身在硬件部分&#xff0c;依然存在一些不易发现的问题…

C语言结构体计算大小结构体的对齐数,修改默认对齐数。

结构体的对齐规则 第一个成员在与结构体变量偏移量为0的地址处。剩余成员变量要对齐到对齐数的整数倍的地址处。 对齐数&#xff1a;编译器默认对齐数与该成员大小的较小值vs中默认对齐数为8没有默认对齐数&#xff0c;那么对齐数就是其本身成员大小 结构体总大小为最大对齐数…

2个小工具让你轻松解决大数据/数据库测试

目录 前言&#xff1a; 研究背景 工具 支持功能 支持功能 使用方法 总结 前言&#xff1a; 做大数据/数据库测试时&#xff0c;通常需要编写复杂的测试用例代码或手动操作来测试系统的正确性和稳定性。但是&#xff0c;有些小工具可以轻松解决这个问题&#xff0c;提高测试效率…

python自动化测试- 自动化框架及工具

1 概述 手续的关于测试的方法论&#xff0c;都是建立在之前的文章里面提到的观点&#xff1a; 功能测试不建议做自动化接口测试性价比最高接口测试可以做自动化 后面所谈到的 测试自动化 也将围绕着 接口自动化 来介绍。 如果你想学习自动化测试&#xff0c;我这边给你推…

智慧绿色档案馆之八防一体化解决系统方案

主要涉及系统&#xff1a; 智慧档案馆温湿度监控系统 智慧档案馆净化系统 智慧档案馆防火监控系统 智慧档案馆防盗监控系统 智慧档案馆漏水监控系统 智慧档案馆空气质量监控系统 智慧档案馆自动化恒温恒净化系统 智慧档案馆大数据云平台建设系统 &#xff08;一&#xff09;技…

C语言实现青蛙跳台阶问题【图解】

目录 问题分析方法1&#xff1a;找规律问题分析方法2&#xff1a;递归两种方法的代码 题目 一只青蛙一次可以跳上1级台阶&#xff0c;也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法&#xff1f; 问题分析方法1&#xff1a;找规律 当n1时&#xff0c;显然…

vue+Nodejs+Koa搭建前后端系统(六)-- 用户登录

前言 采用vue3&#xff0c;vue-router版本为4.x前端构建工具采用viteIDE采用VSCODE&#xff0c;安装了MYSQL客户端插件 前端编写 安装并使用 vue-router 如果有vue-router&#xff0c;就略过这一小节。 vue-router完整教程&#xff1a;点这里>> 第一步&#xff1a;n…

MySQL ⽀持哪些存储引擎?默认使⽤哪个?MyISAM 和 InnoDB 引擎有什么区别,如何选择?

&#x1f4a7; M y S Q L ⽀持哪些存储引擎&#xff1f;默认使⽤哪个&#xff1f; M y I S A M 和 I n n o D B 引擎有什么区别&#xff0c;如何选择&#xff1f; \color{#FF1493}{MySQL ⽀持哪些存储引擎&#xff1f;默认使⽤哪个&#xff1f;MyISAM 和 InnoDB 引擎有什么区别…

centos tomcat

利用samba共享将所用的的组件复制到/usr/java/中 并给/usr/java设置777权限 Samba配置如下 重启smb服务 进入目录开始安装jdk 在当前目录解压jdk 配置环境变量 使配置生效 查看jdk版本 创建tomcat目录 解压tomcat的安装包到当前目录 进入tomcat配置目录 启动tomcat 先关闭在启…

【微服务】微服务架构设计

文章目录 背景一、流量入口Nginx二、网关三、业务组件四、服务注册中心五、缓存和分布式锁六、数据持久层七、结构型数据存储八、消息中间件九、日志收集十、任务调度中心十一、分布式对象存储 背景 当前&#xff0c;微服务架构在很多公司都已经落地实施了&#xff0c;下面用一…

01_Linux系统安装及使用

一、安装虚拟机软件 VMware16pro 安装链接&#xff1a;https://note.youdao.com/ynoteshare/index.html?id5fc5ad640596a0fbb41a21413ada4dad&typenote&_time1687172973066 二、安装Ubuntu 64 位 Linux系统 安装链接&#xff1a;https://note.youdao.com/ynoteshar…

【动态规划】简单多状态dp问题(1)打家劫舍问题

打家劫舍问题 文章目录 【动态规划】简单多状态dp问题&#xff08;1&#xff09;打家劫舍问题1. 按摩师&#xff08;打家劫舍Ⅰ&#xff09;1.1 题目解析1.2 算法原理1.2.1 状态表示1.2.2 状态转移方程1.2.3 初始化1.2.4 填表顺序1.2.5 返回值 1.3 编写代码 2. 打家劫舍Ⅱ2.1 题…

seaborn笔记:heatmap

绘制热力图 1 基本使用方法 seaborn.heatmap(data, *, vminNone, vmaxNone, cmapNone, centerNone, robustFalse, annotNone, fmt.2g, annot_kwsNone, linewidths0, linecolorwhite, cbarTrue, cbar_kwsNone, cbar_axNone, squareFalse, xticklabelsauto, yticklabelsauto, m…

C++ 教程(16)——字符串

C 字符串 C 提供了以下两种类型的字符串表示形式&#xff1a; C 风格字符串C 引入的 string 类类型 C 风格字符串 C 风格的字符串起源于 C 语言&#xff0c;并在 C 中继续得到支持。字符串实际上是使用 null 字符 \0 终止的一维字符数组。因此&#xff0c;一个以 null 结尾…

Mysql的学习笔记

目录 1、rc 级别的 mvcc 和 rr 级别的mvcc 有啥区别&#xff1f; 2、Innodb与MyIsam的文件结构&#xff1f; 3、Innodb 与MyIsam的简单对比&#xff1f; 4、innodb&#xff0c;Alter table 改字段类型&#xff0c;底层会经历什么过程&#xff1f; 5、Alter table 改字段类型…

Zebec Protocol 与 PGP 深度合作,将流支付更广泛的应用薪资支付领域

随着传统机构的入局&#xff0c;以及相关加密合规法规的落地&#xff0c;加密支付正在成为一种备受欢迎的全新支付方式。加密支付基于区块链底层&#xff0c;不受地域、时间等的限制&#xff0c;能够实时到账&#xff0c;具备去中心化、非许可等特性。 流支付是一种具备创新性的…

Jmeter和Postman做接口测试的区别你知道吗

区别1:用例组织方式 不同的目录结构与组织方式代表不同工具的测试思想&#xff0c;学习一个测试工具应该首先了解其组织方式。 Jmeter的组织方式相对比较扁平&#xff0c;它首先没有WorkSpace&#xff08;工作空间&#xff09;的概念&#xff0c;直接是TestPlan&#xff08;测…