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

相关推荐
一只栖枝6 小时前
华为 HCIE 大数据认证中 Linux 命令行的运用及价值
大数据·linux·运维·华为·华为认证·hcie·it
zhanshuo10 小时前
在鸿蒙里优雅地处理网络错误:从 Demo 到实战案例
harmonyos
zhanshuo10 小时前
在鸿蒙中实现深色/浅色模式切换:从原理到可运行 Demo
harmonyos
whysqwhw16 小时前
鸿蒙分布式投屏
harmonyos
whysqwhw17 小时前
鸿蒙AVSession Kit
harmonyos
whysqwhw19 小时前
鸿蒙各种生命周期
harmonyos
whysqwhw20 小时前
鸿蒙音频编码
harmonyos
whysqwhw20 小时前
鸿蒙音频解码
harmonyos
whysqwhw20 小时前
鸿蒙视频解码
harmonyos
whysqwhw20 小时前
鸿蒙视频编码
harmonyos