问题标签 [android-mediaprojection]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 如何在全球范围内正确截取屏幕截图?
背景
从 Android API 21 开始,应用程序可以在全局范围内截取屏幕截图并记录屏幕。
问题
我已经根据我在 Internet 上找到的所有内容制作了一个示例代码,但它有一些问题:
- 这很慢。也许可以避免它,至少对于多个屏幕截图,通过避免通知它被删除直到真的不需要。
- 它的左右两边都有黑色边距,这意味着计算可能有问题:
我试过的
MainActivity.java
布局/activity_main.xml
截图管理器
问题
好吧,这是关于问题的:
- 为什么这么慢?有没有办法改进它?
- 在截屏之间,如何避免删除它们的通知?我什么时候可以删除通知?通知是否意味着它会不断截取屏幕截图?
- 为什么输出位图(目前我没有用它做任何事情,因为它仍然是 POC)有黑色边距?这件事的代码有什么问题?
注意:我不想只截取当前应用程序的屏幕截图。我想知道如何在全球范围内对所有应用程序使用它,据我所知,只有通过使用这个 API 才能正式实现。
编辑:我注意到在 CommonsWare 网站(这里)上,据说输出位图由于某种原因更大,但与我注意到的相反(开头和结尾的黑色边距),它说它应该最后:
由于莫名其妙的原因,它会有点大,最后每行都有多余的未使用像素。
我已经尝试过那里提供的东西,但它崩溃了,但出现了异常 "java.lang.RuntimeException: Buffer not large enough for pixels" 。
android - 使用 MediaProjection 仅捕获屏幕的一部分
我只需要在该视图中记录特定视图和子视图,但要排除活动/屏幕上的其他视图。目前我正在做一个项目,并认为我可以使用 MediaProjection API 解决问题。正如我所说,我需要在活动中记录一个特定的视图。我在类似的线程上找到了答案:Capturing a part of the screen 但它说使用 MediaProjection API 是不可能的。
谷歌是否提供其他解决方案,或者是否有人有类似的问题,甚至可能有一些解决方案?
谢谢
android - 是否可以捕获屏幕的部分(即特定视图)?
就像 iOS 屏幕捕获视图一样,是否可以捕获屏幕的部分(即特定视图)?
android - 在Android中录制带声音的屏幕视频
目前我正在开发一个应用程序,它根据用户交互记录移动屏幕的视频(屏幕录制)。现在我想用音频或声音录制视频。我怎样才能实现这个功能?
对于视频录制,我使用以下代码:
android - Android Media Projection内存泄漏?
我正在开发一个使用 Android Media Projection 的项目。我在本机代码中看到相当大的内存泄漏(应用程序 jvm 内存使用率相当低且稳定)。我已经能够获得本机内存转储,并且我看到一堆似乎是从 opengl 分配的 4Mb 缓冲区。该应用程序不直接与 opengl 交互(但我相当确定媒体投影是)。如果我们关闭媒体投影并重新启动它(当我们停止时我们确实释放了虚拟显示器),我们会获得更多的这些 4Mb 缓冲区,并很快崩溃。
堆转储有一堆这些:
这些地址映射以下库的位置(但我没有这些库的符号 AFAIK)。
编辑:我制作了一个演示问题的示例项目:
https://github.com/johngray1965/MediaProjectorSample
按照自述文件中的说明进行操作。经过几次迭代后,我结束了使用 42Mb(其中大部分是 9 个 4Mb 缓冲区)。那是媒体投影仪停止了。这适用于功能很少的应用程序。在现实世界中,除此之外还有额外的内存需求。这只是针对本机使用,没有考虑到 JVM 内存使用情况。
android - 如何使用 MediaProjection 将数据保存在图片中?
我正在尝试使用 MediaProjection API
https://developer.android.com/reference/android/media/projection/MediaProjection.html
将数据保存到一系列图片。
我在网上能找到的只是使用 Surface 的指南,他们将 MediaProjection 投射到表面。
我能找到的所有指南都开始了对结果的意图
然后将 MediaProjection 数据镜像到表面
有没有办法可以将屏幕直接镜像到图像文件,然后定期保存图像文件?
或者以不同的方式将数据从 MediaProjection 对象直接保存到图像而不是在屏幕上显示?
android - 如何检查是否启用了 Media Projection API 服务权限
我正在使用 Media Projection API 截屏的应用程序中工作。我能够成功获取用户前台屏幕的屏幕截图,但不幸的是无法获取用户是否已提供屏幕捕获权限的状态。
要求:当用户没有提供截屏权限时,我只需要显示一次权限窗口。
当前行为:每次启动应用程序时都会显示权限窗口。请在下面找到屏幕截图
我用来在 MainActivity 中显示权限窗口的代码:
如果用户从权限窗口中选择“是”,我将启动如下服务:
预期输出:
我正在找出检查简单权限检查的解决方案,该检查告诉在请求媒体投影服务权限窗口之前是否已经提供了任何布尔检查权限,例如
自 3 天以来,我一直在努力获得权限检查的解决方案,但我找不到任何解决方法来解决我的用例。如果有人向我提供一些建议或技巧来解决我的问题,那将非常有帮助。提前致谢。
android - 如何从 VLC 中的 surfaceView 截取屏幕截图
我在 vlc 播放器中播放流媒体并使用 surfaceView 显示流媒体,现在,我想随时截取流媒体的屏幕截图。
问题 现在的问题是我们无法截取 SurfaceView 的屏幕截图。我还看到了 Media Projection 的示例,但它每次都在征求许可。所以每次都会调用活动的暂停方法,这不应该。
任何人都可以帮我解决这个问题,是否有任何 Xml 标签可以替换 SurfaceView 来截屏,或者我们可以删除使用 Media Projection 捕获屏幕的权限。
java - 使用 mediaprojection 作为 libstreaming 的视频源
我是 android 开发的新手,我想开发一个关于(android)屏幕共享到本地网络中的多个 android 设备的应用程序。我想使用 libstreaming 库实时发送 mediaprojection 的输出。可能吗?如何用 mediaprojection 输出替换 libstreaming 的视频源?