【发布时间】:2016-10-31 06:52:30
【问题描述】:
我面临一个相当烦人的问题: 对于客户项目,我需要使用 HTML5/JavaScript(客户规范)进行某种“语音结束”检测。所以我做了一些研究并想“好吧,让我们试试 SpeechRecognition API”,它是“onspeechend”-Event。这在我的机器上就像魅力一样,但在应用程序本身中却不行。在我的研究中,我发现您在应用程序中使用的 WebView 实际上不是系统默认浏览器。
默认浏览器的userAgent返回我
Mozilla/5.0 (Linux; Android 6.0.1; SM-G900F Build/MMB29M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/54.0.2840.68 Mobile Safari/537.36
然而,WebView-userAgent 返回
Mozilla/5.0 (Linux; Android 6.0.1; SAMSUNG SM-G900F Build/MMB29M) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/4.0 Chrome/44.0.2403.133 Mobile Safari/537.36
令人不安的是,SpeechRecognition-API 在默认浏览器中可用,但在 WebView 实例中不可用。有人知道如何解决/解决这个问题吗?
或任何想法,如何检测语音结束。不幸的是,使用 SpeechRecognition-Intent 不是一种选择。我想这样做,但如前所述,客户坚持使用 HTML5/JavaScript 进行此操作。
【问题讨论】:
-
为什么要求不使用原生方法?
-
因为客户希望“将代码重用于其他基于 Web 的应用程序”。不要问,我也对此不感兴趣,因为这会导致比需要更多的工作。
-
完全不使用本机并使用 Cordova 应用程序可能是一个想法吗? 请注意,虽然 1 个代码库有时很棒,但它往往会导致最低分母的妥协,并错过一些很棒的东西。
-
没有解决问题,因为没有满足要求。如果我们编写一个 Cordova-App,我们仍然没有用可重用的 JavaScript 编写主要部分。
-
所以你的应用是纯html/js的?没有科尔多瓦包装纸或类似的东西?然后除了提示用户为 android 安装 chrome 之外,我看不出如何解决这个问题。只是好奇你为什么提到 SpeechRecognition-Intent。您不能从浏览器中使用这些意图,或者可以吗?
标签: javascript android html speech-recognition webkitspeechrecognition