Hardware acceleration
用MediaPlayer+TextureView封装一个完美实现全屏、小窗口的视频播放器
存在问题:
1、导致UI的文字显示成方块
备注1:
SurfaceTexture 创建的 stack
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: onSurfaceTextureAvailable
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: java.lang.Throwable
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at com.pptv.base.debug.DebugLog.println(DebugLog.java:188)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at com.pptv.base.debug.DebugLog.d(DebugLog.java:157)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at com.pptv.base.debug.DebugLog.d(DebugLog.java:145)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at com.pptv.wallpaperplayer.view.WallpaperTextureView.onSurfaceTextureAvailable(WallpaperTextureView.java:69)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at android.view.TextureView.getHardwareLayer(TextureView.java:385)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at android.view.View.getDisplayList(View.java:13332)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at android.view.View.getDisplayList(View.java:13408)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at android.view.View.draw(View.java:14186)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at android.view.ViewGroup.drawChild(ViewGroup.java:3103)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2940)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at android.view.View.getDisplayList(View.java:13361)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at android.view.View.getDisplayList(View.java:13408)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at android.view.View.draw(View.java:14186)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at android.view.ViewGroup.drawChild(ViewGroup.java:3103)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2940)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at android.view.View.draw(View.java:14472)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at android.widget.FrameLayout.draw(FrameLayout.java:472)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at android.view.View.getDisplayList(View.java:13366)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at android.view.View.getDisplayList(View.java:13408)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at android.view.View.draw(View.java:14186)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at android.view.ViewGroup.drawChild(ViewGroup.java:3103)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2940)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at android.view.View.getDisplayList(View.java:13361)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at android.view.View.getDisplayList(View.java:13408)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at android.view.View.draw(View.java:14186)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at android.view.ViewGroup.drawChild(ViewGroup.java:3103)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2940)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at android.view.View.getDisplayList(View.java:13361)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at android.view.View.getDisplayList(View.java:13408)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at android.view.View.draw(View.java:14186)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at android.view.ViewGroup.drawChild(ViewGroup.java:3103)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2940)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at android.view.View.getDisplayList(View.java:13361)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at android.view.View.getDisplayList(View.java:13408)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at android.view.View.draw(View.java:14186)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at android.view.ViewGroup.drawChild(ViewGroup.java:3103)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2940)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at android.view.View.draw(View.java:14472)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at android.widget.FrameLayout.draw(FrameLayout.java:472)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:2334)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at android.view.View.getDisplayList(View.java:13366)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at android.view.View.getDisplayList(View.java:13408)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at android.view.HardwareRenderer$GlRenderer.buildDisplayList(HardwareRenderer.java:1570)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at android.view.HardwareRenderer$GlRenderer.draw(HardwareRenderer.java:1449)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at android.view.ViewRootImpl.draw(ViewRootImpl.java:2385)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2257)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1887)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1004)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5609)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at android.view.Choreographer.doCallbacks(Choreographer.java:574)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at android.view.Choreographer.doFrame(Choreographer.java:544)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at android.os.Handler.handleCallback(Handler.java:733)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at android.os.Handler.dispatchMessage(Handler.java:95)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at android.os.Looper.loop(Looper.java:136)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at android.app.ActivityThread.main(ActivityThread.java:5001)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at java.lang.reflect.Method.invokeNative(Native Method)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at java.lang.reflect.Method.invoke(Method.java:515)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:788)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:604)
06-04 10:28:10.678 1433 1433 D WallpaperTextureView: at dalvik.system.NativeStart.main(Native Method)
备注2:
SurfaceTexture 消耗的 stack
06-04 10:31:49.548 1433 1433 D WallpaperTextureView: onSurfaceTextureDestroyed
06-04 10:31:49.548 1433 1433 D WallpaperTextureView: java.lang.Throwable
06-04 10:31:49.548 1433 1433 D WallpaperTextureView: at com.pptv.base.debug.DebugLog.println(DebugLog.java:188)
06-04 10:31:49.548 1433 1433 D WallpaperTextureView: at com.pptv.base.debug.DebugLog.d(DebugLog.java:157)
06-04 10:31:49.548 1433 1433 D WallpaperTextureView: at com.pptv.base.debug.DebugLog.d(DebugLog.java:145)
06-04 10:31:49.548 1433 1433 D WallpaperTextureView: at com.pptv.wallpaperplayer.view.WallpaperTextureView.onSurfaceTextureDestroyed(WallpaperTextureView.java:90)
06-04 10:31:49.548 1433 1433 D WallpaperTextureView: at android.view.TextureView.destroySurface(TextureView.java:239)
06-04 10:31:49.548 1433 1433 D WallpaperTextureView: at android.view.TextureView.destroyHardwareResources(TextureView.java:344)
06-04 10:31:49.548 1433 1433 D WallpaperTextureView: at android.view.HardwareRenderer$Gl20Renderer.destroyResources(HardwareRenderer.java:2293)
06-04 10:31:49.548 1433 1433 D WallpaperTextureView: at android.view.HardwareRenderer$Gl20Renderer.destroyResources(HardwareRenderer.java:2300)
06-04 10:31:49.548 1433 1433 D WallpaperTextureView: at android.view.HardwareRenderer$Gl20Renderer.destroyResources(HardwareRenderer.java:2300)
06-04 10:31:49.548 1433 1433 D WallpaperTextureView: at android.view.HardwareRenderer$Gl20Renderer.destroyResources(HardwareRenderer.java:2300)
06-04 10:31:49.548 1433 1433 D WallpaperTextureView: at android.view.HardwareRenderer$Gl20Renderer.destroyResources(HardwareRenderer.java:2300)
06-04 10:31:49.548 1433 1433 D WallpaperTextureView: at android.view.HardwareRenderer$Gl20Renderer.destroyResources(HardwareRenderer.java:2300)
06-04 10:31:49.548 1433 1433 D WallpaperTextureView: at android.view.HardwareRenderer$Gl20Renderer.destroyResources(HardwareRenderer.java:2300)
06-04 10:31:49.548 1433 1433 D WallpaperTextureView: at android.view.HardwareRenderer$Gl20Renderer.access$800(HardwareRenderer.java:1877)
06-04 10:31:49.548 1433 1433 D WallpaperTextureView: at android.view.HardwareRenderer$Gl20Renderer$2.run(HardwareRenderer.java:2285)
06-04 10:31:49.548 1433 1433 D WallpaperTextureView: at android.view.HardwareRenderer$Gl20Renderer.safelyRun(HardwareRenderer.java:2236)
06-04 10:31:49.548 1433 1433 D WallpaperTextureView: at android.view.HardwareRenderer$Gl20Renderer.destroyHardwareResources(HardwareRenderer.java:2279)
06-04 10:31:49.548 1433 1433 D WallpaperTextureView: at android.view.ViewRootImpl.destroyHardwareResources(ViewRootImpl.java:629)
06-04 10:31:49.548 1433 1433 D WallpaperTextureView: at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1243)
06-04 10:31:49.548 1433 1433 D WallpaperTextureView: at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1004)
06-04 10:31:49.548 1433 1433 D WallpaperTextureView: at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5609)
06-04 10:31:49.548 1433 1433 D WallpaperTextureView: at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761)
06-04 10:31:49.548 1433 1433 D WallpaperTextureView: at android.view.Choreographer.doCallbacks(Choreographer.java:574)
06-04 10:31:49.548 1433 1433 D WallpaperTextureView: at android.view.Choreographer.doFrame(Choreographer.java:544)
06-04 10:31:49.548 1433 1433 D WallpaperTextureView: at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747)
06-04 10:31:49.548 1433 1433 D WallpaperTextureView: at android.os.Handler.handleCallback(Handler.java:733)
06-04 10:31:49.548 1433 1433 D WallpaperTextureView: at android.os.Handler.dispatchMessage(Handler.java:95)
06-04 10:31:49.548 1433 1433 D WallpaperTextureView: at android.os.Looper.loop(Looper.java:136)
06-04 10:31:49.548 1433 1433 D WallpaperTextureView: at android.app.ActivityThread.main(ActivityThread.java:5001)
06-04 10:31:49.548 1433 1433 D WallpaperTextureView: at java.lang.reflect.Method.invokeNative(Native Method)
06-04 10:31:49.548 1433 1433 D WallpaperTextureView: at java.lang.reflect.Method.invoke(Method.java:515)
06-04 10:31:49.548 1433 1433 D WallpaperTextureView: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:788)
06-04 10:31:49.548 1433 1433 D WallpaperTextureView: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:604)
06-04 10:31:49.548 1433 1433 D WallpaperTextureView: at dalvik.system.NativeStart.main(Native Method)
备注3:
在 setVisibility 不可见时 destorysurface
06-04 12:44:31.818 16158 16158 D WallpaperTextureView: onSurfaceTextureDestroyed
06-04 12:44:31.818 16158 16158 D WallpaperTextureView: java.lang.Throwable
06-04 12:44:31.818 16158 16158 D WallpaperTextureView: at com.pptv.base.debug.DebugLog.println(DebugLog.java:188)
06-04 12:44:31.818 16158 16158 D WallpaperTextureView: at com.pptv.base.debug.DebugLog.d(DebugLog.java:157)
06-04 12:44:31.818 16158 16158 D WallpaperTextureView: at com.pptv.base.debug.DebugLog.d(DebugLog.java:145)
06-04 12:44:31.818 16158 16158 D WallpaperTextureView: at com.pptv.wallpaperplayer.view.WallpaperTextureView.onSurfaceTextureDestroyed(WallpaperTextureView.java:99)
06-04 12:44:31.818 16158 16158 D WallpaperTextureView: at android.view.TextureView.destroySurface(TextureView.java:239)
06-04 12:44:31.818 16158 16158 D WallpaperTextureView: at android.view.TextureView.destroyHardwareResources(TextureView.java:344)
06-04 12:44:31.818 16158 16158 D WallpaperTextureView: at com.pptv.wallpaperplayer.view.WallpaperTextureView.setVisibility(WallpaperTextureView.java:65)
06-04 12:44:31.818 16158 16158 D WallpaperTextureView: at com.pptv.wallpaperplayer.view.MediaDisplayView.setVisibility(MediaDisplayView.java:301)
06-04 12:44:31.818 16158 16158 D WallpaperTextureView: at com.pptv.wallpaperplayer.view.MediaDisplayView$3.run(MediaDisplayView.java:203)
06-04 12:44:31.818 16158 16158 D WallpaperTextureView: at android.os.Handler.handleCallback(Handler.java:733)
06-04 12:44:31.818 16158 16158 D WallpaperTextureView: at android.os.Handler.dispatchMessage(Handler.java:95)
06-04 12:44:31.818 16158 16158 D WallpaperTextureView: at android.os.Looper.loop(Looper.java:136)
06-04 12:44:31.818 16158 16158 D WallpaperTextureView: at android.app.ActivityThread.main(ActivityThread.java:5001)
06-04 12:44:31.818 16158 16158 D WallpaperTextureView: at java.lang.reflect.Method.invokeNative(Native Method)
06-04 12:44:31.818 16158 16158 D WallpaperTextureView: at java.lang.reflect.Method.invoke(Method.java:515)
06-04 12:44:31.818 16158 16158 D WallpaperTextureView: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:788)
06-04 12:44:31.818 16158 16158 D WallpaperTextureView: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:604)
06-04 12:44:31.818 16158 16158 D WallpaperTextureView: at dalvik.system.NativeStart.main(Native Method)
备注4:
要打开硬件加速
WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED
android:hardwareAccelerated