如何在Android上捕获屏幕作为服务

时间:2013-11-07 14:05:41

标签: android

嗨,我对Android很新,我只是转移我的iOS工作,所以我对android不太了解。

我想创建Android设备屏幕监控应用程序。可以通过WiFi同时看到其他Android设备屏幕,也可以将屏幕播放到其他设备。

我想通过简单地捕获屏幕并将其发送到主机来使用UDP来广播屏幕。 没有必要实时显示他们的屏幕上的内容就足够了。

通过计时器

调用此方法
private void captureScreen() {
    final View rootview1 = findViewById(R.id.root).getRootView();
    rootview1.setDrawingCacheEnabled(true);
    Bitmap bmp = rootview1.getDrawingCache();
    ByteArrayOutputStream bytes = new ByteArrayOutputStream();
    bmp.compress(Bitmap.CompressFormat.JPEG, 20, bytes);//lower quality faster
    byte[] byteArray = bytes.toByteArray();


    packetToSend.setData(byteArray);//send image

    rootview1.setDrawingCacheEnabled(false);


}

现在我可以发送我的应用视图并在主机上正确显示。

我的问题是,如果我将此方法作为服务运行,如何在打开其他应用程序(如浏览器,游戏,电影)或仪表板时找到当前视图?

请帮助

感谢。

1 个答案:

答案 0 :(得分:1)

  

我的问题是,如果我将此方法作为服务运行,如何在打开其他应用程序(如浏览器,游戏,电影)或仪表板时找到当前视图?

幸运的是,由于隐私和安全原因非常明显,这是不可能的。欢迎您以这种方式分享您自己的用户界面(根据您的代码);你无法以这种方式分享其他应用的用户界面

有多种选项可供root用户使用,但我已经忘记了最近Android UI管道更改后的工作情况。