通过网络

时间:2016-09-14 19:44:47

标签: android android-mediaprojection

我一直在阅读MediaProjection API,并在Github上查看了一些展示如何使用它的示例项目。
所有这些项目仅显示如何将屏幕捕获保存在文件中(记录屏幕),而不是将其实时传输到另一个设备(截屏视频)。

我不确定这可以通过此API实现,但后来我读了docs

  

屏幕截图和分享

     

Android 5.0可让您添加屏幕截图   使用新功能为您的应用提供屏幕共享功能   android.media.projection API。 此功能非常有用   例如,如果要在视频会议中启用屏幕共享   应用

     

新的 createVirtualDisplay()方法允许您的应用捕获   主屏幕的内容(默认显示)进入Surface   对象,您的应用随后可以通过网络发送。仅限API   允许捕获非安全屏幕内容,而不是系统音频。至   开始屏幕捕获,您的应用必须首先请求用户   通过使用Intent启动屏幕捕获对话框来获得权限   通过createScreenCaptureIntent()方法获得。

     

有关如何使用新API的示例,请参阅MediaProjectionDemo   示例项目中的类。

我整天搜索了一个关于如何使用Surface对象传输数据的示例,然后接收并在另一台设备上显示它们,但没有运气。

所以问题是,怎么办呢?有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:0)

好吧,您可以从传递到createVirtualDisplay()的表面提取帧(使用ImageReader是最简单的方法之一,也可以使用SurfaceTexture,具体取决于您的需求),获得位图后,只需通过网络发送即可(该部分是特定于应用程序的。)

例如,您可以建立与服务器的Websocket连接,并使用它来传输帧(这是我在使用API​​时所做的事情),或者可以使用WebRTC。