美文网首页
Crosswalk下cordova-screenshot截屏生成

Crosswalk下cordova-screenshot截屏生成

作者: ilaoke | 来源:发表于2015-12-22 18:30 被阅读2047次

cordova-screenshot插件
XWALK-2233

在Crosswalk(版本10.39.235.16)下使用cordova-screenshot插件截屏,生成的图片为黑屏,与其说是Crosswalk的问题,不如说是cordova-screenshot插件的BUG。

BUG 2233下的讨论,发现Tony Homer已经解决了黑屏的问题,参考他的代码,修改getBitmap()方法,如下:

public class Screenshot extends CordovaPlugin {
    
    private Bitmap getBitmap() {
        Bitmap bitmap = null;
        
        boolean isCrosswalk = false;
        try {
//            Class.forName("org.crosswalk.engine.XWalkWebViewEngine");
            Class.forName("org.xwalk.core.XWalkView"); // 这里
            isCrosswalk = true;
        } catch (Exception e) {
        }
        
        if(isCrosswalk) {
            try {
                
//                TextureView textureView = findXWalkTextureView((ViewGroup)webView.getView());
                TextureView textureView = findXWalkTextureView((ViewGroup)webView); // 这里
                if (textureView != null) {
                    bitmap = textureView.getBitmap();
                    return bitmap;
                }
            } catch(Exception e) {
            }
        } 

//            View view = webView.getView().getRootView();
            View view = webView.getRootView(); // 这里
        view.setDrawingCacheEnabled(true);
        bitmap = Bitmap.createBitmap(view.getDrawingCache());
        view.setDrawingCacheEnabled(false);

        
        return bitmap;
    }
}

另外在config.xml中添加:

<preference name="CrosswalkAnimatable" value="true" />

修改Screentshot.js,原JS文件没有设置插件ID,现在将其ID设置为com.darktalker.cordova.screenshot.ScreenshotPlugin

cordova.define("com.darktalker.cordova.screenshot.ScreenshotPlugin", function (require, exports, module) {

    var exec = require('cordova/exec'),
        cordova = require('cordova'), formats = ['png','jpg'];

    function ScreenshotPlugin() {
    }

    ScreenshotPlugin.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;
                exec(function(res){
                    callback && callback(null,res);
                }, function(error){
                    callback && callback(error);
                }, "Screenshot", "saveScreenshot", [format, quality, filename]);
            },

            URI:function(callback, quality){
                quality = typeof(quality) !== 'number'?100:quality;
                exec(function(res){
                    callback && callback(null, res);
                }, function(error){
                    callback && callback(error);
                }, "Screenshot", "getScreenshotAsURI", [quality]);

            }
    }

    module.exports = new ScreenshotPlugin();

});

调用插件截屏保存图片:

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

相关文章

  • Crosswalk下cordova-screenshot截屏生成

    cordova-screenshot插件XWALK-2233 在Crosswalk(版本10.39.235.16)...

  • Quartz 2D (2)

    1、圆形图片裁剪 2、实现手机屏幕截屏功能(把控制器中View的内容截屏生成一张新的图片) 3、图片截屏 4、图片...

  • (最新)iOS截屏

    ios webview 截屏:ios截屏 前言:介绍一下截屏有很多种做法1:截当前屏幕内容2:截整个视图的所有内容...

  • android 截屏实现

    Android 截屏分为四种:View 截屏、WebView 截屏、系统截屏 和 adb 截屏 1、View 截屏...

  • Android 截屏方式整理

    Android 实现截屏方式整理 可能的需求: 截自己的屏 截所有的屏 带导航栏截屏 不带导航栏截屏 截屏并编辑选...

  • 如何玩转手机截屏

    截屏,是我们几乎每天都要用到的手机功能。新奇有趣的事情截屏给朋友看一下,群里死党惊人语录,截屏发到朋友圈晒一下,总...

  • 如何截一张长长长长长长的截图?

    截屏,是我们几乎每天都要用到的手机功能。新奇有趣的事情截屏发给朋友看一下,爱豆发新专啦,截屏发给死党看一下,女朋友...

  • 计算机常见办公软件基础操作

    我的截屏操作 按下print sysrq(截屏键)——点击“开始”按钮——所有程序——附件——画图——编辑——粘贴...

  • iOS开发——监听系统截屏并获得截图

    iOS开发——监听系统截屏并获得截图 项目需要得到获得截屏然后生成自己的分享图,某度能找到的基本都是怎么获取Vie...

  • iOS截屏和读取

    除了直接使用手机按键截屏,在App中我们也可以通过代码去实现截屏功能。以下是我的工程里封装的截屏方法,在此记录一下...

网友评论

      本文标题:Crosswalk下cordova-screenshot截屏生成

      本文链接:https://www.haomeiwen.com/subject/bjxvhttx.html