android VideoView截屏黑屏解决方法

       今天在开发中需要截取正在播放的在线视频中的画面,于是在网上找了几种方法,但效果都一样,截出来的图片黑黑的一片,为了验证截屏方法是不是有问题,于是就截了个全屏,发现截出来的图片屏幕上半部分VideoView区域黑黑的一片,下半部分界面正常截取,说明截屏方法没有问题,问题出在VideoView截屏的时候获得不到画面,网上找了多种方法试了也没有解决,最后灵机一动想到了一种方法:使用adb命令截取全屏,然后再用代码对截取的全屏图片进行截取处理为需要的部分,问题解决。

      我是一枚新人,朋友们有什么更好的方法或者本文不足请多多指教。

代码如下:

/**
     * 此方法把截屏得到的图片保存到指定的路径下
     */
    public void sreenShot() {
        String path = "/mnt/sdcard/" + new Date().getTime() + ".png";
        String cmd = "screencap -p " + path;
        try {
            Process process = Runtime.getRuntime().exec("su");//不同的设备权限不一样
            PrintWriter pw = new PrintWriter(process.getOutputStream());
            pw.println(cmd);
            pw.flush();
            pw.println("exit");
            pw.flush();
            try {
                process.waitFor();
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            pw.close();
            process.destroy();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

然后在需要显示的地方或者处理图片的地方:

用Bitmap oldMap = BitmapFactory.decodeFile(path);//path:保存图片的路径。

  Bitmap newMap = Bitmap.createBitmap(oldMap,0,0,width,height);//老的bitmap,X起始点,Y起始点, X结束点,Y结束点

这样就获得需要长款的截图,本文截出来的图片宽和高是相反的,所以需要进行X,Y的起始点和结束点互换,并且需要顺时针旋转90度,方法如下:

Matrix mx = new Matrix();

mx.postRotate(90);

所以上面第二行代码需要这样写:  Bitmap newMap = Bitmap.createBitmap(oldMap,0,0,height,width,mx,true):

问题解决,如果哪位朋友有更好的方法和发现不足请多多指教!谢谢



  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值