【每日学点鸿蒙知识】Taro、native层获取文件宽度、位置变化callback、数据迁移、oh_modules说明等

1、Taro开发HarmonyOS NEXT有相应的开发文档吗?

Taro Harmony Hybrid容器是为让Taro小程序代码可以完整的运行在鸿蒙单内核系统里,在Taro H5平台的基础上,基于原生壳工程的jsbridge能力,扩展H5平台不支持的小程序Api能力,让Taro小程序0成本运行在鸿蒙系统。

参考文档:https://docs.taro.zone/docs/harmony-hybrid/

2、在native层 是否可以获取文件宽度?

当我在native层,使用cavans画字时,我需要提前得知文本在画布上的长和宽,以确定bitmap的长宽,或者做一些其它的处理。

复制代码
DRAWING_LOGE("renhwndk NapiTextEngin SampleBitMap::DrawText() in");

OH_Drawing_TypographyStyle *typoStyle = OH_Drawing_CreateTypographyStyle();
OH_Drawing_SetTypographyTextDirection(typoStyle, TEXT_DIRECTION_LTR);
OH_Drawing_SetTypographyTextAlign(typoStyle, TEXT_ALIGN_LEFT);

OH_Drawing_TextStyle *txtStyle = OH_Drawing_CreateTextStyle();
OH_Drawing_SetTextStyleColor(txtStyle, OH_Drawing_ColorSetArgb(0xFF, 0x00, 0x00, 0xff));

OH_Drawing_SetTextStyleFontSize(txtStyle, 50);
OH_Drawing_SetTextStyleFontWeight(txtStyle, FONT_WEIGHT_400);
OH_Drawing_SetTextStyleBaseLine(txtStyle, TEXT_BASELINE_ALPHABETIC);
OH_Drawing_SetTextStyleFontHeight(txtStyle, 1);

const char *fontFamilies[] = {"Roboto"};
OH_Drawing_SetTextStyleFontFamilies(txtStyle, 1, fontFamilies);
OH_Drawing_SetTextStyleFontStyle(txtStyle, FONT_STYLE_NORMAL);
OH_Drawing_SetTextStyleLocale(txtStyle, "en");

OH_Drawing_TypographyCreate *handler =
  OH_Drawing_CreateTypographyHandler(typoStyle, OH_Drawing_CreateFontCollection());
OH_Drawing_TypographyHandlerPushTextStyle(handler, txtStyle);


OH_Drawing_TypographyHandlerAddText(handler, " hello world");
OH_Drawing_TypographyHandlerPopTextStyle(handler);
OH_Drawing_Typography *typography = OH_Drawing_CreateTypography(handler);

double maxWidth = 600;
OH_Drawing_TypographyLayout(typography, maxWidth);

double width = OH_Drawing_TypographyGetLineWidth(typography, 0);
DRAWING_LOGE("renhwndk OH_Drawing_TypographyGetLineWidth == %{public}f",width);

3、HarmonyOS 开启位置变化订阅,无Callback回调?

开启了位置变化订阅后,callback一直无回调定位信息

复制代码
let requestInfo: geoLocationManager.LocationRequest = {
  'scenario': geoLocationManager.LocationRequestScenario.TRAJECTORY_TRACKING,
  'timeInterval': 10,
  'distanceInterval': 0,
  'maxAccuracy': 0
};

let locationChange = (location: geoLocationManager.Location): void => {
  PAPCLogUtils.logE("LocationHelp", 'locationChanger: data: ' + JSON.stringify(location));
};

PAPCLocationUtils.onLocationChange(context as common.UIAbilityContext, true, requestInfo, this.locationChange);

在室内是没有GNSS信号的。在室内使用first_fix,在室外情况下再尝试使用以上代码

4、HarmonyOS 怎么做应用的数据迁移?

从HarmonyOS 3.0升级到Next系统,APP持久化数据,能同步到Hap格式的应用么,如果不能怎么做应用的数据迁移?

HarmonyOS NEXT提供"数据迁移框架"统一调度应用数据迁移任务。参考网址:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/app-data-migration-overview-V5

终端设备从HarmonyOS 3.1 Release API 9及之前版本(简称HarmonyOS)升级到HarmonyOS NEXT Developer Preview1及之后版本(简称HarmonyOS NEXT)时,原HarmonyOS中运行的APK应用,升级后需要切换为HarmonyOS NEXT中的HarmonyOS原生应用(简称HarmonyOS应用)。APK应用的部分数据需要转换并迁移到指定位置后,才能被HarmonyOS应用访问。HarmonyOS NEXT提供了"数据迁移框架"和"备份恢复框架",为开发者提供应用数据的迁移和转换能力。开发者完成适配,APK应用切换为HarmonyOS应用后,可继承原APK应用中适配HarmonyOS应用的数据。

如下图所示,应用需要的数据,包含云端服务器中的数据,本地应用沙箱中的数据和本地公共媒体库中的数据。为了应用的数据可以继承,开发者需要保证云端数据定义兼容APK应用和HarmonyOS应用,确保系统升级后同一账号下的数据可识别。

5、根目录下的oh_modules和entry目录下面的oh_modules有什么区别?

根目录下的oh_modules和entry目录下的oh_modules是同一个目录,它们是通过软链接(Symbolic Link)的方式连接在一起的

参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-ohpm-install-V5

相关推荐
HwJack201 小时前
HarmonyOS 6APP开发之摸透ArkUI FrameNode
华为·harmonyos
丁常彦-自媒体-常言道2 小时前
AI驱动医改走深走实,华为持续打造医疗通用AI新引擎
人工智能·华为
炜宏资料库2 小时前
组织效能提升模型项目沟通 (含华为举例)
华为·职场发展
广然2 小时前
eNSP Pro 实战:华为交换机堆叠,两台变一台
服务器·网络·华为
求学中--3 小时前
状态管理一文通:@State、@Prop、@Link、@Provide/Consume全解析
人工智能·小程序·uni-app·wpf·harmonyos
求学中--3 小时前
ArkUI组件库完全指南:从基础组件到自定义装饰器
低代码·华为·小程序·uni-app·harmonyos
●VON3 小时前
鸿蒙原生APP开发实战指南:三套低成本AI辅助方案全解析
人工智能·华为·chatgpt·大模型·harmonyos·image
枫叶丹43 小时前
【HarmonyOS 6.0】Data Augmentation Kit 智慧化数据检索 C 接口解析:向量化、知识检索与知识问答
c语言·开发语言·华为·harmonyos
慢慢向上的蜗牛4 小时前
Atlas300I推理卡驱动适配Linux 6.12+内核
linux·c++·人工智能·华为·驱动·底层开发·ascend
2301_815279524 小时前
鸿蒙原生开发的“硬核通道”:ArkTS 与 C/C++ 高性能互操作全栈指南 —— FFI 机制深度解析与实战精要
c语言·c++·harmonyos