Android blockly资料

前言

网上关于Android-blockly的资料很少,自己从事过这方面的学习和开发,所以这里整理分享一下相关的资料,希望可能对大家有所帮助。

[TOC]

资料文档

官方

官方文档

官方github例子

官方codelab例子

网上文档相关:

blockly中文教程(翻译,有几章)

blockly学习(其博客下还有其他相关)

简书博客相关

blockly构建自定义块及其工具

个人项目介绍

github项目地址 请自行下载源码,里面多数代码含有注释,本文简单讲解开发流程及其思路等。

ble_welcome
ble_xunji
ble_control
ble_connect
ble_blockly_zhixing
ble_blockly_yundong

接下来主要给大家介绍一些源码相关及其一些重要的实现。

app编程与硬件交互流程:

1、app生成自定义块及其基础块,及其自定义块所对应的代码指令

2、自由拼装逻辑代码块后执行

3、生成js代码,自定义代码块的代码指令转义为js自定义方法

4、利用webview的执行js代码

5、js与Android交互(代码转换为指令)

6、Android根据不同的自定义方法发送不同的指令给蓝牙串口(首先保证蓝牙已连接状态)

blockly自定义块流程:(以src/main/assets/robot为例)

1、robot_blocks.json 构建块json

2、generator.js中构建块所对应的代码(或者指令)

3、toolbox_basic_robot.xml中添加自定义块 供使用

关于自定义块,还可以参看我的另一篇博客blockly构建自定义块及其工具

image-20200728110037671
image-20200728110150955

几个文件介绍:

empty.html 用于webview加载的的空html,主要功能是webview执行js语言的代码

generators.js 块代码生成

robot.js 类似js执行器

robot.xml 默认工作区的块

robot_blocks.json 块构建

toolbox_basic_robot.xml 工具盒

关于蓝牙发送和接收数据:

连接蓝牙 ble4.0 Android系统api封装BleController 注意对应的蓝牙的BleUUID

发送:直接write发送数据(注意数据格式及其长度)

接收:注册接收监听,收到数据,则解析,保存(组合指令)

发送和接收的数据都是byte[]数组

关于工作区的diy:

blocklylib-coreblocklylib-verticalmodule中

1、AbstractBlocklyActivity 相关

2、blockly_unified_workspace.xml 相关

3、default_toolbox_tab.xml 相关

4、default_category_start.xml 相关

5、default_flyout_start.xml相关

关于默认的基础逻辑块:

1、基础构建块json

blocklylib-core/src/main/assets/default下面

2、基础块生成代码

blocklylib-core/src/main/assets/javascript_compressed.js

3、基础块模块的toolbox.xml

blocklylib-core/src/main/assets/toolbox.xml

构建块json范例:

{
  "type": "controls_forever",      块名字
  "message0": "无限循环 %1 ",       块上的文字 及其 参数   如果有多个则为 %1 %2 %3
  "args0": [    参数 数组 可多个
    {
      "type": "input_statement",    参数类型   有很多 常用: field_input field_number field_dropdown  input_value
      "name": "DO"   参数名
    }
  ],
  "colour": "#04B2FF",  颜色
  "inputsInline": true,  是否是输入行内联 (就是通常右边直接接一个输入块)
  "tooltip": "", tool提示
  "helpUrl": "" 帮助提示
  ....其他
  "output": "String", 输出类型   
},

关于参数类型:

  • field类 常用:field_input field_number field_dropdown field_variable field_checkbox field_image(配合src width height等) 内含型 属性值块

1、文本

  • 常量文本
  • 变量文本

2、数字

3、角度

4、下拉

5、checkbox

6、color 颜色

7、变量

8、外链图片

image-20200727142139845
  • value input 常用:

    "type": "input_value"      外联型 输入块
    
  • statement input 常用:

    "type": "input_statement"     添加镶嵌型内部语句块
    
  • dummy input 常用:

    "previousStatement": null,
    "nextStatement": null,
    

value input \ statement input \ dummy input 的区别:

image-20200727144245279

总结

关于blockly,Google开源的,是少儿编程一个很重要的框架,scratch3.0也是基于blockly二次开发的。现在大多数公司也是用它来进行二次开发的,所以,学习好它是一个最基础也是最重要的。

Android iOS 的 blockly,官方已经放弃维护了,个人在开发和使用中也是发现其移动端有很多的局限性,不是特别适合用来二次开发blockly,反而web是天然优势。

移动端劣势:

1、需要与webview进行交互,交互和实现局限性较大,有很多东西实现起来较为困难,比如有些交互需要阻塞等待,双向通信等,Android和js交互必然没有web纯天然js开发方便。

2、手机端屏幕较小,很多块的操作较难,比如有些块里面有下拉或者输入,边缘只有很小的地方供焦点来拖动,操作很不方便,毕竟手指头很大,你需要放大工作区,来实现拖动,太麻烦了。

3、多端开发,较难维护,本身就是用js开发的,那使用网页来开发是最合适的,并且,现在它也不需要注重太多性能问题,嵌套webview使用就OK了。不必维护Android、ios等多端代码。

关于作者

作者是一个热爱学习、开源、分享,传播正能量,喜欢打篮球、头发还很多的程序员-。-

热烈欢迎大家关注、点赞、评论交流!

简书:https://www.jianshu.com/u/d234d1569eed

github:https://github.com/fly7632785

CSDN:https://blog.csdn.net/fly7632785

掘金:https://juejin.im/user/5efd8d205188252e58582dc7/posts

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268