播放框架 - TextureView 播放

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fighting Horse

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值