agent 在 pc 程式啟動後,會用 adb push 到 device,然後啟動。
agent 和 screencast program 會建立通道, screen cast 會把 key, mouse event 傳給 agent,
agent 再把 這些command 用 :
if(type.equals("pointer")) {
wm.injectPointerEvent(getMotionEvent(paramList), false);
return;
}
把動作輸入到系統。
至於android device 的螢幕,經由另一個 thread,. 抓 fb 的資料傳到 pc...
Process p = Runtime.getRuntime().exec("/system/bin/cat /dev/graphics/fb0");
InputStream is = p.getInputStream();
System.out.println("Starting sending framebuffer");
OutputStream os = s.getOutputStream();
byte[] buff = new byte[336*512*2];
while(true) {
int nb = is.read(buff);
if(nb < -1)
break;
System.out.println("val "+nb);
os.write(buff,0,nb);
Thread.sleep(10);
}
is.close();
沒有留言:
張貼留言