基于React-Native0.55.4的语音识别项目全栈方案

本文探讨了移动端基于React-Native0.55.4的语音识别项目方案,指出移动端直接访问Web应用的限制,如浏览器不支持录音接口。作者分析了WebView、Cordova/Ionic、React-Native等方案,最终选择了React-Native,并分享了项目架构、所需插件及开发中遇到的坑,如权限、真机调试和组件使用等问题。
摘要由CSDN通过智能技术生成

 移动端的API能力验证方案与PC端不一样!不一样!!不一样!!! 即使需要使用的API都存在,也不一定能用,这一点和PC端是有很大区别的,国内的手机系统虽然都是基于Android,但几乎都会经过各大厂商的定制,功能与原版Android系统并不是完全一致的,在考察技术方案的时候一定要确认用demo把功能跑起来才可以,别问我怎么知道的。

 

一. 移动端直接访问Web应用?

PC端基于Web API的语音识别方案可参考《【Recorder.js+百度语音识别】全栈方案技术细节》一文。

1. 调用Web API的多媒体采集接口需要特定的域

Web API的多媒体接口是WebRTC技术在PC端的实现,由于多媒体采集涉及到用户隐私,所以在浏览器端调用这个接口需要在安全的域下才能被调起,安全的域是指以下三类:

  • file:///本地域
  • http://localhost本地web服务器
  • https://安全域

前两类一般用于桌面应用和本地调试,实际网站上线部署需要以https方式部署,如何部署https及申请免费的CA证书等网上有很多文章讲解,本文不再赘述。

2. 手机浏览器几乎都不直接支持WebRTC 接口

将PC端的Web应用以https方式部署好之后,从手机浏览器直接访问时无法唤起录音接口权限认证,navigator.getUserMedia( )方法一只返回permissionDenied错误,无论是在Android6.0以下通过编辑manifest.xml添加还是Android6.0以上通过动态获取的方式取得RECORD_AUDIO权限,网站都可以正常访问,相关的Web API接口也都存在,但即使获得用户授权后也无法调起录音功能。笔者测试了UC浏览器百度移动浏览器Android6.0(API23)自带的浏览器Android8.0(API26)自带的浏览器,结果是都不支持。

二. 方案调研和新的坑

o( ̄▽ ̄)d 既然从移动端直接访问Web应用时无法调起录音接口,至少是无法兼容很多系统和机型,如果不考虑直接原生开发Android的话,只有寄希望于Hybrid的方案了。

2.1 WebView

  • 方案
    在一个app中单页面全屏放置一个WebView组件,然后加载https方式部署的web应用。
  • 理由
    手机浏览器无法支持的情况下,只能寄希望于WebViewWebView是Android底层用于加载网页的组件,Android4.4版本以后已将内置的浏览器引擎更换为chromium,也就是chrome的内核,从Can I Use上查询的支持度是Android5.0以上的版本的WebView都是支持WebRTC接口的getUserMedia( )方法的。
  • 测试结果
    应用编译目标版本为API23,在支持API23
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值