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

相关推荐
Dream-Y.ocean42 分钟前
鸿蒙PC平台星图遥感适配实战:基于 Electron 壳方案的纯 JavaScript 遥感图像处理引擎开发
javascript·electron·harmonyos
七月稻草人5 小时前
鸿蒙平板能当电脑第二块屏幕吗?ToDesk、向日葵镜像/副屏实测
华为·电脑·harmonyos
贾伟康6 小时前
【共创稿事节】HarmonyOS 7.0 Want隐式跳转:从接入到生产验证
性能优化·实战·harmonyos·arkts·arkui
NJPJI_Yang6 小时前
鸿蒙 HarmonyOS 7 应用内存优化:appMemoryOptimizer 释放 so 页缓存实战
pytorch·深度学习·harmonyos
翰德恩咨询8 小时前
IPD咨询洞察:华为如何以项目为中心,激活组织
华为
熊猫钓鱼>_>8 小时前
三方库 NDK 原生模块跨平台适配与调试【鸿蒙心迹】
开发语言·华为·ai编程·harmonyos·鸿蒙·openharmony·鸿蒙心迹
行者-全栈开发19 小时前
【鸿蒙心迹】三方库移植(二)——CMake 交叉编译与符号冲突排查实录(HarmonyOS 7.x)
harmonyos·cmake·交叉编译·三方库移植·ohos·符号冲突
梦想不只是梦与想21 小时前
鸿蒙三方库源码调试
harmonyos·断点调试·三方源码调试
用户117910488331 天前
AI输出满屏井号星号?hmharness把Markdown渲染成终端表格 GitHub:swsgbl/hmharness
ai编程·harmonyos
了一1231 天前
鸿蒙ArkWeb 长截图(滚动截图)技术方案总结
harmonyos