【每日学点鸿蒙知识】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

相关推荐
轻口味8 小时前
【每日学点鸿蒙知识】RelativeContainer组件、List回弹、Flutter方法调用、Profiler工具等
flutter·list·harmonyos
HarmonyOS开发者10 小时前
《HarmonyOS第一课》焕新升级,赋能开发者快速掌握鸿蒙应用开发
华为·harmonyos
塞尔维亚大汉11 小时前
【OpenHarmony】 鸿蒙网络请求库之httpclient
网络协议·harmonyos
NanoNerd11 小时前
使用 4 种主要方法将数据从 HTC 传输到华为
华为·传输·步骤
我是全栈架构师13 小时前
HarmonyOS Next ArkUI @State @Prop @Link @Provide @Consume笔记
harmonyos·arkts
guo_zhen_qian14 小时前
鸿蒙工程签名编译和上架
华为·harmonyos
执着的小火车14 小时前
【2024华为OD-E卷-100分-火星文计算】(题目+思路+Java&C++&Python解析)
java·数据结构·c++·算法·华为od·华为
IT考试认证15 小时前
2024年变题后华为数通H12-821更新题库
网络·华为·智能路由器·h12-821
个案命题16 小时前
纯血鸿蒙ArkUI选项卡布局详解
华为·harmonyos
HarderCoder16 小时前
仓颉中的类型型变
harmonyos