用phonegap实现录音功能并上传

最近做中软杯遇到一个严峻的问题,语音聊天,因为开发模式为hybird,另外由于能力有限只能利用phonegap提供的插件。


开始解决这个问题的时候,有两种选择,一种为是利Capture,即调用本机的录音机功能,第二种是利用Media进行录制,后者应该可以实现较好的语音聊天功能(但事实并不能)


Media方式可以参照点击打开链接。主要遇到的问题有两个:1、找不到指定的文件,按照它给的源码应该是存在根目录下,但上传文件时并没有找到2、在根目录下录得的文件无法播放(一秒一秒的?)              自己测试的源码删掉了- -   若此篇有幸被大神看到,希望能帮忙解决media的录音上传问题,感激不尽。


虽然Capture采集的这种方式。。怎么说,有点low,但有一个好处,就是自己不用写界面了啊。。。系统是啥样就是啥样。

本人采用控制台给项目添加插件的方式   在对应项目下添加     cordova plugin add org.apache.cordova.media-capture

以下是录音实现的具体代码,当然包括了上传

changeFooterToVoice: function () {
        $("#pgTalk .voice").unbind("click").bind("click", function () {
            navigator.device.capture.captureAudio(captureSuccess, captureError, { limit: 1,mode });
            function captureSuccess(mediaFiles) {
                uploadFile(mediaFiles[0]);
            }

            // 采集操作出错后的回调函数
            function captureError(error) {
                var msg = 'An error occurred during capture: ' + error.code;
                navigator.notification.alert(msg, null, 'Uh oh!');
            }
            function uploadFile(mediaFile) {
                var ft = new FileTransfer(),
                path = mediaFile.fullPath,
                name = mediaFile.name;

                var options = new FileUploadOptions();
                var params = new Object();
                params.SendId = AppData.UserId;
                params.RecieveId = aFriendContact.FriendId;
                params.name = mediaFile.name;
                options.params = params;

                ft.upload(path,
                        AppData.ServiceUrl + "servlet/SendVoice",
                        function (result) {
                            console.log('Upload success: ' + result.responseCode);
                            console.log(result.bytesSent + ' bytes sent');
                        },
                        function (error) {
                            console.log('Error uploading file ' + path + ': ' + error.code);
                        },options);
            }
        });
        $("#pgTalk .foot-text-table").css('display','none');
        $("#pgTalk .foot-voice-table").css('display','');
    }


上传用到File-transfer这个插件   在对应项目下添加       cordova plugin add org.apache.cordova.file-transfer     这些插件的具体用法都可以参照上面的链接

 

没有过多的注释就不要吐槽了。。


上传过后的文件一般是wav或者amr(什么鬼格式。。。)



从服务器上下下来的amr格式文件用HTML5的audio标签并没有办法播放,因此机智的我的组长(学长)把这该死的amr转为mp3格式,最后成功解决了!


如果不知道怎么转:)百度就好了。做完这个功能之后我们得出一个结论,java什么不能干:)(目前的水平)





评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值