我正在尝试在LogCat上获取SurfaceFlinger事件。目标是确定每秒绘制的独特帧数。Surfaceflinger源代码记录所有感兴趣的事件(表面框架重绘等),但LogCat输出不会转储它们。有什么方法可以启用这些消息吗?到目前为止我已经尝试过(i)从主缓冲区读取logcat消息(adblogcat)(ii)从事件缓冲区读取logcat消息(adblogcat-bevents) 最佳答案 可以在androidshell上使用以下命令动态启用Surfaceflinger事件。adbshell"服务调用SurfaceFlinge
我对使用AndroidMediaCodec进行解码以及通过Surface将YUV馈送到OpenGL纹理有很好的理解。我想用Vulkan做一些类似的事情。但是,我没有成功找到任何文档或示例代码。我的问题是:如何连接以下管道?MediaCodecVideoDecoder⇨Surface⇨texture⇨Vulkan详情视频解码器使用MediaCodec#configure配置Surface是一个AndroidSurface(linktoAPI,linktoarch.)OpenGL比较为了比较,在OpenGL的情况下,AndroidSurface是这样构造和使用的textureId=glGe
我从ExtractDecodeEditEncodeMuxTest.java复制了代码进入我的应用程序以转码视频,最重要的变化是将类重命名为VideoTranscoder并删除extendsAndroidTestCase因为我要运行它脱离任何Activity.一切正常,直到我使用proguard编译发布版本,然后它在运行时失败:E/d:com.testapp.a.g.a.b.b(OutputSurface.java:270)E/d:com.testapp.a.g.a.d.a(VideoTranscoder.java:944)E/d:com.testapp.a.g.a.d.a(VideoT
我正在使用sourcecodeforSurface.java作为这个问题的引用。Surface实现了Parcelable接口(interface),并且它还持有native端对象的句柄。我很想知道在这种情况下如何处理垃圾回收:Surface(A)创建并写入Parcel。之后再无提及。从Parcel中读取原始Surface(B)的副本;假设这发生在另一个用于渲染的线程上。这个实例现在拥有与(A)相同的native句柄,并且在某处有对该实例的强引用。发生GC并收集(A),因为它不再被引用。finalize()运行,它调用release(),后者又为native句柄调用nativeRelea
我正在看课MediaRecorderAndroidSDK,我想知道它是否可以用来录制由Surface制作的视频。示例:我想将我在表面上显示的内容(视频游戏?)记录到一个文件中。正如我在标题中所说:我不想用相机记录任何东西。我认为重写大部分类(class)是可能的,但我非常想要一些想法......此外,我不确定Camera类在MediaRecorder中的使用方式,以及我应该从我的Surface中获取什么来替换它。感谢您的关注!PS:我正在查看使用我的MediaRecorder的native代码以获取一些线索,也许它会启发其他人:http://www.netmite.com/androi
我尝试用EGL初始化GLES(因为我想从主线程中绘制而不是使用渲染器并从onDrawFrame内部绘图)。我收到错误消息:“确保SurfaceView或关联的SurfaceHolder具有有效的Surface”。显然mEgl.eglCreateWindowSurface失败了,因为surfaceHolder没有有效的表面。如何获得具有有效Surface的SurfaceHolder才能继续?我的Activity.onCreate方法是:protectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceS
我想以编程方式获取我的游戏的屏幕截图,就像您在EclipseDDMS中获取的一样。通过此处提出的解决方案截取的屏幕截图:HowtoprogrammaticallytakeascreenshotinAndroid?在大多数其他SO问题中,只有View元素可见,而SurfaceView不可见。SCREENSHOTS_LOCATIONS=Environment.getExternalStorageDirectory().toString()+"/screenshots/";//GetrootviewViewview=activity.getWindow().getDecorView().ge
我在android上开发,我想用相机做一些事情(处理像素值),但只是在后台,是否可以在没有表面View的情况下进行?只需使用缓冲区读取像素值并进行处理。感谢每一位能帮助我的人 最佳答案 从API级别11开始,SurfaceTexture加入。有了它,不再需要SurfaceView。我用我的SamsungGalaxyS3Neo测试了以下代码。mCamera=Camera.open();try{mCamera.setPreviewTexture(newSurfaceTexture(10));}catch(IOExceptione1){L
我想在SurfaceView上使用相机制作背景,并且我在低于23的androidAPI上取得了成功。虽然我之前在API23上的应用程序中请求相机许可,但我的Nexus5和Android6上仍然出现以下错误:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“voidandroid.hardware.Camera.setPreviewDisplay(android.view.SurfaceHolder)”在com.package.name.CameraPreview.surfaceCreated(CameraPreview.java:31)我的代
我正在尝试使用onPreviewFrame()回调显示经过过滤的相机预览。问题是当我删除这一行时:mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);为了隐藏预览,应用程序崩溃了。日志内容如下:08-1915:57:51.042:错误/CameraService(59):registerBuffers失败,状态为-38这是什么意思?这在任何地方都有记录吗?我正在使用来自SDKAPIDemos的CameraPreview:http://developer.android.com/resources/samples/ApiDem