Cómo tomar una captura de pantalla en la aplicación cordova / phonegap

Estoy intentando tomar una captura de pantalla en mi aplicación cordova utilizando este complemento, pero se está produciendo un error. Realmente no sé cuál es el error, ya que lo estoy probando en mi smartphone Android y la aplicación sólo bloquea. En el navegador, lo mismo sucede con este error: TypeError: Cannot read property 'save' of undefined , donde 'save' proviene de este código:

 navigator.screenshot.save(function(error,res){ if(error){ console.error(error); }else{ console.log('ok',res.filePath); } }); 

PS: También intentado navigator.plugin.screenshot... , navigator.plugins.screenshot , window.screenshot , window.plugin.screenshot y window.plugins.screenshot

PS2: Comprobé si el plugin está instalado con cordova plugins en cordova CLI y todo está bien, plugin existe en la carpeta de plugins y es para cordova versión> = 3.0.0 y el mío es más nuevo

Pero, por supuesto, el navegador no está realmente cargando el complemento, porque este error también se produce allí: Failed to load resource: the server responded with a status of 404 (Not Found) http://localhost:23273/www/cordova_plugins.json No se captura ninguna captura de pantalla en mi smartphone.

Estoy usando la luz de trabajo y estaba pasando por el mismo problema. Mi solución fue cambiar el código del archivo Screenshot.js a:

 var formats = ['png','jpg']; function Screenshot() { } Screenshot.prototype.save = function (callback,format,quality, filename) { format = (format || 'png').toLowerCase(); filename = filename || 'screenshot_'+Math.round((+(new Date()) + Math.random())); if(formats.indexOf(format) === -1){ return callback && callback(new Error('invalid format '+format)); } quality = typeof(quality) !== 'number'?100:quality; cordova.exec(function(res){ callback && callback(null,res); }, function(error){ callback && callback(error); }, "Screenshot", "saveScreenshot", [format, quality, filename]); }; Screenshot.install = function () { if (!window.plugins) { window.plugins = {}; } window.plugins.screenshot = new Screenshot(); return window.plugins.screenshot; }; cordova.addConstructor(Screenshot.install); 

De esta manera puedo hacer la llamada con el siguiente código:

 window.plugins.screenshot.save(function(error,res){ if(error){ alert(error); }else{ alert('ok',res.filePath); //should be path/to/myScreenshot.jpg } },'jpg',50,'myScreenShot'); 

Esto funcionó perfectamente en mi teléfono inteligente Android.

También he añadido en el archivo res / xml / config.xml:

 <feature name="Screenshot"> <param name="android-package" value="org.apache.cordova.screenshot.Screenshot"/> </feature> 

En el archivo AndroidManifest.xml:

 <uses-permission android: name = "android.permission.WRITE_EXTERNAL_STORAGE" /> 

Y agregó la clase java en el siguiente paquete: org.apache.cordova.screenshot.Screenshot

Todas estas configuraciones tienen la información en el archivo plugin.xml del plugin

¿carga su proyecto en localhost? ¿por qué tiene este tipo de archivo:

http://localhost:23273/www/cordova_plugins.json. ?

usted está tratando de simular el proyecto cordova con "cordova service 23273"? no puedes usar ningún plugin con "cordova serve".

usted debe tener file: /// como protocolo …

Gracias a todos, por desgracia no puedo dar una respuesta real a esta pregunta, ya que hice muchas cosas. El último fue actualizar mi archivo cordova.js a la última versión, que realmente solucionó mi problema, pero cada comentario y respuesta ayudó mucho.

Quiero agradecer tanto a @Talysson de Castro como @Darktalker por ayudarme! 🙂

  • ¿Cómo puedo obtener Android para responder a los drags táctiles?
  • ¿Cómo puedo encontrar la ventana virtual / ancho de pantalla con Javascript?
  • Cómo enviar notificación push en dos segmentos en momentos diferentes en un día en analizar
  • Fecha de Javascript inválida en iOS / Android 2.2
  • Cómo habilitar la cámara frontal en Phonegap
  • Detectar orientación con javascript en dispositivos Android
  • ¿Puedo ejecutar JavaScript sin un WebView, o un WebView puede ejecutarse sin un contexto de actividad, como en un servicio?
  • Cómo pasar un valor de cadena a webView de una actividad
  • ¿Cuál es mejor usar Sencha Touch o phonegap para Android?
  • Comportamiento de audio HTML5
  • Método multiplataforma para eliminar la barra de direcciones de una aplicación web para móviles
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.