2013-06-05 6 views
7

Ich bin auf Teilen arbeiten, um die Tablettanzeige mit mehr als einer Tabelle (alle verwurzelten) durch WiFi verbunden, ich bin der folgende Ansatz verwendet (alle in einem Thread):Android Teilen Anzeige auf anderen Vorrichtungen

1 - Ich mache einen Screenshot.

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

2- Komprimieren Sie das Screenshot-Bild.

Bitmap mBitmap = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory().getPath() + "/test/img.png"); 
OutputStream outputStream = null; 
File file = new File(Environment.getExternalStorageDirectory().getPath() + "/test/img2.png"); 
outputStream = new FileOutputStream(file); 
mBitmap.compress(Bitmap.CompressFormat.JPEG, 15, outputStream); 
outputStream.flush(); 
outputStream.close(); 

3 Öffnen Sie den Sockel und senden Sie das komprimierte Bild an ein anderes Tablett.

das funktioniert, aber mein Problem ist die Anzeigeverzögerung in der anderen Tablette dauerte es 4-5 Sekunden, um das neue Display zu aktualisieren, gibt es einen besseren Ansatz, um es in Echtzeit anzuzeigen?

+0

Ich denke, Sie fragen ein wenig, Sie sind auf Ihr WLAN beschränkt, lesen ein Bild von Ihrem SD, komprimieren es und senden es. Auf der anderen Seite macht auch eine Menge Prozess, ich stelle mir vor, dass, selbst wenn Sie das optimieren, es Ihnen nicht mehr als eine Sekunde gewähren wird. – Rigotti

+0

@Rigotti Ok ... gibt es einen anderen Weg zu erreichen, was ich brauche? –

Antwort

3

Leider wird diese Funktion lange dauern. Es ist mit dem Prozesslebenszyklus, IPC und dem langsamen Dateisystem verbunden. Sie müssen sich this library oder die source code of /system/bin/screenshot util. ansehen Sie müssen native (C-Sprache) Funktionen aus Quellen wiederverwenden, und es ist keine triviale Aufgabe.