簡體   English   中英

Android中的屏幕截圖

[英]Screen Capture in android

我想開發一個應用程序,它將截取android屏幕截圖..任何人都知道該怎么做..? 這類似於koushik duttas屏幕截圖。但是沒有使用root ..並且任何人都有koushik dutta截圖應用程序正在工作..? 是不是為我工作..請讓我知道..謝謝你提前。

假設你點擊了一個按鈕:

findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
   @Override
   public void onClick(View v) {
       Bitmap bitmap = takeScreenshot();
       saveBitmap(bitmap);
   }
});

之后你需要這兩種方法:

public Bitmap takeScreenshot() {
   View rootView = findViewById(android.R.id.content).getRootView();
   rootView.setDrawingCacheEnabled(true);
   return rootView.getDrawingCache();
}

 public void saveBitmap(Bitmap bitmap) {
    File imagePath = new File(Environment.getExternalStorageDirectory() + "/screenshot.png");
    FileOutputStream fos;
    try {
        fos = new FileOutputStream(imagePath);
        bitmap.compress(CompressFormat.PNG, 100, fos);
        fos.flush();
        fos.close();
    } catch (FileNotFoundException e) {
        Log.e("GREC", e.getMessage(), e);
    } catch (IOException e) {
        Log.e("GREC", e.getMessage(), e);
    }
}

你可以嘗試這樣的事情

private RelativeLayout view;

public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    view = (RelativeLayout)findViewById(R.id.relativeView);

    View v1 = view.getRootView();

    v1.setDrawingCacheEnabled(true);
    Bitmap bm = v1.getDrawingCache();
}

方法view.getDrawingCache()將首先嘗試檢索先前緩存的圖像。 如果您想保證屏幕截圖是最新的,這可能會導致問題。 例如,如果您的用戶單擊屏幕截圖按鈕,然后更改UI,然后再次單擊它,第二個屏幕截圖將與第一個屏幕截圖相同,除非您擦除緩存。 我發現以下方法更方便:

public Bitmap takeScreenshot() {
  View rootView = findViewById(android.R.id.content).getRootView();
  Bitmap bitmap = Bitmap.createBitmap(rootView.getWidth(), rootView.getHeight(), Bitmap.Config.ARGB_8888);
  Canvas canvas = new Canvas(bitmap);
  rootView.draw(canvas);
  return bitmap;
}

我認為沒有root或SDK是不可能的,抱歉。

我希望被證明是錯的。

不是應用程序,但如果你有一根USB線,你可以在PC上安裝Android SDK並使用androidscreencast從PC上截取屏幕截圖,而不必使用手機。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM