广告
返回顶部
首页 > 资讯 > 移动开发 >Android实现传感器功能
  • 553
分享到

Android实现传感器功能

2024-04-02 19:04:59 553人浏览 独家记忆
摘要

Android传感器概述:动作传感器、环境传感器、位置传感器等,如方向传感器(电子罗盘)、重力传感器(横纵切换)。Android SDK支持的传感器并不是每一部Android手机均支

Android传感器概述:动作传感器、环境传感器、位置传感器等,如方向传感器(电子罗盘)、重力传感器(横纵切换)。Android SDK支持的传感器并不是每一部Android手机均支持。

动作传感器:在三个轴上测量加速度和旋转角度,包括加速度、重力、陀螺仪;

环境传感器:测量环境参数,包括湿度、光线、温度;

位置传感器:测量设备物理位置,包括方向、磁力。

ASF(Android传感器框架)功能:确定当前Android设备内置传感器;确定传感器技术指标,如传感器测量的最大范围、制造商等;获取传感器回传数据,以及定义回传数据的精度;注册和注销传感器事件监听器,用于监听数据回传。

硬件传感器:加速、温度、陀螺仪、光线、磁场、重力(视情况而定)、线性加速(视情况而定)、湿度、压力、临近、旋转向量

软件传感器:方向。

SensorManager类:创建sensor service实例。访问、枚举、注册、注销监听器、精度、频率等。

Sensor类:提供获取传感器参数。

SensorEvent类:创建传感器事件对象,该对象提供与传感器有关信息,事件对象包括的信息有原始传感器回传数据、类型、精度以及触发事件。

SensorEventListener接口:包含两个回调方法,当传感器回传值或精度发生变化时,系统调用这两个方法。

动作传感器(Motion):监听设备动作的传感器有5个,加速、陀螺仪纯硬件传感器,重力、线性加速、旋转。监测Android手机的动作,如倾斜、震动等。设备的移动通常是对用户输入的直接反应,如游戏中控制小球;设备所处物理环境也会反应在设备的动作上,如手机放在车上。所有动作传感器均会返回3个浮点数值(长度为3的数组)。

重力Demo:设备从左到右推动,X轴加速度为正值;反向Y轴加速度为正值,若向上以Am/s方加速度推动,则Z轴加速度为A+9.81,若计算实际加速度,需要减9.81。

位置传感器:磁场、方向传感器,邻近传感器(测量设备正面到某一个邻近物体的距离)。对于确定设备在真实世界中的物理位置非常有用。前两者返回三个值,邻近返回一个值。

方向传感器:

SensorEvent.values[0]:绕着Z轴旋转的角度。若Y轴正对北方(正常拿手机方向),该值为0,反之,为南,该值180,Y轴指向东方,该值90,反之270。

SensorEvent.values[1]:绕着X轴旋转的角度,当从Z轴正方向朝Y轴正方向,该值为正值,反之,为负值,该值在-180到180中间变动。

SensorEvent.values[2]:绕着Y轴旋转的角度。当从Z轴正方向朝X轴正方向,该值为正值,反之,为负值,该值在-180到180中间变动。

邻近传感器:SensorEvent.values[0]:手机正面距离邻近物体的距离(CM)。

环境传感器:Android提供了4个传感器检测外部环境,如湿度、温度、压强、光线,并不是所有传感器均有,需要提前判断。环境传感器只返回一个值。

TYPE_AMBIENT_TEMPERATURE:event.values[0]  ℃  温度

TYPE_LIGHT:event.values[0]  lx  光线

TYPE_PRESSURE:event.values[0]  hPa  压强

TYPE_RELATIVE_HUMIDITY:event.values[0]  RH(%)  湿度

一、获得当前设备所有的传感器列表

import android.hardware.Sensor;
import android.hardware.SensORManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
import java.util.List;
 
public class MainActivity extends AppCompatActivity {
    private TextView tvSensor;
    private SensorManager sensorManager;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tvSensor = (TextView) findViewById(R.id.tvSensor);
        sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
        List<Sensor> sensors = sensorManager.getSensorList(Sensor.TYPE_ALL);
        for (Sensor sensor:sensors){
            tvSensor.append(sensor.getName()+"\n");
        }
    }
}

二、动作传感器示例

import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
 
public class MainActivity extends AppCompatActivity implements SensorEventListener {
    private TextView tvAccelerometer;
    private SensorManager sensorManager;
    private float[] gravity = new float[3];
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tvAccelerometer = (TextView) findViewById(R.id.tvAccelerometer);
        sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
    }
 
    @Override
    public void onSensorChanged(SensorEvent event) {
        switch (event.sensor.getType()){
            case Sensor.TYPE_ACCELEROMETER:
                final float alpha = (float)0.8;
                gravity[0] = alpha*gravity[0]+(1-alpha)*event.values[0];
                gravity[1] = alpha*gravity[1]+(1-alpha)*event.values[1];
                gravity[2] = alpha*gravity[2]+(1-alpha)*event.values[2];
                String accelerometer = "加速度\n"+"X:"+(event.values[0]-gravity[0])+"\n"+"Y:"+
                        (event.values[1]-gravity[1])+"\n"+"Z:"+(event.values[2]-gravity[2]);
                Log.d("Z",String.valueOf((event.values[2]-gravity[2])));
                tvAccelerometer.setText(accelerometer);
                break;
            case Sensor.TYPE_GRAVITY:
                gravity[0] = event.values[0];
                gravity[1] = event.values[1];
                gravity[2] = event.values[2];
                break;
            case Sensor.TYPE_PROXIMITY:
                setTitle(String.valueOf(event.values[0]));
            default:
                break;
        }
    }
 
    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {
 
    }
    protected void onResume(){
        super.onResume();
        sensorManager.reGISterListener(this,sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
                SensorManager.SENSOR_DELAY_UI);
        sensorManager.registerListener(this,sensorManager.getDefaultSensor(Sensor.TYPE_GRAVITY),
                SensorManager.SENSOR_DELAY_FASTEST);
        sensorManager.registerListener(this,sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY),
                SensorManager.SENSOR_DELAY_NORMAL);
    }
    protected void onPause(){
        super.onPause();
        sensorManager.unregisterListener(this);
    }
}

以下是小米2s测试效果:

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

--结束END--

本文标题: Android实现传感器功能

本文链接: https://www.lsjlt.com/news/167946.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android实现传感器功能
    Android传感器概述:动作传感器、环境传感器、位置传感器等,如方向传感器(电子罗盘)、重力传感器(横纵切换)。Android SDK支持的传感器并不是每一部Android手机均支...
    99+
    2022-11-13
  • Android利用Sensor实现传感器功能
    本文实例为大家分享了Android利用Sensor实现传感器的具体代码,供大家参考,具体内容如下 一、传感器的使用 1、传感器的类型: 方向传感器::Sensor.TYPE_ORIE...
    99+
    2022-11-12
  • Android如何利用Sensor实现传感器功能
    小编给大家分享一下Android如何利用Sensor实现传感器功能,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!具体内容如下一、传感器的使用1、传感器的类型:方向传感器::Sensor.TYPE_ORIENTATION加速...
    99+
    2023-06-25
  • Android利用Sensor(传感器)实现水平仪功能
    这里介绍的水平仪,指的是比较传统的气泡水平仪,在一个透明圆盘内充满液体,液体中留有一个气泡,当一端翘起时,该气泡就会浮向翘起的一端。 利用方向传感器返回的第一个参数,实现了一...
    99+
    2022-06-06
    水平仪 传感器 Android
  • Android利用Sensor(传感器)实现指南针小功能
    首先来说一说该指南针的实现思路: 程序先准备一张指南针图片,该图片上方向指针指向北方。接下来开发一个检测方向的传感器,程序检测到手机顶部绕Z轴转过多少度,让指南针图片反向转多...
    99+
    2022-06-06
    传感器 Android
  • Android利用传感器实现微信摇一摇功能
    本文实例为大家分享了Android微信摇一摇功能的实现方法,供大家参考,具体内容如下 import java.util.ArrayList; import java.ut...
    99+
    2022-06-06
    传感器 Android
  • Android实现接近传感器
    本文实例为大家分享了Android实现接近传感器的具体代码,供大家参考,具体内容如下 1.接近传感器检测物体与听筒(手机)的距离,单位是厘米。 一些接近传感器只能返回远和...
    99+
    2022-06-06
    传感器 Android
  • 怎么在Android项目中实现一个重力传感器功能
    怎么在Android项目中实现一个重力传感器功能?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。首先我们创建一个传感器管理器和一个传感器监听器,管理器用来管理传感...
    99+
    2023-05-30
    android
  • Android如何使用加速度传感器实现摇一摇功能
    这篇文章将为大家详细讲解有关Android如何使用加速度传感器实现摇一摇功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体如下:目前很多应用已经实现了摇一摇功能,这里通过讲解该功能的原理及实现回顾一下...
    99+
    2023-05-30
    android
  • android实现手机传感器调用
    android传感器使用的demo,包括光线传感器,加速度传感器,距离传感器和方向传感器。 demo:下载地址 源码: package com.bobo.study.stud...
    99+
    2022-06-06
    调用 手机传感器 传感器 手机 Android
  • Android利用传感器仿微信摇一摇功能
    传感器简单的介绍一下传感器: 就是设备用来感知周边环境变化的硬件。Android中的传感器包含在传感器框架中,属于android.hardware.*(硬件部分)传感器框架主要包含四个部分:① SensorManager:用来获取传感器的入...
    99+
    2023-05-31
    android 摇一摇
  • Android中的传感器
    Android系统提供了对传感器的支持,手机硬件如哦提供了这些传感器,则Android应用可以通过传感器来获取设备外界条件,包括手机的运行状态、外界磁场、温度压力等。Android系统提供了驱动程序来管理这些传感器硬件,对于开发者来说,只要...
    99+
    2023-08-31
    android android studio ide Powered by 金山文档
  • Android利用Senser实现不同的传感器
    传感器有不同的类型,以下是我列出的光线,加速度,风向传感器,在测试不同传感器的时候都需将传感器管理的onResume中sensorManager.registerListene...
    99+
    2022-06-06
    传感器 Android
  • Android传感器编程带实例
      一、前言   我很喜欢电脑,可是笔记本还是太大,笔记本电脑再小还是要弄个小包背起来的,智能手机则不同,它完全是一个手机,可以随意装在一个口袋里随身携带。因此我在20...
    99+
    2022-06-06
    Android
  • Android 传感器--光照传感器详解及使用
    Android 设备中有许多传感器,其中有一个传感器控制着你屏幕亮度的变化。当你在很暗的地方使用手机,你设备的屏幕会自动调暗,从而保护你眼睛。 起着这样作用,Android是通...
    99+
    2022-06-06
    光照传感器 传感器 Android
  • Android实现图片上传功能
    最近在开发中,涉及到用户的意见反馈功能这一方面的开发,需要用户输入的文字或者提交的图片,效果大概类似于微信朋友圈那样的图片选择器,一开始自己找了个用universal-imag...
    99+
    2022-06-06
    图片上传 图片 Android
  • Android实现断点续传功能
    本文实例为大家分享了Android实现断点续传的具体代码,供大家参考,具体内容如下 断点续传功能,在文件上传中断时,下次上传同一文件时,能在上次的断点处继续上传,可节省时间和流量 总...
    99+
    2022-11-13
  • Android实现上传图片功能
    本文实例为大家分享了Android实现上传图片功能的具体代码,供大家参考,具体内容如下 设定拍照返回的图片路径 protected void image(String...
    99+
    2022-11-12
  • Android重力传感器实现滚动的弹球
    熟知: 什么是传感器:      所谓传感器能够探测如光、热、温度、重力、方向 等等的功能! Android中提供传感器有哪些: &nb...
    99+
    2022-06-06
    传感器 Android
  • Android传感器使用实例介绍
    目录传感器磁场传感器加速度传感器方向传感器传感器 1.mainActivity 实现SensorEventListerner 方法 2. 定义:SensorManage 对象 3. ...
    99+
    2022-12-16
    Android传感器开发 Android传感器
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作