2017-05-11 3 views
0

Je travaille sur un appareil Android enraciné. J'essaie de capturer l'écran et de stocker le résultat dans Bitmap pour un usage ultérieur.Comment obtenir le résultat de Runtime.getRuntime(). Exec directement

String path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getPath(); 
path += "/img.png"; 

Process sh = Runtime.getRuntime().exec("su", null,null); 
OutputStream os = sh.getOutputStream(); 
os.write(("/system/bin/screencap -p " + path).getBytes("ASCII")); 
os.flush(); 
os.close(); 
sh.waitFor(); 

final Bitmap x = BitmapFactory.decodeFile(path); 

Ce que je fais ici est la nomination d'un chemin pour une nouvelle image et la capture de l'écran à l'aide de la commande /system/bin/screencap -p FILEPATH. Ensuite, je lis l'image que j'ai stockée dans ce fichier et l'utilise dans l'image bitmap.

Mon problème avec mon code actuel est qu'il est lent (ne convient pas pour une application en temps réel). J'essaie maintenant de le rendre plus rapide. Au lieu de sauvegarder l'image capturée dans le fichier, puis de le lire à nouveau du programme, je veux le lire directement à partir du résultat de Runtime.getRuntime().exec(...)

Dans la description de la commande screencap, j'ai trouvé que je peux l'utiliser sans spécifier le nom du fichier de sortie, et dans ce cas, les résultats seront imprimés sur stdout.

J'ai essayé plusieurs codes pour lire le tableau d'octets de résultat pour l'utiliser directement dans mon code

final Bitmap x = BitmapFactory.decodeByteArray(resultArrayByte, 0, resultArrayByte.length); 

mais aucun des codes travaillé avec moi.

Comment puis-je utiliser les flux d'entrée/sortie de sh pour obtenir le tableau d'octets de résultats directement sans enregistrer la sortie dans un fichier, puis le charger à nouveau?

Répondre

0

Prenez un coup d'oeil here, dans ce lien, vous pouvez trouver une bibliothèque appelée ASL

beaucoup de questions dans ce post, je suis confus :)

J'espère que ce lien est utile pour vos besoins .

+0

Les URL changent, il vaudrait mieux que vous affichiez un petit résumé de ce qui est sur la page cible au cas où le lien se brise, afin que quelqu'un puisse le trouver par son titre. – Daz