如何获取当前的服务视图

时间:2015-08-19 09:52:12

标签: android

我想将手机屏幕发送到桌面。 (使用套接字),如Mobizen App

首先,我需要手机屏幕。

我知道如何保存活动屏幕。 像这样。

 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();
             }

但这只是可能的活动。

我想在后台捕获一个屏幕作为服务。 并且当前的手机屏幕将发送到桌面。

那么,如何获取当前的服务视图?

谢谢你。

1 个答案:

答案 0 :(得分:2)

您的服务在与您的活动不同的上下文中运行。要制作屏幕截图,您需要在活动的上下文中。即使您可以将您的活动上下文定义为公共静态并从您的服务访问它,您也会冒险,在您在服务中处理上下文时,上下文会消失。如果您的活动被终止且您的服务仍在运行,则上下文消失,因此这不是正确的方法。

因此推荐的方法是在您的Activity中实际制作屏幕截图。如果制作屏幕截图的事件来自您的服务,您可以将服务中的BroadcastMessage发送到您的活动以触发屏幕截图。