IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> DevEcoStudio的及其传感器的使用,闭关在家37天“吃透”这份345页PDF -> 正文阅读

[移动开发]DevEcoStudio的及其传感器的使用,闭关在家37天“吃透”这份345页PDF

}

}

  1. AbilitySlice

鸿蒙项目中的Ability类似android的Activity,但是分为Ability和AbilitySlice,如我们最初的helloworld项目中的MainAbility和MainAbilitySlice分别继承了Ability和AbilitySlice,MainAbility中通过setMainRoute调用MainAbilitySlice的setUIContent显示页面,做个比喻Ability相当于身体而AbilitySlice则为皮肤

在这里插入图片描述在这里插入图片描述

  1. 名词差异

为了方便android开发者转至鸿蒙,故其中的名词大多和android相差无几,不过还是有些许差异,鸿蒙文件目录中的entry类似于app,项目中的ability类似于activity,onStart类似于onCreate,resourse中的element类似于values


log.csdn.net/fjnu_se/article/details/112170665)5. 传感器使用


  1. 权限配置

需要在config.json中先进行配置,注意reqPermissions与abilities为同级

“abilities”: [

{

“skills”: [

{

“entities”: [

“entity.system.home”

],

“actions”: [

“action.system.home”

]

}

],

“orientation”: “unspecified”,

“name”: “com.example.myapplication.MainAbility”,

“icon”: “$media:icon”,

“description”: “$string:mainability_description”,

“label”: “MyApplication”,

“type”: “page”,

“launchType”: “standard”

}

],

“reqPermissions”: [

{

“name”: “ohos.permission.ACCELEROMETER”,//授予加速器权限

“reason”: “”,

“usedScene”: {

“ability”: [

“.MainAbility”

],

“when”: “inuse”

}

}

]

  1. 权限检查和请求

@Override

public void onStart(Intent intent) {

super.onStart(intent);

if (verifySelfPermission(“ohos.permission.ACTIVITY_MOTION”) != 0) {

if (canRequestPermission(“ohos.permission.ACTIVITY_MOTION”)) {

requestPermissionsFromUser(new String[] {“ohos.permission.ACTIVITY_MOTION”}, 1);

}

}

// …

}

@Override

public void onRequestPermissionsFromUserResult(int requestCode, String[] permissions,

int[] grantResults) {

switch (requestCode) {

case 1: {

// 匹配requestPermissionsFromUser的requestCode

if (grantResults.length > 0 && grantResults[0] == 0) {

// 权限被授予

} else {

// 权限被拒绝

}

return;

}

}

}

  1. 使用传感器

@Override

public void onStart(Intent intent) {

super.onStart(intent);

super.setUIContent(ResourceTable.Layout_sensor_layout);

findComponent(rootComponent);

// 创建传感器回调对象。

orientationDataCallback = new ICategoryOrientationDataCallback() {

@Override

public void onSensorDataModified(CategoryOrientationData categoryOrientationData) {

int dim = categoryOrientationData.getSensorDataDim(); //获取传感器的维度信息

float degree = categoryOrientationData.getValues()[0]; // 获取传感器的第一维数据

float[] rotationMatrix = new float[matrix_length];

CategoryOrientationData.getDeviceRotationMatrix(rotationMatrix, categoryOrientationData.values); // 根据传感器的数据获得旋转矩阵

float[] rotationAngle = new float[rotationVectorLength];

rotationAngle = CategoryOrientationData.getDeviceOrientation(rotationMatrix, rotationAngle); // 获取设备的方向

}

@Override

public void onAccuracyDataModified(CategoryOrientation categoryOrientation, int i) {

// 使用变化的精度

}

@Override

public void onCommandCompleted(CategoryOrientation categoryOrientation) {

// 传感器执行命令回调

}

};

btnSubscribe.setClickedListener(v -> {

// 获取传感器对象,并获取传感器数据

orientationSensor = categoryOrientationAgent.getSingleSensor(

CategoryOrientation.SENSOR_TYPE_ORIENTATION);

if (orientationSensor != null) {

categoryOrientationAgent.setSensorDataCallback(

orientationDataCallback, orientationSensor, interval);

}

});

// 取消获取传感器数据

btnUnsubscribe.setClickedListener(v -> {

if (orientationSensor != null) {

categoryOrientationAgent.releaseSensorDataCallback(

orientationDataCallback, orientationSensor);

}

});

}

private void findComponent(Component component) {

btnSubscribe = (Button) component.findComponentById(Resource.Id.btnSubscribe);

btnUnsubscribe = (Button) component.findComponentById(Resource.Id.btnUnsubscribe);

}

6. 常见问题


  1. Error Deploying HAP

config.json中存在deviceType,可以更改它的值来适应不同设备,如wearable指智能手表,phone指手机,car指车载设备,忘记更改可能会出现以下错误

在这里插入图片描述

  1. 同时安装DevEcoStudio1.0,DevEcoStudio2.0时报错

同时安装多个DevEcoStudio版本时需要选择新的安装路径,并修改新安装DevEco Studio的“idea.properties”中的缓存路径

7. 注意事项


DevEco Studio 1.0 和2.0 不同,开发鸿蒙应用使用2.0,且对比1.0缺失部分功能,如平行视界等,我本来想试试平行视界,鼓捣了半天才发现只有DevEco Studio 1.0有MagicWindow

在这里插入图片描述

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-01-30 19:02:44  更:2022-01-30 19:04:04 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/28 5:27:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码