android videoview截屏,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):

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值