HBuilderX

HBuilderX

极客开发工具
uni-app

uni-app

开发一次,多端覆盖
uniCloud

uniCloud

云开发平台
HTML5+

HTML5+

增强HTML5的功能体验
MUI

MUI

上万Star的前端框架

用Vue+H5+写app 有Demo ui很好看 超级好调试 支持es678

Vue

项目地址:https://github.com/tyaqing/mogo-h5plus

APP演示下载地址

完全可以替代mui使用其他的ui框架.
UI框架地址:
https://youzan.github.io/vant/

  • 支持 Npm 生态
  • 支持 vue 语法,以及 vue 生态,比如 vux,mint,vant
  • 支持 ES6/ES7 语法
  • 使用 VConsole 调试
  • VSCode 友好
  • 局域网便捷调试,不插数据线也可以调试
  • 兼容部分 mui 语法
继续阅读 »

项目地址:https://github.com/tyaqing/mogo-h5plus

APP演示下载地址

完全可以替代mui使用其他的ui框架.
UI框架地址:
https://youzan.github.io/vant/

  • 支持 Npm 生态
  • 支持 vue 语法,以及 vue 生态,比如 vux,mint,vant
  • 支持 ES6/ES7 语法
  • 使用 VConsole 调试
  • VSCode 友好
  • 局域网便捷调试,不插数据线也可以调试
  • 兼容部分 mui 语法
收起阅读 »

分享几套我收集的MUI网站模板

模板 mui

mui框架的服装包包手机商城模板
http://www.sucaihuo.com/templates/4490.html

mui框架的移动端app下载界面模板
http://www.sucaihuo.com/templates/4367.html

mui租房app模板
http://www.sucaihuo.com/templates/3300.html

手机app前端开发MUI框架模板
http://www.sucaihuo.com/templates/3694.html

mui框架手机报考驾校预约wap网站模板
http://www.sucaihuo.com/templates/2139.html

继续阅读 »

mui框架的服装包包手机商城模板
http://www.sucaihuo.com/templates/4490.html

mui框架的移动端app下载界面模板
http://www.sucaihuo.com/templates/4367.html

mui租房app模板
http://www.sucaihuo.com/templates/3300.html

手机app前端开发MUI框架模板
http://www.sucaihuo.com/templates/3694.html

mui框架手机报考驾校预约wap网站模板
http://www.sucaihuo.com/templates/2139.html

收起阅读 »

mui 列表项左右滑删除功能升级(仿微信左滑 点击删除后出现确认删除)

mui 列表项左右滑删除功能升级(仿微信左滑 点击删除后出现确认删除)

mui 列表项左右滑删除功能升级(仿微信左滑 点击删除后出现确认删除)

wap2app扫一扫功能兼容性问题

扫一扫 扫码

hbuilder版 本:HBuilder 9.0.8.201806081953

所用代码为官方DEOM案例(如下所示):

index.html页面

<div>  
        <button id="btn">扫一扫</button>  
    </div>  
    <br><br><br>  
        <div>  
        <button id="pay">支付宝支付</button>  
    </div>  
    <script>  
document.getElementById("btn").addEventListener("click", function() {  
    if(navigator.userAgent.indexOf("Html5Plus") > -1) {  
                var w = plus.webview.create('B.html', 'carcode1', {  
                'titleNView': {  
                    'backgroundColor': '#262930',  
                    'titleText': '扫一扫',  
                    'titleColor': '#FFFFFF',  
                    autoBackButton: false  
                }  
            });  
            plus.webview.show(w, 'slide-in-right', '300ms');  
    } else {  
       alert('请在APP中扫码');  
    }  
});  
</script>

B.html代码如下

 <script type="text/javascript">  
            var scan;  
            if(window.plus) {  
                plusready();  
            } else {  
                document.addEventListener('plusready', plusready, false);  
            }  

            function plusready() {  
                setTimeout(function(){  
                    scan = new plus.barcode.Barcode('mask');  
                    scan.start();  
                    scan.onmarked = function(type, result) {  
                        if(result) {  
                            scan.close();  
                                mui.openWindow({   
                                    url: 'http://www.baidu.com',  
                                    id: 'info',  
                                    extras:{  
                                      result:result  
                                    }  
                                });  
                        }  
                    };  
                },1000);  

                //处理返回事件  
                plus.key.addEventListener('backbutton', function() {  
                    plus.webview.currentWebview().close();  
                    //mui.back();  
                })  
            }  
        </script>

以上代码在真机测试时非常好,正式打包后偶尔会有一次能成功,华为多种型号手机在扫码后闪退。
opp手机扫码后也闪退。

继续阅读 »

hbuilder版 本:HBuilder 9.0.8.201806081953

所用代码为官方DEOM案例(如下所示):

index.html页面

<div>  
        <button id="btn">扫一扫</button>  
    </div>  
    <br><br><br>  
        <div>  
        <button id="pay">支付宝支付</button>  
    </div>  
    <script>  
document.getElementById("btn").addEventListener("click", function() {  
    if(navigator.userAgent.indexOf("Html5Plus") > -1) {  
                var w = plus.webview.create('B.html', 'carcode1', {  
                'titleNView': {  
                    'backgroundColor': '#262930',  
                    'titleText': '扫一扫',  
                    'titleColor': '#FFFFFF',  
                    autoBackButton: false  
                }  
            });  
            plus.webview.show(w, 'slide-in-right', '300ms');  
    } else {  
       alert('请在APP中扫码');  
    }  
});  
</script>

B.html代码如下

 <script type="text/javascript">  
            var scan;  
            if(window.plus) {  
                plusready();  
            } else {  
                document.addEventListener('plusready', plusready, false);  
            }  

            function plusready() {  
                setTimeout(function(){  
                    scan = new plus.barcode.Barcode('mask');  
                    scan.start();  
                    scan.onmarked = function(type, result) {  
                        if(result) {  
                            scan.close();  
                                mui.openWindow({   
                                    url: 'http://www.baidu.com',  
                                    id: 'info',  
                                    extras:{  
                                      result:result  
                                    }  
                                });  
                        }  
                    };  
                },1000);  

                //处理返回事件  
                plus.key.addEventListener('backbutton', function() {  
                    plus.webview.currentWebview().close();  
                    //mui.back();  
                })  
            }  
        </script>

以上代码在真机测试时非常好,正式打包后偶尔会有一次能成功,华为多种型号手机在扫码后闪退。
opp手机扫码后也闪退。

收起阅读 »

Mui 下拉上拉刷新功能

下拉增加动态时间计算功能:

上拉增加状态文字提示功能(当然也支持时间计算功能,只是我们暂时用不到):

下拉增加动态时间计算功能:

上拉增加状态文字提示功能(当然也支持时间计算功能,只是我们暂时用不到):

mui框架地图开发

map

在csdn上写了博客,不想复制,直接给传送门传送门

在csdn上写了博客,不想复制,直接给传送门传送门

解决Hbuilder出现 Uncaught ReferenceError: mui is not defined 错误的解决经验分享!!!

HBuilder

1、Uncaught ReferenceError: mui is not defined 问题的产生:
上午完成好的项目,手机联机测试都没问题,中午吃过饭来云端打包发布,发布后,程序App的登录页面就开始出现问题了,点击按钮没反应,而且发现登录页面的样式也丢失了,好奇怪,不知道什么原因,然后连接手机进行真机调试,发现控制台输出了:Uncaught ReferenceError: mui is not defined 这个错误,真是活见鬼了,没打包发布前好好的,发布打包后,就出现这个奇怪的错误。

2、寻求问题的解决方案:
1)粘贴错误到度娘里面,发现有不少前辈也遇到这个问题,看了一下,多数提到的因为 mui.js的路径出现错误。然后就开始调整App项目里面的
mui.js的路径,从 <script src="../js/mui.min.js"></script> 调整为 <script src="js/mui.min.js"></script>,再调整为 <script src="../../js/mui.min.js"></script>,同时把 mui.init(); 放到页面的最底部,然并卵,发现根本不解决问题,到底什么原因呢?
2)既然有前辈提到是路径,然后经过修改调整路径,发现根本解决不了,干着急,没办法。经过回想,是不是发布的时候,出现了错误呢?
目前的在发布项目已经出现了问题,要不要新建个项目,再尝试一次发布???说干就干,重新创建了App项目,把已经完成的项目里面使用到的必须文件粘贴过来,链接手机调试,发现又ok了,真是活见鬼了,竟然又好了,基本上可以确定一定是打包的时候出现了问题。

3、终极解决方案:
前面提到新建项目,真机联机测试,发现没有问题,这次特意留心下打包发布时的选项,选中要发布的项目,云端打包发布,
注意,注意,一定要看清楚说明再勾选【加入unpackage配置清单】,需要的App资源,例如图片,js,千万是不能勾选忽略必要的资源文件的,然后正常打包,真机安装发布后的App,一切ok,问题完美解决。
附件里面附带了解释说明。

预祝各位,开发App永远没bug,工作顺利,谢谢各位捧场!!!!

继续阅读 »

1、Uncaught ReferenceError: mui is not defined 问题的产生:
上午完成好的项目,手机联机测试都没问题,中午吃过饭来云端打包发布,发布后,程序App的登录页面就开始出现问题了,点击按钮没反应,而且发现登录页面的样式也丢失了,好奇怪,不知道什么原因,然后连接手机进行真机调试,发现控制台输出了:Uncaught ReferenceError: mui is not defined 这个错误,真是活见鬼了,没打包发布前好好的,发布打包后,就出现这个奇怪的错误。

2、寻求问题的解决方案:
1)粘贴错误到度娘里面,发现有不少前辈也遇到这个问题,看了一下,多数提到的因为 mui.js的路径出现错误。然后就开始调整App项目里面的
mui.js的路径,从 <script src="../js/mui.min.js"></script> 调整为 <script src="js/mui.min.js"></script>,再调整为 <script src="../../js/mui.min.js"></script>,同时把 mui.init(); 放到页面的最底部,然并卵,发现根本不解决问题,到底什么原因呢?
2)既然有前辈提到是路径,然后经过修改调整路径,发现根本解决不了,干着急,没办法。经过回想,是不是发布的时候,出现了错误呢?
目前的在发布项目已经出现了问题,要不要新建个项目,再尝试一次发布???说干就干,重新创建了App项目,把已经完成的项目里面使用到的必须文件粘贴过来,链接手机调试,发现又ok了,真是活见鬼了,竟然又好了,基本上可以确定一定是打包的时候出现了问题。

3、终极解决方案:
前面提到新建项目,真机联机测试,发现没有问题,这次特意留心下打包发布时的选项,选中要发布的项目,云端打包发布,
注意,注意,一定要看清楚说明再勾选【加入unpackage配置清单】,需要的App资源,例如图片,js,千万是不能勾选忽略必要的资源文件的,然后正常打包,真机安装发布后的App,一切ok,问题完美解决。
附件里面附带了解释说明。

预祝各位,开发App永远没bug,工作顺利,谢谢各位捧场!!!!

收起阅读 »

周报(20180608):实名认证

实名认证 周报

热门话题

  • DCloud 开发者实名认证流程:推行 appid 唯一化和 App 所有者实名化是 DCloud 目前需要处理的问题,这会影响到目前以及待上线的一系列云端服务,因此需要广大开发者配合完成。
  • 广告误开原因汇总及解决办法:DCloud 不会强制开通广告,如果应用中出现了非预期的广告信息,请按照此文章中的说明进行确认以及后续的操作。

iOS

问题清单

分享

最后

本周的报告就是这些,希望能对大家有所帮助。同时,也希望更多的小伙伴在社区分享自己的经验心得,交流学习。

祝大家周末愉快。

继续阅读 »

热门话题

  • DCloud 开发者实名认证流程:推行 appid 唯一化和 App 所有者实名化是 DCloud 目前需要处理的问题,这会影响到目前以及待上线的一系列云端服务,因此需要广大开发者配合完成。
  • 广告误开原因汇总及解决办法:DCloud 不会强制开通广告,如果应用中出现了非预期的广告信息,请按照此文章中的说明进行确认以及后续的操作。

iOS

问题清单

分享

最后

本周的报告就是这些,希望能对大家有所帮助。同时,也希望更多的小伙伴在社区分享自己的经验心得,交流学习。

祝大家周末愉快。

收起阅读 »

一个vue多页面的脚手架 有demo和教程哦

less Vue

刚做的脚手架,新鲜的.

脚手架地址

APP 演示下载地址

希望大家多issue哦

使用webpack4
MogoH5+ 是一个 vue 多页面脚手架工具,结合 H5+可以快速开发安卓与苹果 APP.

即使不适用 Hbuilder 打包成 APP,本脚手架同样可以作为多页面网页生成的参考项目.

特性

  • 支持 Npm 生态
  • 支持 vue 语法,以及 vue 生态,比如 vux,mint,vant
  • 支持 ES6/ES7 语法
  • 使用 VConsole 调试
  • VSCode 友好
  • 局域网便捷调试
  • 兼容部分 mui 语法
继续阅读 »

刚做的脚手架,新鲜的.

脚手架地址

APP 演示下载地址

希望大家多issue哦

使用webpack4
MogoH5+ 是一个 vue 多页面脚手架工具,结合 H5+可以快速开发安卓与苹果 APP.

即使不适用 Hbuilder 打包成 APP,本脚手架同样可以作为多页面网页生成的参考项目.

特性

  • 支持 Npm 生态
  • 支持 vue 语法,以及 vue 生态,比如 vux,mint,vant
  • 支持 ES6/ES7 语法
  • 使用 VConsole 调试
  • VSCode 友好
  • 局域网便捷调试
  • 兼容部分 mui 语法
收起阅读 »

近期https://appstoreconnect.apple.com无法访问的解决办法

iOS打包

6月5日一年一度的苹果 WWDC 开发者大会在美国加州圣何塞举行。所以近期苹果更新了很多东西,导致https://appstoreconnect.apple.com都无法访问了。

iTC 后台大变身

新增加的域名

本次 iTC 后台域名改了,所以导致无法访问。

新域名:https://appstoreconnect.apple.com

以前的域名:https://itunesconnect.apple.com

访问以前的域名会自动跳转到新域名。

目前只有 safari 或者开vpn才能用其他浏览器打开域名,很多人用其他浏览器无法打开,在Windows的话根本访问。

如果没有vpn或者用不了苹果电脑Safari浏览器,下面介绍配置下谷歌浏览器实现访问的方法。

苹果可能还会调整几天,暂时用这个方法配置访问https://appstoreconnect.apple.com

安装Chrome(谷歌浏览器),或者Opera,用这两个浏览器,其他浏览器配置不行。

谷歌浏览器下载地址

https://www.google.cn/chrome/

在桌面浏览器图标右键选择属性

在目标最后加入:-disable-http2 (注意先在最后加个空格再复制-disable-http2上去,然后确定,启动浏览器就能访问https://appstoreconnect.apple.com了)

我写的ios app真机调试到上架App Store完整教程,不会上架流程的可以参考下

http://www.applicationloader.net/blog/zh/1717.html

继续阅读 »

6月5日一年一度的苹果 WWDC 开发者大会在美国加州圣何塞举行。所以近期苹果更新了很多东西,导致https://appstoreconnect.apple.com都无法访问了。

iTC 后台大变身

新增加的域名

本次 iTC 后台域名改了,所以导致无法访问。

新域名:https://appstoreconnect.apple.com

以前的域名:https://itunesconnect.apple.com

访问以前的域名会自动跳转到新域名。

目前只有 safari 或者开vpn才能用其他浏览器打开域名,很多人用其他浏览器无法打开,在Windows的话根本访问。

如果没有vpn或者用不了苹果电脑Safari浏览器,下面介绍配置下谷歌浏览器实现访问的方法。

苹果可能还会调整几天,暂时用这个方法配置访问https://appstoreconnect.apple.com

安装Chrome(谷歌浏览器),或者Opera,用这两个浏览器,其他浏览器配置不行。

谷歌浏览器下载地址

https://www.google.cn/chrome/

在桌面浏览器图标右键选择属性

在目标最后加入:-disable-http2 (注意先在最后加个空格再复制-disable-http2上去,然后确定,启动浏览器就能访问https://appstoreconnect.apple.com了)

我写的ios app真机调试到上架App Store完整教程,不会上架流程的可以参考下

http://www.applicationloader.net/blog/zh/1717.html

收起阅读 »

mui集成百度语音转写成文字

(function($, doc) {  

    $.plusReady(function() {  
        var dst;  
        var src;  
        var recordCancel = false;  
        var recorder = null;  
        var audio_tips = document.getElementById("audio_tips");  
        var startTimestamp = null;  
        var stopTimestamp = null;  
        var stopTimer = null;  
        var path1 = null;  
        if(mui.os.android) {  
            var format = "amr";  
        } else if(mui.os.ios) {  
            var format = "wav";  
        }  
        var rate = "16000";  
        var channel = "1";  
        //      var cuid = 'plus.device.imei'; //mac和imei码data:audio/amr;base64,  
        var cuid = '';  
        var speech = '';  
        var token_url = "https://aip.baidubce.com/oauth/2.0/token?";  
        var len = '';  
        var grant_type = "grant_type=自己的&";  
        var APIkey = "client_id=自己的&";  
        var SecretKey = "client_secret=自己的&";  
        var AppID = "自己的";  
        var access_token = "";  
        var fileArr = [];  
        var ui = {  
            boxMsgSound: doc.querySelector('#voice'),  
            areaMsgList: doc.querySelector('#search'),  
            boxSoundAlert: doc.querySelector('#sound-alert'),  
            mistake: doc.querySelector('#mistake'),  
            voice: doc.querySelector('#voice'),  
        };  

        function msgTextFocus() {  
            ui.boxMsgText.focus();  
            setTimeout(function() {  
                ui.boxMsgText.focus();  
            }, 150);  
        }  
        //点击输入框话筒  
        ui.boxMsgSound.addEventListener('tap', function(event) {  
            recordCancel = false;  
            if(stopTimer) clearTimeout(stopTimer);  
            audio_tips.innerHTML = "点击完成";  
            ui.boxSoundAlert.classList.remove('rprogress-sigh');  
            setSoundAlertVisable(true);  
            jQuery('.shield').show();  
            recorder = plus.audio.getRecorder();  
            if(recorder == null) {  
                plus.nativeUI.toast("不能获取录音对象");  
                return;  
            }  
            startTimestamp = (new Date()).getTime();  
            recorder.record({  
                format: 'wav',  
                samplerate: '16000',  
                filename: "_doc/audio/"  
            }, function(path) {  
                fileArr.push(path);  
                if(recordCancel) return;  
                Audio2dataURL(path);  
            }, function(e) {  
                plus.nativeUI.toast("录音时出现异常: " + e.message);  
            });  

        }, false);  

        ui.boxSoundAlert.addEventListener('tap', function(event) {  
            setSoundAlertVisable(false);  
            jQuery('.shield').hide();  
            recorder.stop();  
        }, false);  
        var setSoundAlertVisable = function(show) {  
            if(show) {  
                ui.boxSoundAlert.style.display = 'block';  
                ui.boxSoundAlert.style.opacity = 1;  
            } else {  
                ui.boxSoundAlert.style.opacity = 0;  
                //fadeOut 完成再真正隐藏  
                setTimeout(function() {  
                    ui.boxSoundAlert.style.display = 'none';  
                }, 200);  
            }  
        };  

        /**  
         * 录音语音文件转base64字符串  
         * @param {Object} path  
         */  
        function Audio2dataURL(path) {  
            plus.io.resolveLocalFileSystemURL(path, function(entry) {  
                entry.file(function(file) {  
                    var reader = new plus.io.FileReader();  
                    reader.onloadend = function(e) {  
                        var strResult = e.target.result;  
                        var index = strResult.indexOf('base64,') + 7;  
                        var base64Str = strResult.slice(index, strResult.length);  
                        delVoiceFile();  
                        len = file.size;  
                        if(!pageUtils.netWork()) {  
                            pageUtils.netToast();  
                        } else {  
                            voiceToWord(base64Str);  
                        }  
                    };  
                    reader.readAsDataURL(file);  
                }, function(e) {  
                    pageUtils.showToast("读写出现异常: " + e.message);  
                })  
            })  
        }  

        token();  
                //获取token,需要取百度语音自己获取,相关操作参考百度语音api  
        function token() {  
            if(mui.os.android) {  
                data2 = grant_type + APIkey + SecretKey;  
            } else if(mui.os.ios) {  
                APIkey = 'client_id=自己的&';  
                SecretKey = 'client_secret=自己的';  
                AppID = '自己的';  
                data2 = grant_type + APIkey + SecretKey;  
            }  
            mui.ajax(token_url, {  
                data: data2,  
                type: 'post',  
                contentType: "application/json; charset=utf-8",  
                timeout: 5000,  
                success: function(resp) {  
                    access_token = resp.access_token;  
                },  
                error: function(xhr, type, errorThrown) {  
                    pageUtils.showToast("网络请求出错");  
                }  
            });  
        }  
                //将语音转成文字  
        function voiceToWord(speech) {  
            var data1 = {  
                "rate": rate,  
                "format": format,  
                "channel": channel,  
                "cuid": AppID,  
                "token": access_token,  
                "speech": speech,  
                "dev_pid": 1536,  
                "len": len  
            };  
            mui.ajax(pageUtils.VOICEURL, {  
                data: data1,  
                type: 'post',  
                contentType: "application/json; charset=utf-8",  
                timeout: 5000,  
                success: function(resp) {  
                    if(resp.result == undefined || resp.result == '') {  
                        return;  
                    }  
                    jQuery('#mistake').show();  
                    jQuery('#voice').hide();  
                    ui.areaMsgList.value = resp.result[0];  
                },  
                error: function(xhr, type, errorThrown) {  
                    if(type == 'timeout') {  
                        pageUtils.showToast("录音超时");  
                    } else {  
                        pageUtils.showToast("网络请求出错");  
                    }  
                }  
            });  
        }  
        //这里录音发送完成就不需要了,所以没有必要存在手机里,直接删除音频  
        function delVoiceFile() {  
            for(var i = 0; i < fileArr.length; i++) {  
                plus.io.resolveLocalFileSystemURL(fileArr[i], function(entry) {  
                    if(entry.isFile) {  
                        setTimeout(function() {  
                            entry.remove(function(entry) {  
                                fileArr.pop();  
                                //                              pageUtils.showToast('删除成功');  
                            }, function(e) {  
                                //                              pageUtils.showToast('删除失败');  
                            });  
                        }, 500);  

                    }  
                }, function(e) {  
                    alert("Resolve file URL failed: " + e.message);  
                });  
            }  

        }  

    });  
}(mui, document));
继续阅读 »
(function($, doc) {  

    $.plusReady(function() {  
        var dst;  
        var src;  
        var recordCancel = false;  
        var recorder = null;  
        var audio_tips = document.getElementById("audio_tips");  
        var startTimestamp = null;  
        var stopTimestamp = null;  
        var stopTimer = null;  
        var path1 = null;  
        if(mui.os.android) {  
            var format = "amr";  
        } else if(mui.os.ios) {  
            var format = "wav";  
        }  
        var rate = "16000";  
        var channel = "1";  
        //      var cuid = 'plus.device.imei'; //mac和imei码data:audio/amr;base64,  
        var cuid = '';  
        var speech = '';  
        var token_url = "https://aip.baidubce.com/oauth/2.0/token?";  
        var len = '';  
        var grant_type = "grant_type=自己的&";  
        var APIkey = "client_id=自己的&";  
        var SecretKey = "client_secret=自己的&";  
        var AppID = "自己的";  
        var access_token = "";  
        var fileArr = [];  
        var ui = {  
            boxMsgSound: doc.querySelector('#voice'),  
            areaMsgList: doc.querySelector('#search'),  
            boxSoundAlert: doc.querySelector('#sound-alert'),  
            mistake: doc.querySelector('#mistake'),  
            voice: doc.querySelector('#voice'),  
        };  

        function msgTextFocus() {  
            ui.boxMsgText.focus();  
            setTimeout(function() {  
                ui.boxMsgText.focus();  
            }, 150);  
        }  
        //点击输入框话筒  
        ui.boxMsgSound.addEventListener('tap', function(event) {  
            recordCancel = false;  
            if(stopTimer) clearTimeout(stopTimer);  
            audio_tips.innerHTML = "点击完成";  
            ui.boxSoundAlert.classList.remove('rprogress-sigh');  
            setSoundAlertVisable(true);  
            jQuery('.shield').show();  
            recorder = plus.audio.getRecorder();  
            if(recorder == null) {  
                plus.nativeUI.toast("不能获取录音对象");  
                return;  
            }  
            startTimestamp = (new Date()).getTime();  
            recorder.record({  
                format: 'wav',  
                samplerate: '16000',  
                filename: "_doc/audio/"  
            }, function(path) {  
                fileArr.push(path);  
                if(recordCancel) return;  
                Audio2dataURL(path);  
            }, function(e) {  
                plus.nativeUI.toast("录音时出现异常: " + e.message);  
            });  

        }, false);  

        ui.boxSoundAlert.addEventListener('tap', function(event) {  
            setSoundAlertVisable(false);  
            jQuery('.shield').hide();  
            recorder.stop();  
        }, false);  
        var setSoundAlertVisable = function(show) {  
            if(show) {  
                ui.boxSoundAlert.style.display = 'block';  
                ui.boxSoundAlert.style.opacity = 1;  
            } else {  
                ui.boxSoundAlert.style.opacity = 0;  
                //fadeOut 完成再真正隐藏  
                setTimeout(function() {  
                    ui.boxSoundAlert.style.display = 'none';  
                }, 200);  
            }  
        };  

        /**  
         * 录音语音文件转base64字符串  
         * @param {Object} path  
         */  
        function Audio2dataURL(path) {  
            plus.io.resolveLocalFileSystemURL(path, function(entry) {  
                entry.file(function(file) {  
                    var reader = new plus.io.FileReader();  
                    reader.onloadend = function(e) {  
                        var strResult = e.target.result;  
                        var index = strResult.indexOf('base64,') + 7;  
                        var base64Str = strResult.slice(index, strResult.length);  
                        delVoiceFile();  
                        len = file.size;  
                        if(!pageUtils.netWork()) {  
                            pageUtils.netToast();  
                        } else {  
                            voiceToWord(base64Str);  
                        }  
                    };  
                    reader.readAsDataURL(file);  
                }, function(e) {  
                    pageUtils.showToast("读写出现异常: " + e.message);  
                })  
            })  
        }  

        token();  
                //获取token,需要取百度语音自己获取,相关操作参考百度语音api  
        function token() {  
            if(mui.os.android) {  
                data2 = grant_type + APIkey + SecretKey;  
            } else if(mui.os.ios) {  
                APIkey = 'client_id=自己的&';  
                SecretKey = 'client_secret=自己的';  
                AppID = '自己的';  
                data2 = grant_type + APIkey + SecretKey;  
            }  
            mui.ajax(token_url, {  
                data: data2,  
                type: 'post',  
                contentType: "application/json; charset=utf-8",  
                timeout: 5000,  
                success: function(resp) {  
                    access_token = resp.access_token;  
                },  
                error: function(xhr, type, errorThrown) {  
                    pageUtils.showToast("网络请求出错");  
                }  
            });  
        }  
                //将语音转成文字  
        function voiceToWord(speech) {  
            var data1 = {  
                "rate": rate,  
                "format": format,  
                "channel": channel,  
                "cuid": AppID,  
                "token": access_token,  
                "speech": speech,  
                "dev_pid": 1536,  
                "len": len  
            };  
            mui.ajax(pageUtils.VOICEURL, {  
                data: data1,  
                type: 'post',  
                contentType: "application/json; charset=utf-8",  
                timeout: 5000,  
                success: function(resp) {  
                    if(resp.result == undefined || resp.result == '') {  
                        return;  
                    }  
                    jQuery('#mistake').show();  
                    jQuery('#voice').hide();  
                    ui.areaMsgList.value = resp.result[0];  
                },  
                error: function(xhr, type, errorThrown) {  
                    if(type == 'timeout') {  
                        pageUtils.showToast("录音超时");  
                    } else {  
                        pageUtils.showToast("网络请求出错");  
                    }  
                }  
            });  
        }  
        //这里录音发送完成就不需要了,所以没有必要存在手机里,直接删除音频  
        function delVoiceFile() {  
            for(var i = 0; i < fileArr.length; i++) {  
                plus.io.resolveLocalFileSystemURL(fileArr[i], function(entry) {  
                    if(entry.isFile) {  
                        setTimeout(function() {  
                            entry.remove(function(entry) {  
                                fileArr.pop();  
                                //                              pageUtils.showToast('删除成功');  
                            }, function(e) {  
                                //                              pageUtils.showToast('删除失败');  
                            });  
                        }, 500);  

                    }  
                }, function(e) {  
                    alert("Resolve file URL failed: " + e.message);  
                });  
            }  

        }  

    });  
}(mui, document));
收起阅读 »

uniapp启动画面

uniapp

uniapp启动画面什么时候有啊

uniapp启动画面什么时候有啊