- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我已经在我的项目中添加了这段代码
if (navigator.mediaDevices === undefined) {
navigator.mediaDevices = {};
}
if (navigator.mediaDevices.getUserMedia === undefined) {
navigator.mediaDevices.getUserMedia = function (constraints) {
var getUserMedia = (
navigator.getUserMedia ||
navigator.webkitGetUserMedia ||
navigator.mozGetUserMedia
);
if (!getUserMedia) {
return Promise.reject(new Error('getUserMedia is not implemented in this browser'));
}
return new Promise(function (resolve, reject) {
getUserMedia.call(navigator, constraints, resolve, reject);
});
};
}
然后我尝试使用 getUserMedia
访问视频流
navigator.mediaDevices.getUserMedia({
video: true,
audio: false
}).then(stream => {
// do stuff
}).catch(error => {
console.log(error.name + " " + error.message);
});
当我在我的模拟器中测试它时它适用于 android 版本 5 和更高版本,但是当我在实际设备上运行它时我得到这个错误
NotReadableError Could not start source
我已经添加了 cordova-plugin-media-capture
插件以确保我的应用程序将请求适当的权限,但是我不想使用该插件我宁愿使用 getUserMedia
API。
到目前为止,我的研究表明这个错误的原因是其他一些应用程序已经在使用相机但事实并非如此,我什至更进一步并重新启动设备,然后打开我的应用程序,确保有没有其他正在运行的应用程序,我仍然遇到错误。
有人遇到过这个问题吗?
最佳答案
更新 - 2020 年 11 月 19 日
WKWebView 可以在 iOS 14.3 beta 1 中使用 getUserMedia。
更新 - 2020 年 4 月 6 日
另一个错误票据专门针对 WKWebView 提交。没有支持。 https://bugs.webkit.org/show_bug.cgi?id=208667
更新独立模式,在 iOS 13.4 中获取 getUserMedia 访问权限 https://bugs.webkit.org/show_bug.cgi?id=185448#c6
更新 - 2019 年 9 月 14 日
iOS 13 和 Safari 13 上的 Safari 发生了变化:https://developer.apple.com/documentation/safari_release_notes/safari_13_release_notes
SFSafariViewController 已获得 getUserMedia 功能(!!!,但是我需要确认这一点,请参阅下面的报告以获取它的工作情况)
https://bugs.webkit.org/show_bug.cgi?id=183201
但是 WKWebView 似乎没有获得 getUserMedia 功能:
https://bugs.chromium.org/p/chromium/issues/detail?id=752458 https://bugs.webkit.org/show_bug.cgi?id=185448
iOS 13 和 Safari 13 发行说明:
https://developer.apple.com/documentation/ios_ipados_release_notes/ios_13_release_notes https://developer.apple.com/documentation/safari_release_notes/safari_13_release_notes
更新 - 04/11/2018 - 工作 Ionic、Cordova 和 Native android 示例的链接以及说明
GitHub link to working Cordova example
GitHub link to working Android example
GitHub link to a working Ionic example
在Android上通过Cordova框架实现getUserMedia访问的步骤是:
./www/js/adapter.js
并包含在 ./www/index.html
cordova 插件添加 cordova-plugin-android-permissions
./www/js/index.js
文件中添加插件权限代码和必要的getUserMedia 代码。确保使用 getUserMedia 适配器。请将此文件作为示例 (link)。请在 GitHub 项目中查看完整的逐行说明以及成功和错误图像。
我不确定这有多少与 Cordova 相关...但是,当我制作自己的 Android getUserMedia 测试应用程序 (link) 时,我遇到了这个错误。它主要取决于 native 应用程序的用户权限,然后是父应用程序如何创建 webview,您的应用程序中打包了哪个版本的 webrtc,以及您如何调用 getUserMedia。
应用程序的 JavaScript 端:与其自己编写浏览器 shim 代码,不如确保使用 WebRTC 适配器 ( link )。这消除了很多常见问题。您可以在此处查看示例 (link)。我还建议您查看此处的 WebRTC 示例 (link)。
应用程序的 native 端:您将需要视频和音频的麦克风和摄像头用户权限。这是罪魁祸首。您需要确保在创建 WebView 之前它们已被接受。因此,所有权限检查、弹出窗口等都需要在创建 WebView 之前发生。如果在您很可能需要重启 App 等之后授予权限。
当您构建和部署应用程序时,如果您尚未收到提示,请转至应用程序设置并手动启用权限。那么它应该可以工作。
我无法让视频/音频模拟仅在实际设备上的模拟器中工作。在接受权限之前,我也只在使用 WebChromeView 的 Android 上遇到了 NotReadableError。最后,Android 的最低 API 版本是 21 (Lollipop),因为父应用程序需要通过 WebView onPermissionRequest (link) 允许运行时权限。
由于许多应用内浏览器(Facebook、Pinterest 等)不处理 Android 上的 onPermissionRequest,通过网站的 WebRTC 通常不起作用。在 iOS 上,它保证(截至 2018 年 4 月)不起作用,因为 Apple 只允许通过 Safari 访问 WebRTC。因此,Cordova 仅限于 Android API 21 如果它正确处理了权限。
关于javascript - 不可读错误 : Could not start source,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48775154/
我刚刚注意到 align-self 属性的一些值,这是我以前从未见过的。什么是start、end、self-start、self-end,它们与有什么区别>flex-start 和 flex-end?
我见过程序员使用公式 mid = start + (end - start) / 2 而不是使用更简单的公式 mid = (start + end) / 2 用于查找数组或列表中的中间元素。 为什么他
我们已经设置了一个小型 AZURE VM(由 Microsoft 提供的普通 Windows 2012 R2 镜像),其中包含一个轻量级 DEMO 应用程序,该应用程序可以与 SQLExpress 和
我在笔记本电脑上安装了Xampp 3.2.1版,之前MySQL在它上面运行得很好,但突然MySQL停止运行,而阿帕奇和其他公司都在运行。当我点击开始MySQL时,它显示这个错误我使用Windows 1
我希望我能解释清楚。 我有自动生成的代码,我希望用 CSS 覆盖它。 这是我希望覆盖的代码示例: #u1150:hover #u1153-4 p {color: red} 重要提示:此代码中的“u”将
在我的 package.json 中,我有以下脚本 block : "scripts": { "start": "react-scripts start",
https://github.com/lodash/lodash/blob/3.7.0/lodash.src.js#L2781 此代码段 start = start == null 中的 +start
上下文 我一直在阅读有关如何将 TUMBLINGWINDOW 函数与 TIMSTAMP BY 子句一起使用的文档,但似乎找不到有关如何计算包含 TUMBLING WINDOW 和 TIMESTAMP
我正在使用 Grunt 运行 Protractor 端到端测试用例。我有以下三个任务(我使用的是 windows 7 机器) webdriver-stop webdriver-start Protra
我正在创建一个简单的Java程序,它具有在窗口生成器的帮助下构建的GUI。 GUI只包含一个按钮。 单击按钮后,启动一个线程,该线程将无限次打印到随机数,直到再次单击同一按钮将其停止为止。 这是我的代
我一直在摆弄创建一个运行渲染的线程,并且我遇到了这种实现它的方法: Class Main implements Runnable { private Thread thread; private bo
我如何在 StartButton 类中编写一个 touchesBegun 命令,它在场景中调用 start() 任何实例本身? 我知道......可能是 OOP 101。但今天我远远超出了我的范围。
关闭。这个问题需要更多 focused .它目前不接受答案。 想改进这个问题?更新问题,使其仅关注一个问题 editing this post . 8年前关闭。 Improve this questi
我的目标是运行多个进程并保存它们的 ProcessName和 Id供以后使用。这是我的代码 [System.Collections.ArrayList]$startedProcesses = @()
我在 8086 汇编方面没有太多经验,我想知道如果您不写起始标签 (start:) 和该标签的结尾,程序会发生什么 (end start)(围绕执行代码的标签)? 所以我的问题是这个标签是否是执行所必
我在 8086 汇编方面没有太多经验,我想知道如果您不写起始标签 (start:) 和该标签的结尾,程序会发生什么 (end start)(围绕执行代码的标签)? 所以我的问题是这个标签是否是执行所必
我想在另一个脚本的 Start() 之前从一个脚本运行 Start()。是否可以?您可以选择脚本的执行顺序吗? 最佳答案 我不太确定 Start() 但您可以配置 Awake 的脚本执行顺序,OnEn
我有一个来自 Unity 文档页面的示例程序,其中包含 IEnumerator Start() ,如下所示,但我想知道如何才能拥有正常的 void Start() > 在同一个脚本中? 我也尝试添加v
正如标题所说,“从机启动”和“从机启动”有什么区别?当我接受DBA面试时,他问了这个问题,我搜索了google但没有找到答案,有人知道吗? 最佳答案 没有区别.. Slave start; 已弃用,现
我有几十个未记录的表,文档说未记录的表在崩溃或不正常关机后会自动截断。 基于此,我需要在数据库启动后检查一些表,看它们是否为“空”并采取一些措施。 简而言之,我需要在数据库启动后立即执行一个过程。 最
我是一名优秀的程序员,十分优秀!