资讯详情

CH9-HarmonyOS传感器和媒体管理

文章目录

  • 前言
  • 目标
  • 传感器概述
    • 运动传感器
    • 运动传感器工作原理
    • 主流传感器表示
  • 运作机制
    • 核心模块
    • 接口说明
    • 开发步骤
  • 使用传感器
    • 方向传感器调用示例
  • 相机调用
    • 基本概念
    • 主要接口
  • 位置传感器-位置能力
    • 基本概念
    • 运作机制
    • 获取设备位置信息
    • 接口说明
    • 开发步骤
  • 本章总结

前言

  • 与传统手机相比,智能手机最大的区别不仅在于它能快速连接网络,还在户外活动中使用GPS定位,指南北方向;
  • 跑步时,可以用来计步;爬山时可以显示海拔;你可以用相机拍照等等。
  • 所有这些都归功于手机内置丰富的传感器。充分利用传感器可以发挥手机更强大的功能,促进手机App适应更多的应用领域。

目标

  • 通过本章的学习,你可以理解:
  • HarmonyOS中的传感器分类,各种传感器基本作用
  • 掌握基本传感器如使用方向或运动传感器;
  • 掌握相机组件拍照的方法;
  • 掌握GPS传感器获取位置信息的方法。

传感器概述

运动传感器

运动传感器工作原理

20220125185203

主流传感器表示

运作机制

  • HarmonyOSOpenHarmony传感器包括以下四个模块:Sensor API、Sensor Framework、 Sensor Service、HD_IDL层。
    • Sensor API:提供传感器的基础API,主要包括查询传感器列表、订阅/取消传感器数量 简化应用开发,执行控制命令等。
    • Sensor Framework:主要实现传感器的订阅管理、数据通道的创建、销毁、订阅和取消 订阅,实现与SensorService的通信。
    • Sensor Service:主要实现HD_IDL层数据接收、分析、分发、前后台战略控制 设备Sensor的管理;Sensor权限控制等。
    • HD_IDL层:对不同的FIFO、策略选择频率;适应不同的设备。

核心模块

接口说明

  • HarmonyOS传感器提供的功能包括:查询传感器列表订阅/取消订阅传感器数据、查询传感器最小采样时间间隔执行控制命令

    • 订阅方向类别以传感器数据为例:
    • sensor.subscribeCompass(OBJECT):订阅罗盘数据变化。同一应用程序,多次点击调用时,会覆盖前面的调用效果,即最后一次调用生效。

开发步骤

  • 如果传感器权限列表中的传感器在设备上使用,要求相应的权限,只有开发者才能获得传感器数据。

  • 需要开发人员config.json里面配置权限

    "reqPermissions": [     { 
                       "name": "ohos.permission.GYROSCOPE",         "reason": "",         "usedScene": { 
                           "ability": [                 ".MainAbility"             ],
                "when": "inuse"
            }
        }
    ]
    

使用传感器

  • 以使用方向类别的传感器为例,运动类、环境类、健康类等类别的传感器使用方法类似。 步骤如下:
  • 获取待订阅数据的传感器;
  • 创建传感器回调
  • 订阅传感器数据;
  • 接收并处理传感器数据;
  • 取消订阅传感器数据。

方向传感器调用示例

  1. 引入方向类传感器对象
import sensor from '@system.sensor';
  1. 罗经数据订阅
onInit() { 
        
    sensor.subscribeCompass({ 
        
        success: function(ret) { 
        
            console.log('get data direction:' + ret.direction);
        },
        fail: function(data, code) { 
        
            console.error('subscribe compass fail, code: ' + code + ', data: ' + data);
        },
    });
},
  1. 罗经数据取消
onDestroy() { 
        
    sensor.unsubscribeCompass();
    console.log('cancel data direction collection');
}

相机调用

  • 相机:HarmonyOS相机模块支持相机业务的开发,开发者可以通过已开放的接口实现相机硬件的访问操作新功能开发最常见的操作如:预览、拍照、连拍和录像等。

基本概念

  • 相机静态能力:用于描述相机的固有能力的一系列参数,比如朝向、支持的分辨率等信息。
  • 物理相机:物理相机就是独立的实体摄像头设备。物理相机ID是用于标志每个物理摄像头的唯一字串
  • 逻辑相机:逻辑相机是多个物理相机组合出来的抽象设备,逻辑相机通过同时控制多个物理相机设备来完成相机某些功能,如大光圈、变焦等功能。逻辑摄像机ID是一个唯一的字符串,标识多个物理摄像机的抽象能力。
  • 帧捕获:相机启动后对帧的捕获动作统称为帧捕获。主要包含单帧捕获、多帧捕获、循环帧捕获。

主要接口

  • 一个页面仅支持一个camera组件,提供预览、拍照功能。

<div class="container">
    <camera flash="off" deviceposition="back" @error="cameraError" id="take">
    </camera>
    <button onclick="takephotos">拍照</button>
</div>
takephotos()
{ 
        
    var params={ 
        };
    params.quality='high';
    params.success=null;
    params.fail=null;
    params.complete=null;
    this.$element('take').takePhoto(params)
},
    
camera{ 
        
        width: 300px;
        height: 300px;
    }

位置传感器-位置能力

  • 移动终端设备已经深入人们日常生活的方方面面,如查看所在城市的天气、新闻轶事、出行打车、旅行导航、运动记录。这些习以为常的活动,都离不开定位用户终端设备的位置
  • 当用户处于这些丰富的使用场景中时,系统的位置能力可以提供实时准确的位置数据对于开发者,设计基于位置体验的服务,也可以使应用的使用体验更贴近每个用户
  • 当应用在实现基于设备位置的功能时,如:驾车导航,记录运动轨迹等,可以调用该模块的API接口,完成位置信息的获取。

基本概念

运作机制

获取设备的位置信息

  • 开发者可以调用HarmonyOS位置相关接口,获取设备实时位置,或者最近的历史位置。
  • 对于位置敏感的应用业务,建议获取设备实时位置信息。如果不需要设备实时位置信息,并且希望尽可能的节省耗电,开发者可以考虑获取最近的历史位置。

接口说明

  • 支持类型

  • 参数说明

开发步骤

  1. 应用在使用系统能力前,需要检查是否已经获取用户授权访问设备位置信息。如未获得授权,可以向用户申请需要的位置权限。
  • 系统提供的定位权限有:

    • ohos.permission.LOCATION
    • ohos.permission.LOCATION_IN_BACKGROUND
  • 访问设备的位置信息,必须申请ohos.permission.LOCATION权限,并且获得用户授权

  • 如果应用在后台运行时也需要访问设备位置,除需要将应用声明为允许后台运行外,还必须申请ohos.permission.LOCATION_IN_BACKGROUND权限,这样应用在切入后台之后,系统可以继续上报位置信息。

  • 开发者可以在应用config.json文件中声明所需要的权限,示例代码如下:

    { 
              
        "reqPermissions": [{ 
              
            "name": "ohos.permission.LOCATION",
            "reason": "$string:reason_description",
            "usedScene": { 
              
                "ability": 
                ["com.myapplication.LocationAbility"],
                "when": "inuse"
            }, { 
              
            ...
        }
                          ]
    }
    
  1. 为了使用位置传感器,需要引入头文件system.geolocation’,获取位置管理对象geolocation’。
import geolocation from '@system.geolocation';
  1. 在页面初始化回调函数或自定义函数中调用该对象的方法getLocation来获取位置信息
onInit(){ 
        
    geolocation.getLocation({ 
        
        success: function (data) { 
        
            console.log('success get location data. latitude:' +data.latitude);},
        fail: function (data, code) { 
        
            console.log('fail to get location. code:' + code + ', data:' + data);
        },
    }) }

本章总结

  • 了解HarmonyOS设备上丰富的传感器设备,
  • 掌握基本的传感器工作原理
  • 能够调用常用传感器完成特定场景应用开发。

data. latitude:’ +data.latitude);}, fail: function (data, code) { console.log(‘fail to get location. code:’ + code + ‘, data:’ + data); }, }) }









# 本章总结

* 了解HarmonyOS设备上丰富的传感器设备,
* 掌握基本的传感器工作原理
* 能够调用常用传感器完成特定场景应用开发。

标签: 内置传感器类型android传感器类别传感器组件用于什么设备os5015传感器px3981传感器头2m线长传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台