2013-05-25 4 views
5

sto prendendo screenshot, come di seguito:Prendere screenshot di programmazione di tutto lo schermo

public static Bitmap takeScreenshot(Activity activity) { 
     View view = activity.getWindow().getDecorView(); 
     view.setDrawingCacheEnabled(true); 
     view.buildDrawingCache(); 
     Bitmap bitmap = view.getDrawingCache(); 
     Rect rect = new Rect(); 
     activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(rect); 
     int statusBarHeight = rect.top; 
     int width = activity.getWindowManager().getDefaultDisplay().getWidth(); 
     int height = activity.getWindowManager().getDefaultDisplay().getHeight(); 
     Bitmap bitmap2 = Bitmap.createBitmap(bitmap, 0, statusBarHeight, width, 
      height - statusBarHeight); 
     view.destroyDrawingCache(); 
     return bitmap2; 
    } 

Ma c'è un EditText nel mio layout. Lo clicco e la tastiera si apre, ma lo screenshot non contiene tastiera in questo modo. Come posso prendere lo screenshot a livello di programmazione anche quale può anche catturare la tastiera?

+3

tastiera non fa parte del layout dell'applicazione. stai scattando la schermata del tuo layout (vista). la tastiera non fa parte del tuo layout. ecco perché non lo vedi – Raghunandan

+0

Lo so. Qualche idea su come prendere screenshot per l'intero schermo del telefono? – lseeo

+0

prova la risposta qui sotto ma se stai provando sul dispositivo devi fare il root dello stesso. che non è giusto, non puoi chiedere agli utenti di rootare il loro dispositivo. Potresti provare a creare la tua tastiera personalizzata nella tua applicazione. quindi utilizzare il precedente per prendere screenshot – Raghunandan

risposta

8

letto da qualche parte sul forum di un altro modo: -

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(); 

Si può provare che fuori. Non so se funziona o no, l'ho appena salvato per un giorno di pioggia: P.

EDIT:

Trovato il link al post - dice How to take a screenshots?

utente, le immagini di lavorare per lui. Penso che questo dovrebbe soddisfare le tue esigenze.

+0

su è superutente ha bisogno di fare il rooting sul dispositivo? – Raghunandan

+0

sì, sì. : D.Ma non penso che ci sia un altro modo per ottenere lo screenshot del telefono da un'app. Il massimo che può fare è ottenere lo screenshot che sta ottenendo in questo momento. –

+0

se sta provando sull'emulatore, credo che sia già rootato. Ma non è positivo rilasciare la tua app chiedendo agli utenti di effettuare il root del proprio dispositivo. Qualunque sia il suo suggerimento. Lascio al OP decidere. In ogni modo ho avuto modo di imparare qualcosa di nuovo dal link pubblicato. – Raghunandan

3

Sembra che non ci sia modo di ottenere screenshot dallo schermo di un dispositivo che is not rooted. Here, CommonsWare dice:

Se vuoi dire "screenshot di attività di qualcun altro", che non è supportato , per ovvie privacy e la sicurezza ragioni.

Anche se è possibile ottenere screenshot dell'emulatore quando l'app è in esecuzione!

Edit:

Ma esiste una libreria che si chiama (Android Schermata Library):

Android Schermata Library (ASL) consente di acquisire programmazione le immagini da dispositivi Android, senza necessità di dover root privilegi di accesso. Invece, ASL utilizza un servizio nativo in esecuzione nello sullo sfondo, avviato tramite Android Debug Bridge (ADB) una volta per avvio dispositivo .

Non l'ho provato, ma è possibile visualizzare ulteriori dettagli su di esso here.