当前位置: 首页 > news >正文

鸿蒙手机cordova-plugin-camera不能拍照和图片不显示问题

鸿蒙手机cordova-plugin-camera不能拍照和图片不显示问题

一、运行环境

1、硬件

手机型号:NOVA 7
系统:HarmonyOS版本 4.0.0

2、软件

android SDK platforms:14.0(API Level 34)、13.0(API Level 33)
SDK Build-Tools: 33.0.3
JDK 17
Cordova-android-version:12.0.1
cordova-plugin-camera:7.0.0

二、运行拍照功能错误并且图片仅显示为图标

在基于cordova平台采用cemara最新版本插件开发拍照功能时,出现以下错误:
用推荐的FILE_URI模式,显示图库图片时,只显示为一个图标,不能正确显示图片;
并且运行“拍照”功能,会出现错误:
在这里插入图片描述

三、问题解决

对于FILE_URI只显示图标,可能原因为Android11后限制了目录访问权限?(有待研究)
解决方法:
1、拍照和显示图库都选为DATA_URL方式
2、拍照出错,根据harmonyOS和android的对应版本关系,harmonyOS对应android12(API Level31)
因此,在sdk manager中选择安装了SDK Platform:android12(API Level31)
然后重新新建工程、新增platform和插件,拷入源码运行,拍照功能正常!
目前系统运行环境为:
在这里插入图片描述

程序index.js的关键部分源码如下:

document.addEventListener('deviceready', onDeviceReady, false);
function onDeviceReady() {// Cordova is now initialized. Have fun!document.getElementById("takePicture").addEventListener("touchend", function() {navigator.camera.getPicture(onSuccess, onFail, { quality: 50,// destinationType: Camera.DestinationType.FILE_URI,destinationType: Camera.DestinationType.DATA_URL,sourceType: Camera.PictureSourceType.CAMERA,correctOrientation: true});});//Use from Librarydocument.querySelector("#usePicture").addEventListener("touchend", function() {navigator.camera.getPicture(onSuccess, onFail, { quality: 50,sourceType: Camera.PictureSourceType.PHOTOLIBRARY,destinationType: Camera.DestinationType.DATA_URL//FILE_URI会显示为图标});});function onSuccess(imageData) {var image = document.getElementById('myImage');image.src = "data:image/jpeg;base64," + imageData;//DATA_URL模式// image.src = imageData;//FILE_URI模式}function onFail(message) {alert('错误:'+message);}   
}

相关文章:

  • 蓝桥杯备考
  • Python 正则表达式(re)
  • 东方 - 循环(2) - 求和计数
  • PDF编辑和格式转换工具 Cisdem PDFMaster for Mac
  • Adaboost集成学习 | Matlab实现基于ELM-Adaboost极限学习机结合Adaboost集成学习时间序列预测(股票价格预测)
  • 前端三剑客 —— CSS (第三节)
  • JavaScript条件判断
  • 去班味的尽头是风险管理
  • vue2源码解析——vue中如何进行依赖收集、响应式原理
  • 一文解决IDea中Springboot 热部署:IDEA中Spring Boot应用热部署的几种方式及操作步骤
  • linux------jekins构建cicd
  • 【前端开发】教程及案例.docx
  • 重读Java设计模式: 深入探讨建造者模式,构建复杂对象的优雅解决方案
  • wps没保存关闭了恢复数据教程
  • 备战蓝桥杯---DP刷题2
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • Android交互
  • Electron入门介绍
  • isset在php5.6-和php7.0+的一些差异
  • JavaScript创建对象的四种方式
  • JavaScript实现分页效果
  • JavaScript异步流程控制的前世今生
  • JDK 6和JDK 7中的substring()方法
  • Mysql数据库的条件查询语句
  • React组件设计模式(一)
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • Web标准制定过程
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 官方解决所有 npm 全局安装权限问题
  • 计算机在识别图像时“看到”了什么?
  • 两列自适应布局方案整理
  • 如何编写一个可升级的智能合约
  • 微信支付JSAPI,实测!终极方案
  • 小程序button引导用户授权
  • 在Unity中实现一个简单的消息管理器
  • - 转 Ext2.0 form使用实例
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • #、%和$符号在OGNL表达式中经常出现
  • #AngularJS#$sce.trustAsResourceUrl
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (2)(2.10) LTM telemetry
  • (6)STL算法之转换
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (阿里云万网)-域名注册购买实名流程
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (八)Spring源码解析:Spring MVC
  • (备忘)Java Map 遍历
  • (六)Hibernate的二级缓存
  • (实战篇)如何缓存数据
  • (五)关系数据库标准语言SQL
  • (转)jdk与jre的区别
  • .Net 4.0并行库实用性演练
  • .NET构架之我见