
简单的MUI登录和重置密码页面模板
一款简单的MUI框架的手机移动端登录和重置密码页面模板,首先进入手机登录界面模板,点击忘记密码转到重置密码页面。
下载地址:https://www.sucaihuo.com/templates/4428.html
至于下载需要积分,签到个到就够了
一款简单的MUI框架的手机移动端登录和重置密码页面模板,首先进入手机登录界面模板,点击忘记密码转到重置密码页面。
下载地址:https://www.sucaihuo.com/templates/4428.html
至于下载需要积分,签到个到就够了

这个代码提示 能改成颜色提示吗?看着很不舒服。
这个代码提示 能改成颜色提示吗?看着很不舒服,鸡皮疙瘩掉一地。
这个代码提示 能改成颜色提示吗?看着很不舒服,鸡皮疙瘩掉一地。

做一个APP软件要多少钱?
与传统APP开发模式相比,云计算模式开发APP,不仅可以大幅缩短开发周期,并可让开发自己成本节省9成左右。
创新云计算开发模式为什么可以更省时、省钱?
从渠道开发角度来说,首发打通了苹果APP+安卓APP+小程序+微官网+移动网站平台的连贯开发,意味着企业只需进行一次APP开发,即可拥有上述所有主流移动渠道平台,并可配置PC/移动端管理平台、配送端平台等全部产品。
从APP功能开发角度来说,基于“PaaS+SaaS”创新云计算模式的云平台,可以有效降低开发门槛,从而大幅提升APP开发效率,进而降低软件APP制作周期与开发成本。
从APP运营角度来讲,企业只需配备1-2人,只需会进行简单的电脑操作,即可进行平台运营维护,无需自建技术团队,运营成本也能得到大幅压缩。
从APP应用角度来看,可以快速搭建最新、最热、最有效的场景化移动电商APP平台,拥有全套的一站式APP制作解决方案!
与传统APP开发模式相比,云计算模式开发APP,不仅可以大幅缩短开发周期,并可让开发自己成本节省9成左右。
创新云计算开发模式为什么可以更省时、省钱?
从渠道开发角度来说,首发打通了苹果APP+安卓APP+小程序+微官网+移动网站平台的连贯开发,意味着企业只需进行一次APP开发,即可拥有上述所有主流移动渠道平台,并可配置PC/移动端管理平台、配送端平台等全部产品。
从APP功能开发角度来说,基于“PaaS+SaaS”创新云计算模式的云平台,可以有效降低开发门槛,从而大幅提升APP开发效率,进而降低软件APP制作周期与开发成本。
从APP运营角度来讲,企业只需配备1-2人,只需会进行简单的电脑操作,即可进行平台运营维护,无需自建技术团队,运营成本也能得到大幅压缩。
从APP应用角度来看,可以快速搭建最新、最热、最有效的场景化移动电商APP平台,拥有全套的一站式APP制作解决方案!
收起阅读 »
力谱云专家告诉你,靠谱的APP是如何制作的?
> 移动蓝海市场,商机无限,越来越多的企业开始寻求制作,并运营一款专属于自己的靠谱APP。那么,究竟开发一个APP要多少钱呢?
开门见山,目前通过传统开发模式,制作一个手机APP软件商城的价格普遍在30万元左右。并且,开发APP的成本会随着需求难易度,以及开发周期长短的影响进而走高,可以说是一个上不封顶的高成本投入项目。
传统开发模式下,开发一款普通电商APP究竟为何如此昂贵?
首先,目前制作一个靠谱的手机APP,普遍会需要开发iOS APP、安卓APP、微信小程序、微官网、移动网站等主流APP应用平台,进行大批流量导入。并且,平台方还需要需要PC端运营管理平台,以及便捷的移动端运营平台,进行日常订单、物流、产品等方面的跟进。此外,还会需要服务器方面的部署。这几大方面的开发逻辑各不相同,需要一一从零开始制作。
其次,传统开发模式下,人工成本繁杂,至少需要前后端各自配备一名工程师,一位UI设计师,一位测试员,以及产品经理进行项目统筹。并且,开发周期冗长,需要数月的制作时间,也存在项目开发失败的风险。
另外,除了满足单一的APP功能之外,靠谱的商家,一般会提供许多细分功能,而这些功能都需要庞大的业务系统进行支撑。比如,在开发一个电商APP时,除了商品交易等基础电商功能之外,还会涉及到用户登录注册、购物车、会员管理、订单管理等功能,每个单一功能都需要无数细小功能进行支撑,才能完善业务逻辑。在传统开发模式中,这些细微的功能,都会需要从零起步,一步步进行研磨。
> 移动蓝海市场,商机无限,越来越多的企业开始寻求制作,并运营一款专属于自己的靠谱APP。那么,究竟开发一个APP要多少钱呢?
开门见山,目前通过传统开发模式,制作一个手机APP软件商城的价格普遍在30万元左右。并且,开发APP的成本会随着需求难易度,以及开发周期长短的影响进而走高,可以说是一个上不封顶的高成本投入项目。
传统开发模式下,开发一款普通电商APP究竟为何如此昂贵?
首先,目前制作一个靠谱的手机APP,普遍会需要开发iOS APP、安卓APP、微信小程序、微官网、移动网站等主流APP应用平台,进行大批流量导入。并且,平台方还需要需要PC端运营管理平台,以及便捷的移动端运营平台,进行日常订单、物流、产品等方面的跟进。此外,还会需要服务器方面的部署。这几大方面的开发逻辑各不相同,需要一一从零开始制作。
其次,传统开发模式下,人工成本繁杂,至少需要前后端各自配备一名工程师,一位UI设计师,一位测试员,以及产品经理进行项目统筹。并且,开发周期冗长,需要数月的制作时间,也存在项目开发失败的风险。
另外,除了满足单一的APP功能之外,靠谱的商家,一般会提供许多细分功能,而这些功能都需要庞大的业务系统进行支撑。比如,在开发一个电商APP时,除了商品交易等基础电商功能之外,还会涉及到用户登录注册、购物车、会员管理、订单管理等功能,每个单一功能都需要无数细小功能进行支撑,才能完善业务逻辑。在传统开发模式中,这些细微的功能,都会需要从零起步,一步步进行研磨。
收起阅读 »
iOS离线打包 - 语音识别(Speech)插件配置
百度语音配置
将百度语音模块依赖库及资源添加到工程
依赖库 | 系统库 | 依赖资源 |
---|---|---|
liblibSpeech.a、libBaiduSpeechSDK.a、libbaiduSpeech.a | libc++.tbd、libz.tbd、libsqlite3.tbd、AudioToolbox.framework、AVFoundation.framework、CFNetwork.framework、CoreLocation.framework、CoreTelephony.framework、SystemConfiguration.framework、GLKit.framework | BDSClientEASRResources文件夹里的资源文件 |
帐号配置
1.首先到百度语音官方网站 创建应用获取 appkey 等信息。

2.打开info.plist,找到baiduspeech项,填入自己帐号的信息,如果没有该项,按照下图中的格式创建
3、把BDSClientEASRResources文件夹里的资源文件引入到工程里
讯飞语音配置
添加讯飞语音插件
注: Linker Flags、framework添加方法参考该文档
依赖库 | 系统库 | 依赖资源 |
---|---|---|
liblibSpeech.a、libiflySpeech.a、iflyMSC.framework | AVFoundation.framework、AddressBook.framework、Contacts.framework | 无 |
注意:iflyMSC.framework 库需要开发者在讯飞语音官方网站自行生成,因为需要跟您的AppId绑定,SDK内的库无法在您的App中使用;
帐号配置
首先到讯飞语音官方网站创建App,获取 appid 信息。
2.打开info.plist,找到iFly项,填入自己帐号的信息,如果没有该项,按照下图中的格式创建
注意:离线打包语言识别功能只能选一个,要么科大讯飞,要么百度语音,剩下那个需要在工程里删除
百度语音配置
将百度语音模块依赖库及资源添加到工程
依赖库 | 系统库 | 依赖资源 |
---|---|---|
liblibSpeech.a、libBaiduSpeechSDK.a、libbaiduSpeech.a | libc++.tbd、libz.tbd、libsqlite3.tbd、AudioToolbox.framework、AVFoundation.framework、CFNetwork.framework、CoreLocation.framework、CoreTelephony.framework、SystemConfiguration.framework、GLKit.framework | BDSClientEASRResources文件夹里的资源文件 |
帐号配置
1.首先到百度语音官方网站 创建应用获取 appkey 等信息。
2.打开info.plist,找到baiduspeech项,填入自己帐号的信息,如果没有该项,按照下图中的格式创建
3、把BDSClientEASRResources文件夹里的资源文件引入到工程里
讯飞语音配置
添加讯飞语音插件
注: Linker Flags、framework添加方法参考该文档
依赖库 | 系统库 | 依赖资源 |
---|---|---|
liblibSpeech.a、libiflySpeech.a、iflyMSC.framework | AVFoundation.framework、AddressBook.framework、Contacts.framework | 无 |
注意:iflyMSC.framework 库需要开发者在讯飞语音官方网站自行生成,因为需要跟您的AppId绑定,SDK内的库无法在您的App中使用;
帐号配置
首先到讯飞语音官方网站创建App,获取 appid 信息。
2.打开info.plist,找到iFly项,填入自己帐号的信息,如果没有该项,按照下图中的格式创建
注意:离线打包语言识别功能只能选一个,要么科大讯飞,要么百度语音,剩下那个需要在工程里删除
收起阅读 »
HBuilderX入门教程
本帖文章已集成到: hx产品文档
HX是轻量编辑器和强大IDE的完美结合体。敏捷的性能,清爽的界面,强大的功能和于一身。
本文档面向入门用户,建议初学者仔细研读。
1. 介绍
- 执着于更快一步的理念,hx的左侧项目管理器是单击响应而不是双击。
- 单击展开目录,单击预览文件,双击打开文件。
- 预览文件时顶部标签卡是斜体的,此时继续预览其他文件会替换预览标签卡。双击文件后标签卡为正体,不会被替换。预览的文件一旦开始编辑,也会自动变为正式打开状态。
- 项目管理器默认是不显示图标的,可以将鼠标移到项目管理器区域,右上角会悬浮菜单,在里面可以选择显示图标。HBuilderX支持业内多种图标插件,可以在工具-插件安装中找到更多图标插件。
- hx的文件保存是免丢失的,并且有热退出功能。所谓热退出,就是关闭hx时不要保存文件。再次打开时仍然是之前的状态。未保存的文件也会继续原样展现。
- hx默认带有每
30秒
保存一次临时文件的策略(可以在设置里调节时间间隔) - 不管是关闭hx,还是断电、崩溃,临时文件始终会自动保存。
- 前端预编译型语言越来越多,每次保存都触发编译比较消耗资源,有了hx,可以专注写代码而不需要隔一会按一下ctrl+s,需要编译时再保存,或编辑多个文件后按ctrl+alt+s全部保存。
2. 语法提示
拥有自研的世界级语法分析引擎一直是HBuilder系列产品傲视业内的资本。
但前端框架众多,框架的语法提示需要加载单独的语法提示库。
框架语法提示库是在页面的右下角选择。(如下图示例)
注意:
- 框架语法库是挂在项目下的,一个项目加载了一个框架语法库后,这个项目下所有js文件或HTML文件都会在代码助手提示这个框架的语法。
- 但如果一个文件是单独从硬盘打开,没有整项目拖入hx,那么此时无法加载框架语法库。
3. 代码助手
hx的代码助手,可以按alt+数字
选择直接选择某个项目,类似中文输入法数字选词 (如下图示例)
4. 语法帮助
光标放到某api处,按下F1
,就可跳转到这个api的官方手册。目前支持vue、uni-app、5+等api (如下图示例)
5. 编辑器与项目管理器的同步
hx默认是打开的标签卡和项目管理器自动关联,切换标签卡时项目管理器也会跟随变化,如不需要此功能,可以将鼠标移到项目管理器区域,右上角会悬浮菜单,在里面可以取消“与编辑器同步”。(如下图示例)
一般多项目时建议取消同步功能。
取消同步后,如需手动定位标签卡所在的项目,可以对编辑器点右键-“在项目管理器中定位”。(如下图示例)
6. 多光标
hx支持多光标,按 ctrl+鼠标左键
就可增加一个光标,ctrl+鼠标右键
可取消一个光标或选区。(如下图示例)
还可以选择相同词。ctrl+e
(mac是cmd+d
)可选中相同的词做批处理。(如下图示例)
多光标是极客必备工具,高级技巧请参考:https://ask.dcloud.net.cn/docs/#//ask.dcloud.net.cn/article/13191
7. 列选择
hx的列选择,是alt+鼠标拖选
。或者用快捷键ctrl+alt+↑
或↓
。(如下图示例)
8. 选择编码、着色高亮
当你打开一个不认识的文档时,即hx的无法高亮着色,可以在右下角选择使用其他编辑器打开。
当你打开一个文件编码错乱,产生乱码时,也可以在右下角选择编码重新打开。(如下图示例)
9. 转到定义
转到定义是非常常用的功能,普通编辑器不长于此,只能猜单词跳转。
HBuilderX有强大的语法分析引擎,可以准确的跳转定义位置。
转到定义的快捷键是Alt+d
,鼠标操作是alt+左键单击(注意不是ctrl,因为ctrl留给了多光标)
而HBuilderX还有一个特色是转到定义到分栏
,ctrl+alt+左键
,可以把一个定义处的代码打开在另一侧,方便共同查看
如何回到上一个光标位置?
在HBuilderX中,Alt+Left
或点击工具栏上的<
, 即可回到上一个光标位置。
备注:支持切换【Ctrl+鼠标左键】或【Alt+鼠标左键】进行转到定义 (菜单【选择】,最后一个菜单)。
10. 文件快速打开
在顶部工具栏直接搜索工程下的文件名并打开,或者使用快捷键ctrl+p
。(如下图示例)
比较常用的文件,可以在工具栏里添加到收藏夹。(如下图示例)
ctrl+p
也是标签卡管理的重要工具,屏幕窄看不清左右打开的标签时,可以用它来浏览所有以打开的标签
11. 目录内搜索
项目管理器点右键,选:查找字符串(当前目录),可在该目录下所有文件中搜索字符串(如下图示例)
12. 缩进调整
hx默认使用tab
缩进,tab
长度为4个空格。
如果你需要调整缩进长度,比如tab
长度为2个空格,在工具设置-编辑器中调整。(如下图示例)
如果不喜欢使用tab而喜欢使用空格,也可以在设置中调。注意这个调节只是编辑器里敲tab按键时转为了空格,格式化时仍是tab。
调节格式化设置,参考菜单工具-插件配置。hx支持几种格式化插件,他们都有自己的配置定义文件,请按插件配置中的说明修改设置。(如下图示例)
比如格式化插件Formator-Prettier,它的配置文件为:【工具】【插件配置】【formator-frettier】【formator.config.js】(如下图示例)
在菜单编辑-缩进中,可文件的缩进从tab
转空格
或从空格
转tab
。
13. 语法校验
hx的语法校验都是插件,在工具插件安装中选择各种校验插件,不同语言的校验插件不一样。安装校验插件后,保存文件时会自动执行语法校验。(如下图示例)
校验概要结果会显示在状态栏,比如有2个错误(如下图),可以按F4
切换到不同的错误处,画有红波浪线(如下图),鼠标移到红波浪线上会显示具体的错误信息。(如下图示例)
你也可以不保存,直接点菜单工具-验证本文档校验语法 来进行校验。(如下图示例)
15. svn/git项目导入
以git为例:(git项目:需要安装git插件、以及TortoiseGit、并配置ssh秘钥)(如下图示例)
插件名称 | Mac操作系统 | Windows操作系统 |
---|---|---|
svn | Mac SVN教程 | Windows SVN教程 |
git | Mac Git教程 | Windows Git教程 |
15. 预编译器(less/sass)
在【菜单】-->【插件安装】里有各种语言的预编译器,比如less、ts等。安装预编译器后,hx下的所有项目均可用共用。
sass示例: (如下图示例)
预编译器安装后使用入口在外部命令菜单中
sass/less插件配置小技巧:
less、sass可以在插件配置里,配置为保存文件时自动编译。
安装less或sass插件后,进入菜单【工具】【插件配置】【compile-less】,点击package.json文件,将onDidSaveExecution修改为true。注意修改后需要重启HBuilderX才能生效
{
"onDidSaveExecution": true
}
16. 更多文档教程
参考: HBuilderX更多教程
本帖文章已集成到: hx产品文档
HX是轻量编辑器和强大IDE的完美结合体。敏捷的性能,清爽的界面,强大的功能和于一身。
本文档面向入门用户,建议初学者仔细研读。
1. 介绍
- 执着于更快一步的理念,hx的左侧项目管理器是单击响应而不是双击。
- 单击展开目录,单击预览文件,双击打开文件。
- 预览文件时顶部标签卡是斜体的,此时继续预览其他文件会替换预览标签卡。双击文件后标签卡为正体,不会被替换。预览的文件一旦开始编辑,也会自动变为正式打开状态。
- 项目管理器默认是不显示图标的,可以将鼠标移到项目管理器区域,右上角会悬浮菜单,在里面可以选择显示图标。HBuilderX支持业内多种图标插件,可以在工具-插件安装中找到更多图标插件。
- hx的文件保存是免丢失的,并且有热退出功能。所谓热退出,就是关闭hx时不要保存文件。再次打开时仍然是之前的状态。未保存的文件也会继续原样展现。
- hx默认带有每
30秒
保存一次临时文件的策略(可以在设置里调节时间间隔) - 不管是关闭hx,还是断电、崩溃,临时文件始终会自动保存。
- 前端预编译型语言越来越多,每次保存都触发编译比较消耗资源,有了hx,可以专注写代码而不需要隔一会按一下ctrl+s,需要编译时再保存,或编辑多个文件后按ctrl+alt+s全部保存。
2. 语法提示
拥有自研的世界级语法分析引擎一直是HBuilder系列产品傲视业内的资本。
但前端框架众多,框架的语法提示需要加载单独的语法提示库。
框架语法提示库是在页面的右下角选择。(如下图示例)
注意:
- 框架语法库是挂在项目下的,一个项目加载了一个框架语法库后,这个项目下所有js文件或HTML文件都会在代码助手提示这个框架的语法。
- 但如果一个文件是单独从硬盘打开,没有整项目拖入hx,那么此时无法加载框架语法库。
3. 代码助手
hx的代码助手,可以按alt+数字
选择直接选择某个项目,类似中文输入法数字选词 (如下图示例)
4. 语法帮助
光标放到某api处,按下F1
,就可跳转到这个api的官方手册。目前支持vue、uni-app、5+等api (如下图示例)
5. 编辑器与项目管理器的同步
hx默认是打开的标签卡和项目管理器自动关联,切换标签卡时项目管理器也会跟随变化,如不需要此功能,可以将鼠标移到项目管理器区域,右上角会悬浮菜单,在里面可以取消“与编辑器同步”。(如下图示例)
一般多项目时建议取消同步功能。
取消同步后,如需手动定位标签卡所在的项目,可以对编辑器点右键-“在项目管理器中定位”。(如下图示例)
6. 多光标
hx支持多光标,按 ctrl+鼠标左键
就可增加一个光标,ctrl+鼠标右键
可取消一个光标或选区。(如下图示例)
还可以选择相同词。ctrl+e
(mac是cmd+d
)可选中相同的词做批处理。(如下图示例)
多光标是极客必备工具,高级技巧请参考:https://ask.dcloud.net.cn/docs/#//ask.dcloud.net.cn/article/13191
7. 列选择
hx的列选择,是alt+鼠标拖选
。或者用快捷键ctrl+alt+↑
或↓
。(如下图示例)
8. 选择编码、着色高亮
当你打开一个不认识的文档时,即hx的无法高亮着色,可以在右下角选择使用其他编辑器打开。
当你打开一个文件编码错乱,产生乱码时,也可以在右下角选择编码重新打开。(如下图示例)
9. 转到定义
转到定义是非常常用的功能,普通编辑器不长于此,只能猜单词跳转。
HBuilderX有强大的语法分析引擎,可以准确的跳转定义位置。
转到定义的快捷键是Alt+d
,鼠标操作是alt+左键单击(注意不是ctrl,因为ctrl留给了多光标)
而HBuilderX还有一个特色是转到定义到分栏
,ctrl+alt+左键
,可以把一个定义处的代码打开在另一侧,方便共同查看
如何回到上一个光标位置?
在HBuilderX中,Alt+Left
或点击工具栏上的<
, 即可回到上一个光标位置。
备注:支持切换【Ctrl+鼠标左键】或【Alt+鼠标左键】进行转到定义 (菜单【选择】,最后一个菜单)。
10. 文件快速打开
在顶部工具栏直接搜索工程下的文件名并打开,或者使用快捷键ctrl+p
。(如下图示例)
比较常用的文件,可以在工具栏里添加到收藏夹。(如下图示例)
ctrl+p
也是标签卡管理的重要工具,屏幕窄看不清左右打开的标签时,可以用它来浏览所有以打开的标签
11. 目录内搜索
项目管理器点右键,选:查找字符串(当前目录),可在该目录下所有文件中搜索字符串(如下图示例)
12. 缩进调整
hx默认使用tab
缩进,tab
长度为4个空格。
如果你需要调整缩进长度,比如tab
长度为2个空格,在工具设置-编辑器中调整。(如下图示例)
如果不喜欢使用tab而喜欢使用空格,也可以在设置中调。注意这个调节只是编辑器里敲tab按键时转为了空格,格式化时仍是tab。
调节格式化设置,参考菜单工具-插件配置。hx支持几种格式化插件,他们都有自己的配置定义文件,请按插件配置中的说明修改设置。(如下图示例)
比如格式化插件Formator-Prettier,它的配置文件为:【工具】【插件配置】【formator-frettier】【formator.config.js】(如下图示例)
在菜单编辑-缩进中,可文件的缩进从tab
转空格
或从空格
转tab
。
13. 语法校验
hx的语法校验都是插件,在工具插件安装中选择各种校验插件,不同语言的校验插件不一样。安装校验插件后,保存文件时会自动执行语法校验。(如下图示例)
校验概要结果会显示在状态栏,比如有2个错误(如下图),可以按F4
切换到不同的错误处,画有红波浪线(如下图),鼠标移到红波浪线上会显示具体的错误信息。(如下图示例)
你也可以不保存,直接点菜单工具-验证本文档校验语法 来进行校验。(如下图示例)
15. svn/git项目导入
以git为例:(git项目:需要安装git插件、以及TortoiseGit、并配置ssh秘钥)(如下图示例)
插件名称 | Mac操作系统 | Windows操作系统 |
---|---|---|
svn | Mac SVN教程 | Windows SVN教程 |
git | Mac Git教程 | Windows Git教程 |
15. 预编译器(less/sass)
在【菜单】-->【插件安装】里有各种语言的预编译器,比如less、ts等。安装预编译器后,hx下的所有项目均可用共用。
sass示例: (如下图示例)
预编译器安装后使用入口在外部命令菜单中
sass/less插件配置小技巧:
less、sass可以在插件配置里,配置为保存文件时自动编译。
安装less或sass插件后,进入菜单【工具】【插件配置】【compile-less】,点击package.json文件,将onDidSaveExecution修改为true。注意修改后需要重启HBuilderX才能生效
{
"onDidSaveExecution": true
}
16. 更多文档教程
参考: HBuilderX更多教程
收起阅读 »
Android 获取 手机本机 MAC 地址 支持 所有 Android 版本
Native.js 获取Android 手机 MAC 物理地址, Android 版本众多,之前的方法已经不支持最新的版本获取MAC地址了
在Android 6.0 之前可以获取MAC 方法,到了6.0版本后,不再支持此方法获取MAC地址了。
此方法,支持移动网络下获取MAC地址
var Context = plus.android.importClass("android.content.Context");
var WifiManager = plus.android.importClass("android.net.wifi.WifiManager");
var wifiManager = plus.android.runtimeMainActivity().getSystemService(Context.WIFI_SERVICE);
var WifiInfo = plus.android.importClass("android.net.wifi.WifiInfo");
var wifiInfo = wifiManager.getConnectionInfo();
wifiInfo.getMacAddress();
Android 6.0之后动态授权对隐私保护高了, 采用的获取MAC 的方法是读取 /sys/class/net/wlan0/address ,
此方法有些型机,只能在WIFI开启的状态下才能获取到MAC 地址
var BufferedReader=plus.android.importClass("java.io.BufferedReader");
var FileReader=plus.android.importClass("java.io.FileReader");
var file=new FileReader("/sys/class/net/wlan0/address");
var reader = new BufferedReader(file,256);
var address=reader.readLine();
reader.close();
Android 7.0 + 以上的方法也都没用了,谷歌对隐私要求更严格了,禁止读取/sys/class/net/wlan0/address 了, 但还是有方法读取到MAC , 采用的是 NetworkInterface 对端口扫描 读取到 wlan0 的值,它就是MAC地址了,
此方法有些型机,只能在WIFI开启的状态下才能获取到MAC 地址
var NetworkInterface=plus.android.importClass("java.net.NetworkInterface");
var networkInterface = NetworkInterface.getByName("eth1");
networkInterface = NetworkInterface.getByName("wlan0");
var mac=networkInterface.getHardwareAddress();
写了一个获取 MAC 的插件,封装了以上三种方法一起,可以获取所有机型的MAC的地址。
有需要的可以到这个下载: http://www.html5-app.com/show/101
获得 MacAddress.js 引到 页面就可以 ,通过以下方法,可以获得MAC 地址。
mui.plusReady(function()
{
var address=Mac.address();
});
Native.js 获取Android 手机 MAC 物理地址, Android 版本众多,之前的方法已经不支持最新的版本获取MAC地址了
在Android 6.0 之前可以获取MAC 方法,到了6.0版本后,不再支持此方法获取MAC地址了。
此方法,支持移动网络下获取MAC地址
var Context = plus.android.importClass("android.content.Context");
var WifiManager = plus.android.importClass("android.net.wifi.WifiManager");
var wifiManager = plus.android.runtimeMainActivity().getSystemService(Context.WIFI_SERVICE);
var WifiInfo = plus.android.importClass("android.net.wifi.WifiInfo");
var wifiInfo = wifiManager.getConnectionInfo();
wifiInfo.getMacAddress();
Android 6.0之后动态授权对隐私保护高了, 采用的获取MAC 的方法是读取 /sys/class/net/wlan0/address ,
此方法有些型机,只能在WIFI开启的状态下才能获取到MAC 地址
var BufferedReader=plus.android.importClass("java.io.BufferedReader");
var FileReader=plus.android.importClass("java.io.FileReader");
var file=new FileReader("/sys/class/net/wlan0/address");
var reader = new BufferedReader(file,256);
var address=reader.readLine();
reader.close();
Android 7.0 + 以上的方法也都没用了,谷歌对隐私要求更严格了,禁止读取/sys/class/net/wlan0/address 了, 但还是有方法读取到MAC , 采用的是 NetworkInterface 对端口扫描 读取到 wlan0 的值,它就是MAC地址了,
此方法有些型机,只能在WIFI开启的状态下才能获取到MAC 地址
var NetworkInterface=plus.android.importClass("java.net.NetworkInterface");
var networkInterface = NetworkInterface.getByName("eth1");
networkInterface = NetworkInterface.getByName("wlan0");
var mac=networkInterface.getHardwareAddress();
写了一个获取 MAC 的插件,封装了以上三种方法一起,可以获取所有机型的MAC的地址。
有需要的可以到这个下载: http://www.html5-app.com/show/101
获得 MacAddress.js 引到 页面就可以 ,通过以下方法,可以获得MAC 地址。
mui.plusReady(function()
{
var address=Mac.address();
});
收起阅读 »

预览图片 重写back
//图片预览对象
var imageViewer;
mui.back = function(event) {
//先判断 是否是打开了图片预览 没有直接返回有的话就需要关闭图片预览
if (document.querySelector(".mui-imageviewer-item")) {
imageViewer.viewer.style.opacity = 0;
setTimeout(function() {
imageViewer.viewer.style.display = 'none';
imageViewer.disposeImage(true);
}, 600);
} else {
plus.webview.currentWebview().close();
}
}
//图片预览对象
var imageViewer;
mui.back = function(event) {
//先判断 是否是打开了图片预览 没有直接返回有的话就需要关闭图片预览
if (document.querySelector(".mui-imageviewer-item")) {
imageViewer.viewer.style.opacity = 0;
setTimeout(function() {
imageViewer.viewer.style.display = 'none';
imageViewer.disposeImage(true);
}, 600);
} else {
plus.webview.currentWebview().close();
}
}
收起阅读 »

Android平台离线打包 - 语音识别(Speech)插件配置
百度语音设置
需要添加的文件
将以下文件放入工程的libs下
路径 | 文件名 |
---|---|
SDK\libs | speech-release.aar、speech_baidu-release.aar |
AndroidManifest.xml配置
权限配置
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
application节点配置
<meta-data android:name="com.baidu.speech.APP_ID" android:value="${百度语音申请的appid}"/>
<meta-data android:name="com.baidu.speech.API_KEY" android:value="${百度语音申请的apikey}"/>
<meta-data android:name="com.baidu.speech.SECRET_KEY" android:value="${百度语音申请的secretkey}"/>
<service android:name="com.baidu.speech.VoiceRecognitionService" android:exported="false" />
dcloud_properties.xml配置
dcloud_properties.xml文件在assets/data目录下
features节点下设置
<feature name="Speech" value="io.dcloud.feature.speech.SpeechFeatureImpl">
<module name="baidu" value="io.dcloud.feature.speech.BaiduSpeechEngine"/>
</feature>
讯飞语音设置
需要添加的文件
将以下文件放入工程的libs下
路径 | 文件名 |
---|---|
SDK\libs | speech-release.aar、speech_ifly-release.aar |
AndroidManifest.xml配置
权限配置
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
application节点配置
<meta-data
android:name="IFLY_APPKEY"
android:value="${讯飞语音申请的appid}" />
dcloud_properties.xml配置
dcloud_properties.xml文件在assets/data目录下
features节点下设置
<feature name="Speech" value="io.dcloud.feature.speech.SpeechFeatureImpl">
<module name="iFly" value="io.dcloud.feature.speech.IflySpeechEngine"/>
</feature>
百度语音设置
需要添加的文件
将以下文件放入工程的libs下
路径 | 文件名 |
---|---|
SDK\libs | speech-release.aar、speech_baidu-release.aar |
AndroidManifest.xml配置
权限配置
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
application节点配置
<meta-data android:name="com.baidu.speech.APP_ID" android:value="${百度语音申请的appid}"/>
<meta-data android:name="com.baidu.speech.API_KEY" android:value="${百度语音申请的apikey}"/>
<meta-data android:name="com.baidu.speech.SECRET_KEY" android:value="${百度语音申请的secretkey}"/>
<service android:name="com.baidu.speech.VoiceRecognitionService" android:exported="false" />
dcloud_properties.xml配置
dcloud_properties.xml文件在assets/data目录下
features节点下设置
<feature name="Speech" value="io.dcloud.feature.speech.SpeechFeatureImpl">
<module name="baidu" value="io.dcloud.feature.speech.BaiduSpeechEngine"/>
</feature>
讯飞语音设置
需要添加的文件
将以下文件放入工程的libs下
路径 | 文件名 |
---|---|
SDK\libs | speech-release.aar、speech_ifly-release.aar |
AndroidManifest.xml配置
权限配置
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
application节点配置
<meta-data
android:name="IFLY_APPKEY"
android:value="${讯飞语音申请的appid}" />
dcloud_properties.xml配置
dcloud_properties.xml文件在assets/data目录下
features节点下设置
<feature name="Speech" value="io.dcloud.feature.speech.SpeechFeatureImpl">
<module name="iFly" value="io.dcloud.feature.speech.IflySpeechEngine"/>
</feature>
收起阅读 »

关于iOS音频后台播放遇到的一些问题
最近在做一个音频相关软件,涉及一个后台播放网络地址音频功能。
就是APP不在主界面活动或锁屏时音频不暂停,能持续播放。
做android兼容时没有问题,到iOS时,只要锁屏就会音频暂停。在各个地搜了好多,给的解决办法是manifest.json加"UIBackgroundModes":["audio"]这个配置并且打包发布后才能生效。各种试打包好多遍也不好用。(用的是纯js写的播放音频)。后来细看帖子说是要用5+写。
总结:
js写法
var player = document.createElement('audio');
player.src="https://www.baidu.com/uploads/1.mp3";
mui写法5+
var player = plus.audio.createPlayer('audio/1.mp3');
js可以支持网络音频,但不支持iOS后台播放。配置文件设置后台可播放不生效,就是配置也不管用
5+支持本地,不支持网络音频(iOS)。配置文件设置后台可播放可以生效,但是不能播放网络音频(试过了播放本地文件是不需要打包就可以后台播放的)
这就是试了好多次没有试出结果的原因,结果就是没有结果。
希望对那些配置文件更改后没能有效果的爬坑群众有所帮助(在这纠结了好多天)
要是有好的解决办法欢迎留言!!!!
最近在做一个音频相关软件,涉及一个后台播放网络地址音频功能。
就是APP不在主界面活动或锁屏时音频不暂停,能持续播放。
做android兼容时没有问题,到iOS时,只要锁屏就会音频暂停。在各个地搜了好多,给的解决办法是manifest.json加"UIBackgroundModes":["audio"]这个配置并且打包发布后才能生效。各种试打包好多遍也不好用。(用的是纯js写的播放音频)。后来细看帖子说是要用5+写。
总结:
js写法
var player = document.createElement('audio');
player.src="https://www.baidu.com/uploads/1.mp3";
mui写法5+
var player = plus.audio.createPlayer('audio/1.mp3');
js可以支持网络音频,但不支持iOS后台播放。配置文件设置后台可播放不生效,就是配置也不管用
5+支持本地,不支持网络音频(iOS)。配置文件设置后台可播放可以生效,但是不能播放网络音频(试过了播放本地文件是不需要打包就可以后台播放的)
这就是试了好多次没有试出结果的原因,结果就是没有结果。
希望对那些配置文件更改后没能有效果的爬坑群众有所帮助(在这纠结了好多天)
要是有好的解决办法欢迎留言!!!!