我做了一个使用相机(后置)的应用程序,我是使用cordova,插件:“ cordova-plugin-camera-preview”和以下代码完成的:
function captura_video() {
try{
window.canvas_video_temp = document.createElement("canvas");
window.contexto_video_temp = canvas_video_temp.getContext("2d");
var promisifiedOldGUM = function(constraints) {
var getUserMedia = (navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia);
if(!getUserMedia) {
return Promise.reject(new Error('Este dispositivo no esta preparado para el manejo de camara'));
}
return new Promise(function(resolve, reject) {
getUserMedia.call(navigator, constraints, resolve, reject);
});
}
if(navigator.mediaDevices === undefined) {
navigator.mediaDevices = {};
}
if(navigator.mediaDevices.getUserMedia === undefined) {
navigator.mediaDevices.getUserMedia = promisifiedOldGUM;
}
window.videoElement = document.getElementById("pantalla_video");
navigator.mediaDevices
.getUserMedia(window.constraints)
.then(
stream => {
window.videoElement.srcObject=stream;
window.videoElement.onloadedmetadata = () => {
window.videoElement.play();
auxiliar();
};
}
).catch(
err => {
alert("Error mediaDevices: " + err.code); //THE ERROR APPEAR HERE SHOWING A ZERO
}
);
}catch(err2){
alert("Error de captura de video: " + err2.message);
}
}
function auxiliar(){
try{
if (window.videoElement.readyState === window.videoElement.HAVE_ENOUGH_DATA) {
//SOME DIRTY THINGS HERE
}
requestAnimationFrame(bucle_cuadros);
}catch(err){
alert("Error bucle_captura: " + err.message);
}
}
并且可以在三星设备上正常运行,但不能在多个华为设备上正常运行,在华为上会显示警告消息:“错误的MediaDevices:0”
有人知道可能是什么问题吗? 插件或我的代码有问题吗?
对不起,如果我看不到东西,我是菜鸟,正在使用相机。
谢谢。
编辑:我看到在安装之前,它没有显示所需的权限(相机),而是显示“没有必要的特殊权限”(“它不需要特殊权限”)。因此,我假设设备无法识别config.xml文件,对吗?