生活随笔
收集整理的这篇文章主要介绍了
Android OpenGL动态壁纸问题总结
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
打开动态壁纸时一直显示动态壁纸正在加载
报错信息: 无!(这是最难受的 /(ㄒoㄒ)/~~ )。
问题原因: 粗心导致!把本应返回的MyEngine对象写成了Engine。
问题代码块:
public class MyGLWallpaperService extends WallpaperService {@Overridepublic Engine
onCreateEngine() {return new Engine();}class MyEngine extends Engine{}
}
问题代码: return new Engine();
解决办法: 将onCreateEngine()方法中返回的Engine改成MyEngine。
总结:本来百思不得其解,百度亦不得其解,但在不经意间掠过了代码的某一处就发现问题所在,真是造化弄人啊!所以同志们,在遇到这种bug时先不要worry,可能只是缘分未到,一定要按时睡觉!!!
打开动态壁纸时程序直接崩溃,显示xxxActivity已停止运行
报错信息: A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x0 in tid 2128 (GLThread 115)
问题原因: GLThread报错,具体未知(如果有知道的,欢迎评论指教)。
问题代码块:
class MyEngine extends Engine{GLSurfaceView glView
= null
;MyRender render
= null
;private void onCreate(SurfaceHolder holder
){super.onCreate(holder
);glView
= new GLSurfaceView(MyGLWallpaperService
.this);final ActivityManager activityManager
= (ActivityManager
) getSystemService(ACTIVITY_SERVICE
);final ConfigurationInfo configurationInfo
= activityManager
.getDeviceConfigurationInfo();final boolean supportsEs2
= configurationInfo
.reqGlEsVersion
>= 0x20000||(Build
.VERSION
.SDK_INT
>= Build
.VERSION_CODES
.ICE_CREAM_SANDWICH_MR1
)&&(Build
.FINGERPRINT
.startsWith("generic"))|| Build
.FINGERPRINT
.startsWith("unknow")|| Build
.MODEL
.contains("google_sdk")|| Build
.MODEL
.contains("Emulator")|| Build
.MODEL
.contains("Android SDK built for x86");if(supportsEs2
){glView
.setEGLContextClientVersion(2);render
= new MyRender(MyGLWallpaperService
.this);glView
.setRenderer(render
);}else{Toast
.makeText(MyGLWallpaperService
.this ,"This device does not support OpenGL ES 2.0",Toast
.LENGTH_LONG
).show();}}}
问题代码: glView.setEGLContextClientVersion(2);
解决办法: 将glView.setEGLContextClientVersion(2);删掉。
总结:适合别人的代码不一定适合自己!
总结
以上是生活随笔为你收集整理的Android OpenGL动态壁纸问题总结的全部内容,希望文章能够帮你解决所遇到的问题。
如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。