uniapp开发安卓App注意事项(HTML5+规范 plus调用安卓原生能力:广播,扫描,相机等)

这篇具有很好参考价值的文章主要介绍了uniapp开发安卓App注意事项(HTML5+规范 plus调用安卓原生能力:广播,扫描,相机等)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

uniapp开发安卓App注意事项

  • 使用安卓调试基座进行调试大大降低了uniapp开发安卓app的门槛

  • 安卓开发经常需要调用到安卓原生的api,例如广播,扫码,相机等等,uniapp内置了App端的HTML5+规范,可以使用js直接调用丰富的原生能力。例如在安卓中调用原生的激光扫描能力:

    let main, receiver, filter, intentInstance
    let scanFlag = false // 是否开启了激光扫描,默认关闭
    
    /**
     * 初始化激光扫描
     * @param {String} broadcastAction 广播动作
     * @param {String} broadcastTag 广播标签
     */
    function initScan(broadcastAction, broadcastTag) {
    	// 条件编译 HTML5+ 扩展规范,否则运行到h5、小程序等平台会出现 plus is not defined 错误
    	// #ifdef APP-PLUS
    	// 获取Android主Activity
    	main = plus.android.runtimeMainActivity()
    	// 获取Android意图过滤类
    	let IntentFilter = plus.android.importClass('android.content.IntentFilter')
    	// 实例化意图过滤
    	filter = new IntentFilter()
    	// 获取意图广播,addAction内改为广播动作
    	filter.addAction(broadcastAction)
    	receiver = plus.android.implements('io.dcloud.feature.internal.reflect.BroadcastReceiver', {
    		onReceive: function (context, intent) {
    			plus.android.importClass(intent)
    			// getStringExtra内改为广播标签
    			let code = intent.getStringExtra(broadcastTag)
    			console.log('广播监听扫描信息 ==== code :', code)
    			emits('getCode', code)
    		}
    	})
    
    	// #endif
    }
    
    function startScan() {
    	// #ifdef APP-PLUS
    	if (!scanFlag) {
    		main.registerReceiver(receiver, filter)
    		console.log('==== 开启扫描')
    		scanFlag = true
    	}
    	// #endif
    }
    
    function stopScan() {
    	// #ifdef APP-PLUS
    	if (scanFlag) {
    		main.unregisterReceiver(receiver)
    		console.log('==== 关闭扫描')
    		scanFlag = false
    	}
    	// #endif
    }
    
    
    /**
     * 手动调用扫描 (非PDA物理按键)
     * @param {Object} keyAction 按键广播动作
     */
    function clickToScan(keyAction) {
    	// #ifdef APP-PLUS
    	// 获取Android意图类
    	let Intent = plus.android.importClass('android.content.Intent')
    	// 实例化意图
    	intentInstance = new Intent()
    	// 定义意图,模拟按下激光的物理按键映射,由厂商提供
    	intentInstance.setAction(keyAction)
    	// 广播这个意图
    	main.sendBroadcast(intentInstance)
    	// #endif
    }
    
    onMounted(() => {
    	// PDA设备 (厂商提供) 广播动作:android.intent.ACTION_DECODE_DATA,广播标签:barcode_string
    	initScan('android.intent.ACTION_DECODE_DATA', 'barcode_string')
    	// 开启扫描
    	startScan()
    })
    
    onUnmounted(() => {
    	// 关闭扫描
    	stopScan()
    })
    

    该plus对象便是uniapp内置的HTML5+规范,无需引入,直接使用,但是建议搭配条件编译写法,否则会在其他端报 plus is not defined 错误

    HTML5+官方文档 HTML5+规范

  • 除了使用HTML5+规范调用安卓原生能力,uniapp官方也对uni对象内置了相关设备方法

    官方文档 系统设备

    例如调用相机扫码文章来源地址https://www.toymoban.com/news/detail-841624.html

    function onCameraScan() {
    	// #ifdef APP
    	uni.scanCode({
    		success: function (res) {
    			scanCode.value = res.result
    			console.log('扫描成功--->', scanCode.value)
    		},
    		fail: function (err) {
    			console.log('扫描失败--->', err)
    		},
    		complete: function (res) {
    			console.log('扫描完成--->', res)
    		}
    	})
    
    	// #endif
    }
    

到了这里,关于uniapp开发安卓App注意事项(HTML5+规范 plus调用安卓原生能力:广播,扫描,相机等)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • uniapp之boundingClientRect注意事项

    1.页面中使用 2.组件中使用增加 in(this) 或使用 this.createSel.....   3.其他写法 4.boundingClientRect返回值为null    1.确保页面已经渲染完成再计算高度,即已存在该id标识的元素,常见解决办法是 增加定时器延迟100ms,或在onLoad中去调用。    2.对view动态设置id时, 确保id首位是字母

    2024年02月11日
    浏览(35)
  • 个人首次使用UniAPP使用注意事项以及踩坑

    uni-create-view 快速nui-app页面的 uni-helper uni-app代码提示的 uniapp小程序扩展 鼠标悬停查文档 TypeScript Vue Plugin (Volar) Vue Language Features (Volar) Eslint Prettier 禁用 Error Lens 行内提示报错 Turbo Console Log 打log插件 Code Spell Checker 检查拼写插件 files.associations 官网解释: https://cn.vuejs.org/guide/t

    2024年02月11日
    浏览(41)
  • 微信小程序转uni-app注意事项

            如果你手头上有一套微信小程序的代码,怎样把它变成一个网页版或者app版本的呢?我推荐你使用uni-app。         使用uni-app可以很方便的将微信小程序代码翻译成uni-app项目,通过uni-app项目又可以编译成h5、app或微信小程序版本。这样一来,写一份代码同时可以

    2024年02月04日
    浏览(56)
  • RabbitMQ开发注意事项

    在使用 RabbitMQ 进行消息队列的开发过程中,有一些注意事项需要牢记: 安全性:确保正确配置 RabbitMQ 实例的安全性。限制对 RabbitMQ 服务器的访问权限,并使用安全的认证机制(如用户名和密码)来保护连接。 错误处理:在消费者端,务必处理可能发生的异常或错误情况。

    2024年02月07日
    浏览(48)
  • Android小白开发注意事项

    1.设置第三方依赖包   2.第一次加载编译   3.apk打包    这个签名文件的密码在app级别的build.gradle里面   然后下一步选你要打的环境的包,release是发行包,一个给别人安装打这个,debug是调试包,会比release包大,并且会有点卡一般是开发调试用的,这个可以多选。    环境

    2024年02月16日
    浏览(44)
  • 【Docker】 Docker 开发注意事项

    在使用 Docker 进行开发时,需要注意以确保开发过程顺利和高效: 1. 了解 Docker 基础:在开始之前,了解 Docker 的基本概念,如镜像(Images)、容器(Containers)、仓库(Repositories)和 Dockerfile 的基本语法。 2. 编写清晰的 Dockerfile:Dockerfile 应该清晰、简洁,并且易于理解。确保

    2024年02月03日
    浏览(37)
  • [游戏开发][虚幻5]新建项目注意事项

    鼠标右键点击Client.uproject文件,可以看到三个比较关键的选项, 启动游戏, 生成sln解决方案, 切换引擎版本 断点调试 C++代码重要步骤 如果你想断点调试C++代码,则必须使用使用代码编译启动引擎,你需要做几个操作 1:把你的游戏作为启动项。如果你不设置,则默认打开

    2024年02月22日
    浏览(42)
  • RabbitMQ基本使用及企业开发中注意事项

    目录 一、基本使用 二、使用注意事项 1. 生产者重连机制 - 保证mq服务是通的 2. 生产者确认机制 - 回调机制 3. MQ的可靠性 4. Lazy Queue模式 5. 消费者确认机制 部署完RabbitMQ有两种使用方式: 网页客户端 Java代码 MQ组成部分: 虚拟主机 - 进行数据隔离的,好比mysql中的不同数据库

    2024年04月26日
    浏览(42)
  • 02【保姆级】-GO语言开发注意事项(特色重点)

    之前我学过C、Java、Python语言时总结的经验: 先建立整体框架,然后再去抠细节。 先Know how,然后know why。 先做出来,然后再去一点点研究,才会事半功倍。 适当的囫囵吞枣。因为死抠某个知识点很浪费时间的。 对于GO语言,切记遵守语法格式规则。(例如python语言、例如

    2024年02月06日
    浏览(43)
  • Unity3D开发流程及注意事项

    使用Unity3D开发游戏需要遵循一定的流程和注意事项,以确保项目的顺利进行并获得良好的结果。以下是一般的游戏开发流程以及一些注意事项,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 游戏开发流程: 1.概念和计划阶段

    2024年02月09日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包