- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
TL; DR: 它不起作用的原因是因为我在 Android 6.0 上运行该应用程序。在 6.0 中,您必须手动授予应用程序访问麦克风的权限。
原帖:我想创建一个使用 speechRecognition 的 ionic 应用程序 https://github.com/macdonst/SpeechRecognitionPlugin
但不知为什么它不起作用?
首先我创建了一个 ionic 项目:
ionic start cordova-speech blank
我进入那个新文件夹并下载了插件:
cordova plugin add https://github.com/macdonst/SpeechRecognitionPlugin
然后我添加了android平台。
我的 HTML 文件:
<body ng-app="starter">
<ion-pane ng-controller="AppCtrl">
<ion-content class="padding">
<button class="button button-full button-positive" ng-click="record()">
Record
</button>
<div class="card">
<div class="item item-text-wrap">
{{recognizedText}}
</div>
</div>
</ion-content>
</ion-pane>
</body>
我的 app.js 文件:
angular.module('starter', ['ionic'])
.controller('AppCtrl', function($scope) {
$scope.recognizedText = '';
$scope.record = function() {
alert("step1");
var recognition = new SpeechRecognition();
alert("step2");
recognition.onresult = function(event) {
alert("step3");
if (event.results.length > 0) {
$scope.recognizedText = event.results[0][0].transcript;
$scope.$apply();
}
};
recognition.start();
alert("step4");
};
});
我在代码中添加了一些警报以便进行调试(无法在浏览器中调试该功能)。当我按下录制按钮时,它只会弹出第一个和第二个警报。问题似乎与结果有关。我错过了什么?
我使用的是 Android 6.0
我做了一个 adb logcat。这是结果:
02-14 03:39:28.109 202 815 D audio_hw_primary: select_devices: out_snd_device(2: speaker) in_snd_device(0: none)
02-14 03:39:28.109 202 815 D msm8974_platform: platform_send_audio_calibration: sending audio calibration for snd_device(2) acdb_id(15)
02-14 03:39:28.109 202 815 D audio_hw_primary: enable_snd_device: snd_device(2: speaker)
02-14 03:39:28.114 202 815 D audio_hw_primary: enable_audio_route: apply and update mixer path: low-latency-playback
02-14 03:39:28.124 26122 26210 D OpenGLRenderer: endAllStagingAnimators on 0x985f7a00 (RippleDrawable) with handle 0x9cace320
02-14 03:39:28.173 779 1396 W InputMethodManagerService: Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@eaa7e51 attribute=null, token = android.os.BinderProxy@f80d5f9
02-14 03:39:28.307 189 189 W SurfaceFlinger: couldn't log to binary event log: overflow.
02-14 03:39:29.552 202 815 D audio_hw_primary: out_set_parameters: enter: usecase(1: low-latency-playback) kvpairs: routing=2
02-14 03:39:29.560 26122 26122 I chromium: [INFO:CONSOLE(34)] "initialized", source: file:///android_asset/www/plugins/org.apache.cordova.speech.speechrecognition/www/SpeechRecognition.js (34)
02-14 03:39:29.562 779 1389 W InputMethodManagerService: Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@7dff324 attribute=null, token = android.os.BinderProxy@f80d5f9
02-14 03:39:29.569 30081 30096 E RecognitionService: call for recognition service without RECORD_AUDIO permissions
02-14 03:39:29.569 26122 26122 D SpeechRecognition: error speech
02-14 03:39:29.570 26122 26122 W CordovaPlugin: Attempted to send a second callback for ID: SpeechRecognition494458598
02-14 03:39:29.570 26122 26122 W CordovaPlugin: Result was: {"type":"end"}
02-14 03:39:29.570 26122 26122 D cr_Ime : [ImeAdapter.java:213] updateKeyboardVisibility: type [0], flags [0], show [true]
02-14 03:39:29.570 26122 26122 D cr_Ime : [AdapterInputConnection.java:178] updateState [] [0 0] [-1 -1] [true]
02-14 03:39:29.586 202 815 D AudioFlinger: mixer(0xb4180000) throttle end: throttle time(7)
02-14 03:39:29.747 189 189 W SurfaceFlinger: couldn't log to binary event log: overflow.
02-14 03:39:30.796 910 31147 D NotificationMonitor: onNotificationPosted :StatusBarNotification(pkg=com.qihoo.security user=UserHandle{0} id=277 tag=null score=20 key=0|com.qihoo.security|277|null|10720: Notification(pri=2 contentView=com.qihoo.security/0x7f0300d4 vibrate=null sound=null tick defaults=0x0 flags=0x2 color=0x00000000 sortKey=sort_key_00 vis=PRIVATE))
02-14 03:39:30.903 910 31147 D NotificationMonitor: return, onNotificationPosted OWN_PKG_NAME
02-14 03:39:32.721 202 815 D audio_hw_primary: disable_audio_route: reset and update mixer path: low-latency-playback
02-14 03:39:32.721 202 815 D audio_hw_primary: disable_snd_device: snd_device(2: speaker)
更新:我安装了
cordova plugin add cordova-plugin-chrome-apps-audiocapture --save
ordova plugin add org.apache.cordova.media
有人说我应该删除
<uses-permission android:name="android.permission.RECORD_AUDIO" />
来 self 的 speechrecognition 和 cordova 媒体插件,但它也无济于事。它现在执行第 4 个警报但跳过警报 3,这意味着 onresult 函数仍然存在问题。
最佳答案
日志中的这一行:
02-14 03:39:29.569 30081 30096 E RecognitionService: call for recognition service without RECORD_AUDIO permissions
告诉您需要设置权限才能在您的应用程序中录制音频。您可以添加插件 org.apache.cordova.media
cordova plugin add org.apache.cordova.media
描述here .
关于javascript - Ionic Cordova macdonst SpeechRecognition 无法启动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35387610/
我使用plugman命令在cordova中创建了一个插件 它创建了所有必需的文件。然后我在插件中添加了android平台。 然后我尝试将它添加到 cordova 应用程序中。我成功添加了它,但是当我尝
我使用plugman命令在cordova中创建了一个插件 它创建了所有必需的文件。然后我在插件中添加了android平台。 然后我尝试将它添加到 cordova 应用程序中。我成功添加了它,但是当我尝
我正在尝试在较旧的 Atrix 上安装一个应用程序,在 S3 上运行良好。搜索论坛可能的问题是SDK版本较高(Atrix是4.0.4)。修复显然是在设置 API 级别。 但是当我运行 cordova
使用 cordova build在一个为期一年的项目中提出: :processDebugResources my_project/platforms/android/build/intermediat
我有一个可以创建文件的可运行应用程序。 我正在寻找一种工作后数小时从cordova应用程序中删除文件的方法。我似乎无法使其正常工作。 这是用于创建和删除文件的代码: function crea
有什么区别吗Cordova 构建 Android 和 Cordova 准备 Android 命令? Reference is added here 最佳答案 准备将您的 www Assets 和任何插
我检查了文档,但没有找到关于此命令的明确说明。 那么,有谁知道cordova prepare命令的作用是什么? 是否更新特定于平台的www文件夹? 如果是,它将复制根www的全部内容吗? 它会更新平台
我们正在开发正在使用Cordova(专用于Ionic)的移动应用程序,并且正在使用PhoneGap PushPlugin和Amazon SNS进行推送通知。反过来,这会撞到我们与Amazon SNS进
我正在使用Vue,Webpack和Cordova。 Videos 如果我在没有Cordova的情况下加载页面,并且在Firefox浏览器中,则可以使用Youtube视频上的全屏图
因此,我尝试在我的(正在运行的)Ionic应用程序中安装一个新插件,该文件名为https://ionicframework.com/docs/native/firebase-dynamic-links
我像这样安装了cordova: C:\Windows\system32>npm install -g cordova 我明白了: C:\Users\cyril\AppData\Roaming\npm\
我有一个 cordova 应用程序,我使用以下代码捕获了后退按钮: document.addEventListener("backbutton", function (e) { bac
如何在 Cordova 中的蓝牙设备和 Android/iOS 之间发送和接收一系列数据字节? 我的项目的详细信息: 我正在开发一个蓝牙传感器设备。设备以一系列字节的形式发送数据。它还对设备 API
我是 cordova 开发的新手。我使用 Onsen UI (1.2.1) 作为布局框架。ons-toolbar 上的标题有问题。 someTextHere 如果我在 ripple 上运行
我有一个启用了平台浏览器的 Cordova 应用程序。我想在 Chrome 中使用摄像头,但调用摄像头根本没有任何反馈。它在我的 Android 设备上就像一个魅力。 我通过这个命令启动:cordov
我对thid docs https://firebase.google.com/docs/android/setup#available_libraries中提到的根级和应用程序级的路径目录感到困惑
喜欢这些插件 https://github.com/ArchieGoodwin/SilentShot https://github.com/alongubkin/phonertc 他们没有 tarba
我有一个 Angular 2 应用程序,我正在将其构建到 cordova 中并部署到 Android/IOS。我没有使用 ionic,我见过许多使用 ionic 的解决方案,但我现在无法将整个项目转换
当我发出命令时,在带有 Cordova 的 Ionic 3 中: ionic cordova run android --emulate 它给出以下消息: BUILD FAILED in 3s
我无法在 ionic 5.2.4v 中安装软件包 cordova-res 并收到以下错误。 命令:cordova-res C:\hanu\cordova-res-master\cordova-res
我是一名优秀的程序员,十分优秀!