DevEcoStudio的及其传感器的使用,阿里架构师深入讲解Android开发

},

“apiVersion”: { //api版本信息

“compatible”: 3,

“target”: 4,

“releaseType”: “Beta1”

}

},

“deviceConfig”: {},//应用配置信息

“module”: { //HAP 包的配置信息

“package”: “com.example.myapplication”,

“name”: “.MyApplication”,

“deviceType”: [

“phone”

],

“distro”: { //HAP具体描述

“deliveryWithInstall”: true,

“moduleName”: “entry”,

“moduleType”: “entry”

},

“abilities”: [

{

“skills”: [ //Ability能接受Intent的特征

{

“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”

}

]

}

}

  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

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);

}

});

}

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

最后

总而言之,成功是留给准备好的人的。无论是参加什么面试,都要做好充足的准备,注意好面试的礼仪和穿着,向面试官表现出自己的热忱与真诚就好。即使最后没有过关,也要做好经验的总结,为下一次面试做好充足准备。

这里我为大家准备了一些我在面试后整理的面试专题资料,除了面试题,还总结出了互联网公司Android程序员面试涉及到的绝大部分面试题及答案,并整理做成了文档,以及系统的进阶学习视频资料分享给大家,希望能帮助到你面试前的复习,且找到一个好的工作,也节省大家在网上搜索资料的时间来学习。

毕竟不管遇到什么样的面试官,去面试首先最主要的就是自己的实力,只要实力够硬,技术够强,就不怕面试拿不到offer!

为什么某些人会一直比你优秀,是因为他本身就很优秀还一直在持续努力变得更优秀,而你是不是还在满足于现状内心在窃喜!希望读到这的您能点个小赞和关注下我,以后还会更新技术干货,谢谢您的支持!

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

么样的面试官,去面试首先最主要的就是自己的实力,只要实力够硬,技术够强,就不怕面试拿不到offer!

[外链图片转存中…(img-1C7dW5Q3-1712485801309)]

[外链图片转存中…(img-Vikp5ZjN-1712485801309)]

为什么某些人会一直比你优秀,是因为他本身就很优秀还一直在持续努力变得更优秀,而你是不是还在满足于现状内心在窃喜!希望读到这的您能点个小赞和关注下我,以后还会更新技术干货,谢谢您的支持!

[外链图片转存中…(img-s2gVSt8f-1712485801309)]

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 25
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值