根據您的鏈接,您的應用可以運行爲Service
而無需「正常」用戶界面,但我認爲您鏈接的代碼可能會略有過時。
請記住,您的服務必須在前臺運行 - 代碼在鏈接中提供,但未明確調用。沒有在前臺運行,系統可以很好地停止你的應用程序,而不是在後臺運行它。
當我使用這種疊加創建任務切換器,我發現使用TYPE_SYSTEM_ALERT
而不是TYPE_SYSTEM_OVERLAY
這是必要的。
我宣佈我的窗口參數不FLAG_WATCH_OUTSIDE_TOUCH
。
WindowManager.LayoutParams params =
new WindowManager.LayoutParams(width, height, x, y,
WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
| WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
PixelFormat.TRANSLUCENT);
您的服務也應確保正確地從WindowManager
註銷重疊視圖何時結束。沒有這個,你的應用程序會泄漏內存。
public void onDestroy()
{
super.onDestroy();
if (overlay != null)
{
((WindowManager) getSystemService(WINDOW_SERVICE)).removeView(overlay);
overlay = null;
}
}
我看就知道是在做OverlayView.destory()
(注意方法名的不正確的拼寫 - 這將是一個好主意,使用正確的名稱,該方法)。
這是更好的不可能的,出於隱私和安全的原因。應用程序通常不能監視其他應用程序的UI事件,除了可能在根目錄的設備上。 – CommonsWare 2014-09-03 11:56:53
謝謝CommonsWare。我試圖通過觀看它的凸輪來移動機器人。我計劃將Skype視頻通話用於視頻流,並在屏幕上拖動移動命令。現在,我需要使用Android進行Android視頻流傳輸,對嗎?你可以請分享任何想法,我怎麼能很快實現這一目標?我的會議是非常接近:( – 2014-09-04 06:02:22
CommonsWare ...在較舊版本的Android(我認爲薑餅和更低)這是可能的使用疊加。疊加能夠記錄在屏幕上的按下,無論他們在哪裏完成。 – 2014-09-12 17:20:38