},
“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”
}
]
}
}
鸿蒙项目中的Ability类似android的Activity,但是分为Ability和AbilitySlice,如我们最初的helloworld项目中的MainAbility和MainAbilitySlice分别继承了Ability和AbilitySlice,MainAbility中通过setMainRoute调用MainAbilitySlice的setUIContent显示页面,做个比喻Ability相当于身体而AbilitySlice则为皮肤
为了方便android开发者转至鸿蒙,故其中的名词大多和android相差无几,不过还是有些许差异,鸿蒙文件目录中的entry类似于app,项目中的ability类似于activity,onStart类似于onCreate,resourse中的element类似于values
需要在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”
}
}
]
@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;
}
}
}
@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移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)
![](https://i-blog.csdnimg.cn/blog_migrate/3032b3d0383c79589bf080ea05a22545.jpeg)
最后
总而言之,成功是留给准备好的人的。无论是参加什么面试,都要做好充足的准备,注意好面试的礼仪和穿着,向面试官表现出自己的热忱与真诚就好。即使最后没有过关,也要做好经验的总结,为下一次面试做好充足准备。
这里我为大家准备了一些我在面试后整理的面试专题资料,除了面试题,还总结出了互联网公司Android程序员面试涉及到的绝大部分面试题及答案,并整理做成了文档,以及系统的进阶学习视频资料分享给大家,希望能帮助到你面试前的复习,且找到一个好的工作,也节省大家在网上搜索资料的时间来学习。
毕竟不管遇到什么样的面试官,去面试首先最主要的就是自己的实力,只要实力够硬,技术够强,就不怕面试拿不到offer!
为什么某些人会一直比你优秀,是因为他本身就很优秀还一直在持续努力变得更优秀,而你是不是还在满足于现状内心在窃喜!希望读到这的您能点个小赞和关注下我,以后还会更新技术干货,谢谢您的支持!
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
么样的面试官,去面试首先最主要的就是自己的实力,只要实力够硬,技术够强,就不怕面试拿不到offer!
[外链图片转存中…(img-1C7dW5Q3-1712485801309)]
[外链图片转存中…(img-Vikp5ZjN-1712485801309)]
为什么某些人会一直比你优秀,是因为他本身就很优秀还一直在持续努力变得更优秀,而你是不是还在满足于现状内心在窃喜!希望读到这的您能点个小赞和关注下我,以后还会更新技术干货,谢谢您的支持!
[外链图片转存中…(img-s2gVSt8f-1712485801309)]
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!