Dcloud HTML5 监听蓝牙设备 调用 原生安卓实现
最近一直搞Dcloud ,这是HTML5版本的开发,打包时候,可以打包成 apk 和ipa 分别运行在安卓和ios 机器上面,
但是这里面的资料很少,遇到问题,之后只能自己钻研总结,
现在有这么一个需求,需要实现蓝牙开启后,监听蓝牙接口传递的数据,然后呈现给用户。我试了很多方法,之前是在 HTML5上直接写方法,监听蓝牙状态,但是jS是单线程,直接把进程阻塞了其他的啥也干不了,而且时间长了监听,总会莫名中断,
这是我当时写的算法
http://ask.dcloud.net.cn/publish/article/875
这是直接在html5上监听蓝牙,后来多次测量之后发现,根本不能用。
使用了多种方法,比如 使用work开启多线程,但是问题是 work开启了但是无法调用plus对象,没有任何用处。
使用异步调用,也无法实现,
后来经过多次询问大牛之后,发现,这个问题目前最好使用html5插件 的形式解决,写完了插件,然后,用html点击之后,触发按钮调用原生的蓝牙监听程序。
具体的文档在这里:
http://ask.dcloud.net.cn/docs/#http://ask.dcloud.net.cn/article/66
具体的实现方法,这篇文档,我至少要读了5遍左右,终于写出了插件,成功的调用了原生监听程序。
要知道如果我们要写安卓插件的话,只能使用离线打包,目前不支持在线打包。
因此如果写原生插件,首先要会离线打包,使用安卓程序打包,
具体的打包流程请参考
http://ask.dcloud.net.cn/docs/#http://ask.dcloud.net.cn/article/38
我建议大家多多几遍,需要注意的事项:
(1) 离线打包要下载他们的sdk 地址:
http://ask.dcloud.net.cn/article/103
(2)注意:因为其它第三方的SDK也使用到包名相关资源配置,所以需要在AndroidManifest.xml将所有“io.dcloud.HBuilder.Hello”替换成要修改成的包名。
(3)打开assets -> apps 目录,将下面“HelloH5”目录名称修改为应用manifest.json中的id名称(这步非常重要,否则会导致应用无法正常启动),并将所有应用资源拷贝到其下的www目录中:
(4)打开assets -> data下的control.xml文件,修改appid值:
其中appid值为HBuilder应用的appid,必须与应用manifest.json中的id值完全一致;appver为应用的版本号,用于应用资源的升级,必须保持与manifest.json中的version -> name值完全一致;version值为应用基座版本号(plus.runtime.innerVersion返回的值),不要随意修改。
学会了如何打包之后,我们可以做一个很小的打包的源程序,专门用来打包用,
然后下一步就是写插件了:
具体文档在:http://ask.dcloud.net.cn/docs/#http://ask.dcloud.net.cn/article/66
具体的方法就是,先使用安卓源程序上写好监听的方法,然后把html5的文件放到资源文件夹assess底下,调用写好的安卓监听方法;
具体需要注意的地方:
(1)首先要下载HTML5+基座的Android版SDK点击下载解压后将HBuilder-Integrate工程导入到ADT中。 这里你会下载到好几个文件夹,有一个HBuilder-hello的 这个是离线打包用的,还有个是 HBuilder-Integrate,这个已经写好了插件了,运行一下看看
(2) 关联JS插件名和原生类
在编写扩展插件时需要修改“/assets/data”中properties.xml文件,在其中添加JS对象名称和Android包的类名对应关系,SDK会根据对应的类名查找并生成相应的对象并执行对应的逻辑。

注意这里是在feature 的属性底下加上这个,例子中在service底下加了,如果不在feature底下加的话会报错,缺少plusintest插件的权限。
"应用未添加plugintest权限,请在manifest.json文件中permissions节点进行配置,"
出现这个错误,怎么解决
就是这个错误:
(3)两个都好了之后,把写好的插件整合到 你的项目中。
Dcloud HTML5 监听蓝牙设备 调用 原生安卓实现的更多相关文章
- [技术博客]react native事件监听、与原生通信——实现对通知消息的响应
在react native中会涉及到很多页面之间的参数传递问题.静态的参数传递通常利用组件的Props属性,在初始化组件时即可从父组件中将参数传递到子组件中.对于非父子关系的组件来说,无法直接传递参数 ...
- Html5 监听拦截Android返回键方法详解
浏览器窗口有一个history对象,用来保存浏览历史. 如果当前窗口先后访问了三个网址,那么history对象就包括三项,history.length属性等于3. history对象提供了一系列方法, ...
- quick-cocos2d-x android返回键监听并实现原生退出对话框
这两天最终闲了一下,就顺手又把quick捡起来又学了学,一直都认为quick比cocos2dx那套lua绑定要方便很多,今天试了下android返回键的监听,还是挺好弄的,所以就有了这篇. 首先说明一 ...
- [转]html5监听任何App自带返回键javascript事件
1.前言 如今h5新特性.新标签.新规范等有很多,而且正在不断完善中,各大浏览器商对它们的支持,也是相当给力.作为前端程序员,我觉得我们还是有必要积极关注并勇敢地加以实践.接下来我将和各位分享一个特别 ...
- HTML5 监听移动端浏览器返回键兼容版本
// 往windosw对象中的历史记录注入URL的方法 function addUrl() { var state = { title: "title", url: "# ...
- Vue中如何监听组件的原生事件
在首页开发中,右下角有一个返回顶部的小箭头,将它单独封装成一个BackTop组件,但是它何时出现需要依赖于首页的滑动,即另外一个Scroll组件.如果直接在BackTop组件里面监听,则需要通过thi ...
- apicloud监听返回键(安卓试过)
下面监听写在apiready里面 api.addEventListener({ //使用下方函数此处好像失效了 name: 'keyback' }, function(ret, err) { aler ...
- android 蓝牙设备监听广播
蓝牙权限 <uses-permission android:name="android.permission.BLUETOOTH" /> 1.监听手机本身蓝牙状态的广播 ...
- uniapp仿h5+fire自定义事件触发监听
仿h5+fire自定义事件触发监听 uni-app调用 event.js 源码记录(点击查看) 1.js下载地址 [event.js](https://ext.dcloud.net.cn/plugin ...
随机推荐
- 架构师养成记--9.future模式讲解
什么是future模式呢?解释这个概念之前我们先来了解一个场景吧,财务系统的结账功能,这个功能可能是每个月用一次,在这一个月中相关的数据量已经积累得非常大,这一个功能需要调用好几个存储过程来完成.假如 ...
- django 关于html、css、js 目录位置
项目目录: project/ ---------------init.py ---------------views.py ---------------settings.py ----------- ...
- iframe用js设定自定义高度
JS代码 function SetWinHeight(obj){ var win=obj; if (document.getElementById){ if (win && !wind ...
- Django基础,Day3 - 编写 django admin
Django 自带了一个简易编辑后台,可以称为"内容发布器",一般是提供给站点管理员使用的,其最开始也是开发出来提供给报社编辑和发布新闻使用的. 创建超级管理员: $ python ...
- javascript 技巧总结积累(正在积累中)
1.文本框焦点问题 onBlur:当失去输入焦点后产生该事件 onFocus:当输入获得焦点后,产生该文件 Onchange:当文字值改变时,产生该事件 Onselect:当文字加亮后,产生该文件 & ...
- Git 分支管理和冲突解决
Git 分支管理和冲突解决 创建分支 git branch 没有参数,显示本地版本库中所有的本地分支名称. 当前检出分支的前面会有星号. git branch newname 在当前检出分支上新建分支 ...
- java开发问题总结-4-Maven使用问题汇总
Non-resolvable parent POM [INFO] Scanning for projects... [ERROR] The build could not read 1 project ...
- jvm--2.类加载机制
3.JVM类加载机制 (1)类加载机制 虚拟机把描述类的数据从Class文件,用ClassLoader ,加载到内存,并对数据进行校验.转换解析和初始化,最终形成虚拟机直接使用的java类型, 这就是 ...
- nubia Z5 mini 小牛 黑砖qhsusb dload修复
给手机分区,用了分区助手,将一些分区移动. 结果分区坏了,只有两三个分区在电脑显示,当时晕菜把数据线拔了重插. 手机变砖,不能启动,黑屏,不能进recovery... 参考 http://bbs.nu ...
- webstorm快捷键大全
使用webstorm一段时间了,这里分享一下常用到的快捷键,不用死记,孰能生巧! Ctrl+/ 或 Ctrl+Shift+/ 注释(// 或者/*-*/ ) Shift+F6 重构-重命名 Ctrl+ ...