日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

截获android屏幕服务,如何捕获android设备屏幕内容?

發布時間:2023/12/4 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 截获android屏幕服务,如何捕获android设备屏幕内容? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

使用以下代碼:Bitmap?bitmap;View?v1?=?MyView.getRootView();v1.setDrawingCacheEnabled(true);bitmap?=?Bitmap.createBitmap(v1.getDrawingCache());v1.setDrawingCacheEnabled(false);

這MyView是View我們需要在屏幕中包含的內容。你也可以DrawingCache通過View這種方式獲得(沒有getRootView())。

還有另一種方式..

如果我們ScrollView以root身份查看,那么最好使用以下代碼,LayoutInflater?inflater?=?(LayoutInflater)?this.getSystemService(LAYOUT_INFLATER_SERVICE);FrameLayout?root?=?(FrameLayout)?inflater.inflate(R.layout.activity_main,?null);?//?activity_main?is?UI(xml)?file?we?used?in?our?Activity?class.?FrameLayout?is?root?view?of?my?UI(xml)?file.root.setDrawingCacheEnabled(true);Bitmap?bitmap?=?getBitmapFromView(this.getWindow().findViewById(R.id.frameLayout));?//?here?give?id?of?our?root?layout?(here?its?my?FrameLayout's?id)root.setDrawingCacheEnabled(false);

這是getBitmapFromView()方法public?static?Bitmap?getBitmapFromView(View?view)?{

//Define?a?bitmap?with?the?same?size?as?the?view

Bitmap?returnedBitmap?=?Bitmap.createBitmap(view.getWidth(),?view.getHeight(),Bitmap.Config.ARGB_8888);

//Bind?a?canvas?to?it

Canvas?canvas?=?new?Canvas(returnedBitmap);

//Get?the?view's?background

Drawable?bgDrawable?=view.getBackground();

if?(bgDrawable!=null)

//has?background?drawable,?then?draw?it?on?the?canvas

bgDrawable.draw(canvas);

else

//does?not?have?background?drawable,?then?draw?white?background?on?the?canvas

canvas.drawColor(Color.WHITE);

//?draw?the?view?on?the?canvas

view.draw(canvas);

//return?the?bitmap

return?returnedBitmap;

}

它將顯示整個屏幕,包括隱藏在ScrollView

還有另一種更好的截屏方式。

我在這里截了屏幕截圖WebView。WebView?w?=?new?WebView(this);

w.setWebViewClient(new?WebViewClient()

{

public?void?onPageFinished(final?WebView?webView,?String?url)?{

new?Handler().postDelayed(new?Runnable(){

@Override

public?void?run()?{

webView.measure(View.MeasureSpec.makeMeasureSpec(

View.MeasureSpec.UNSPECIFIED,?View.MeasureSpec.UNSPECIFIED),

View.MeasureSpec.makeMeasureSpec(0,?View.MeasureSpec.UNSPECIFIED));

webView.layout(0,?0,?webView.getMeasuredWidth(),

webView.getMeasuredHeight());

webView.setDrawingCacheEnabled(true);

webView.buildDrawingCache();

Bitmap?bitmap?=?Bitmap.createBitmap(webView.getMeasuredWidth(),

webView.getMeasuredHeight(),?Bitmap.Config.ARGB_8888);

Canvas?canvas?=?new?Canvas(bitmap);

Paint?paint?=?new?Paint();

int?height?=?bitmap.getHeight();

canvas.drawBitmap(bitmap,?0,?height,?paint);

webView.draw(canvas);

if?(bitmap?!=?null)?{

try?{

String?filePath?=?Environment.getExternalStorageDirectory()

.toString();

OutputStream?out?=?null;

File?file?=?new?File(filePath,?"/webviewScreenShot.png");

out?=?new?FileOutputStream(file);

bitmap.compress(Bitmap.CompressFormat.PNG,?50,?out);

out.flush();

out.close();

bitmap.recycle();

}?catch?(Exception?e)?{

e.printStackTrace();

}

}

}

},?1000);

}

});

希望這可以幫助..!

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的截获android屏幕服务,如何捕获android设备屏幕内容?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。