2015-08-19 39 views
0

我想將手機屏幕發送到桌面。 (使用插座)像一個Mobizen應用程序如何獲取當前在服務中查看

首先,我需要採取手機屏幕。

我知道如何保存活動屏幕。 是這樣的。

View v1 =L1.getRootView(); 
      v1.setDrawingCacheEnabled(true); 
      Bitmap bm = v1.getDrawingCache(); 

      FileOutputStream out = null; 
      try { 
       out = new FileOutputStream(Environment.getExternalStorageDirectory().getPath()+"/capture.png"); 
       bm.compress(Bitmap.CompressFormat.PNG, 100, out); // bmp is your Bitmap instance 
       // PNG is a lossless format, the compression factor (100) is ignored 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 

但這只是可能的活動。

我想在後臺捕獲屏幕作爲服務。 手機的當前屏幕將發送到桌面。

那麼,如何獲得當前在服務中查看?

致謝問候。

+0

這是不可能的,除非你的設備是根植的 –

+0

你甚至不應該這樣做。如果你想在服務發生某些事情後做一些UI線程的操作 - 那麼你應該使用[BroadcastReceiver](http://developer.android.com/reference/android/content/BroadcastReceiver.html)或其他一些方法進程間通信 – Chaosit

回答

2

您的服務在與您的活動不同的上下文中運行。要製作截圖,您需要在活動的上下文中進行。即使您可以定義您的Activity上下文public static並通過您的服務訪問它,您也會冒風險,上下文在服務中處理時會消失。如果您的活動被殺害,並且您的服務仍在運行,則上下文消失,所以這不是正確的方法。

因此,推薦的方法是在您的活動中實際製作屏幕截圖。如果製作屏幕截圖的事件來自您的服務,您可以將Service中的BroadcastMessage發送到您的活動以觸發屏幕截圖。

+0

如果活動被殺死,這不是一個正確的方法來保持某些活動的靜態引用 –

+0

我寫了這個 - 當你的活動被殺死時,上下文消失,所以沒有理由downvote我的回答 – Christian

+0

編輯答案並提到我會冒這個風險。 –

相關問題