2014-09-06 47 views
0

我想製作一個應用程序,即使應用程序在後臺運行,也會每10秒鐘截取一次設備的屏幕截圖。如何在Android中以編程方式截圖?

我不知道該怎麼做。

有沒有辦法做到這一點與沒有根的設備?

+1

可能的[本文]重複(http://stackoverflow.com/questions/20136121/android-how-to-take-screenshot-programatically) – 2014-09-06 15:19:48

回答

-1

首先採取代碼在android中以編程方式拍攝屏幕截圖。它是可用的堆棧溢出。然後使用處理程序每​​10秒調用一次該方法。

+0

實際上,只有當應用程序打開時,代碼纔會截屏。 – 2014-09-06 15:15:50

+0

另外,即使用戶使用任何其他應用程序,我也想截圖。 – 2014-09-06 15:18:57

0

爲了捕獲你的活動的ScreenShot,你需要一個來自你的活動的視圖,並且它不在你的服務中,所以你必須創建一個TimerTask來隨時調用你的活動來獲得當前視圖該活動,您可以從中捕獲ScreenShot。

否則如果您想要拍攝當前設備屏幕或任何其他應用程序的ScreenShot,那麼您必須擁有root權限,並讀取framebuffer以獲取當前屏幕的原始數據,然後將其轉換爲位圖或任何圖片文件。

try { 
Process sh = Runtime.getRuntime().exec("su", null,null);  
        OutputStream os = sh.getOutputStream(); 
        os.write(("/system/bin/screencap -p " + "/sdcard/img.png").getBytes("ASCII")); 
        os.flush();   
        os.close(); 
        sh.waitFor(); 
} catch (IOException e) { 
        e.printStackTrace(); 
         } 
+0

你有代碼可以給我當前正在顯示的屏幕的原始數據嗎? – 2014-09-06 15:21:50

+0

使用代碼編輯 – 2014-09-06 15:25:38

+0

此代碼需要root訪問權限。有什麼辦法可以讓設備沒有根源? – 2014-09-06 15:28:35

0

Here是如何捕獲Android上的屏幕截圖。

另外的Handler and Timer

而一個詢問對於相同的非常相似post一個例子。

相關問題