【每日学点鸿蒙知识】图片base64、最先hap包下载、RN获取定位、app安装、SNAPSHOT组件管理

1、HarmonyOS 选择相册的图片后,返回了图片的uri,我该如何根据uri将图片转为base64?

可参考如下转换例子:

复制代码
let packOpts: image.PackingOption = { format: "image/jpeg", quality: 98 };
let imagePackerApi = image.createImagePacker();

const context: Context = getContext(this);
const resourceMgr = context.resourceManager;
let imageBuffer = await resourceMgr.getMediaContent($r('app.media.ic_low'));
const imageSource: image.ImageSource = image.createImageSource(imageBuffer.buffer);
let decodingOptions: image.DecodingOptions = {
  editable: true,
  desiredPixelFormat: 3,
  rotate: 90
}
// 创建pixelMap并进行简单的旋转和缩放

imageSource.createPixelMap(decodingOptions).then((pixelMap: PixelMap) => {

  this.pixelMap = pixelMap
  // pixelmap 转base64 先要有一个packing的过程
  imagePackerApi.packing(pixelMap, packOpts).then((data: ArrayBuffer) => {
    let base64Str = buffer.from(data).toString('base64')
    let resultBase64Str = "data:image/png;base64," + base64Str
    this.resultBase64Str = resultBase64Str
  }).catch((error: BusinessError) => {
    console.error('Failed to pack the image. And the error is: ' + error);
  })
  pixelMap.release();
})
//重点提示: pixelmap转base64 不能直接转,先要加一个packing的过程,下面的方法是一个错误的实例,转出来的base64字符串不对。

let pixelMap = await imageSource.createPixelMap(opts);
console.log("pixelMap.getPixelBytesNumber():" + pixelMap.getPixelBytesNumber())
let arrayBuffer = new ArrayBuffer(pixelMap.getPixelBytesNumber());
pixelMap.readPixelsToBuffer(arrayBuffer)
console.log("arrayBuffer" + arrayBuffer)
let base64Str = buffer.from(arrayBuffer).toString(Constants.BASE_64);
let resultBase64Str = "data:image/png;base64," + base64Str

2、HarmonyOS 如何安装我从服务端下载的最新hap包?

我们首页有个版本更新功能,是否可以将我们的APP(hap)包放到服务端,首页下载后调用系统api安装新版本,怎么安装下载下来的hap,是否需要权限,有没有版本更新示例?

除了本地调试外,安装hap包只有应用市场一个入口,不支持调用api实现

应用市场提供了检测更新升级能力,参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/store-update-V5

业务流程:

3、RN有什么方法获取定位信息的详情吗,比如省市区街道

RN没有获取定位信息的能力。推荐通过turboModule,通过OS来实现。OS获取定位信息文档链接如下:

  1. 获取当前经纬度:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-geolocationmanager-V5#geolocationmanagergetcurrentlocation
  2. 再根据经纬度信息获取省市区街道信息:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-geolocationmanager-V5#geolocationmanagergetaddressesfromlocation

4、HarmonyOS 如何安装app?

app升级功能中会先下载app,app下载成功之后调用哪个api进行安装?

应用安装是使用的@ohos.bundle.installer

5、关于SNAPSHOT组件管理与使用?

关于SNAPSHOT组件管理与使用

  1. 如果我们的版本是 1.0.0-SNAPSHOT 那在组件发布到私仓的时候直接用publish+tag的方式发布就行了, 还是需要用dist-tags命令来管理

  2. 如果我们发布的组件版本是1.0.0-SNAPSHOT, 那在使用时 要这样配置版本吗( "name": "1.0.0-SNAPSHOT:snapshot" ), 在override里可以吗?

  3. 如果组件版本是1.0.0 发布的时候添加了--tag命令,会影响正式发布的1.0.0版本吗?

  4. 同一个版本发了多次SNAPSHOT包,在本地的版本通过ohpm install会更新吗? 还是要用ohpm update

  5. dist-tags只能用来加tag,不能发布,推包还是要用publish。publish --tag指定发布版本的tag,需要指定的tag不存在,否则会发布失败。如果指定的tag已存在,请使用 dist-tag update重新指定tag对应的版本

  6. 使用方式为下面代码后支持overrides

    "dependencies": { "<依赖名>": "tag:<tag名>" }

  7. 不影响。同一个包同一个版本只能发布一次,同一个包tag不能重复,publish时如果指定的tag已存在,则发布失败

  8. install不会更新。更新请用ohpm update。

相关推荐
遇到困难睡大觉哈哈7 小时前
HarmonyOS 公共事件机制介绍以及多进程之间的通信实现(9000字详解)
华为·harmonyos
幽蓝计划11 小时前
HarmonyOS NEXT仓颉开发语言实战案例:外卖App
开发语言·harmonyos
伍哥的传说11 小时前
鸿蒙系统(HarmonyOS)应用开发之实现电子签名效果
开发语言·前端·华为·harmonyos·鸿蒙·鸿蒙系统
Georgewu13 小时前
【HarmonyOS】应用开发拖拽功能详解
harmonyos
塞尔维亚大汉13 小时前
鸿蒙内核源码分析(构建工具篇) | 顺瓜摸藤调试鸿蒙构建过程
源码·harmonyos
Fanmeang16 小时前
OSPF高级特性之FRR
运维·网络·华为·ip·ospf·spf·frr
kumalab16 小时前
HarmonyOS ArkTS卡片堆叠滑动组件实战与原理详解(含源码)
华为·harmonyos
别说我什么都不会17 小时前
【OpenHarmony】鸿蒙开发之xml2jsDemo
harmonyos
HarmonyOS_SDK20 小时前
HarmonyOS免密认证方案 助力应用登录安全升级
harmonyos
zhanshuo21 小时前
鸿蒙操作系统核心特性解析:从分布式架构到高效开发的全景技术图谱
harmonyos