Android OpenGL动态壁纸问题总结

  1. 打开动态壁纸时一直显示动态壁纸正在加载

报错信息: 无!(这是最难受的 /(ㄒoㄒ)/~~ )。
问题原因: 粗心导致!把本应返回的MyEngine对象写成了Engine
问题代码块:

public class MyGLWallpaperService extends WallpaperService {
 
    @Override
    public Engine onCreateEngine() {
        return new Engine();//<---------------就是这里
    }
    class MyEngine extends Engine{
    //......
    }
}

问题代码: return new Engine();
解决办法:onCreateEngine()方法中返回的Engine改成MyEngine

总结:本来百思不得其解,百度亦不得其解,但在不经意间掠过了代码的某一处就发现问题所在,真是造化弄人啊!所以同志们,在遇到这种bug时先不要worry,可能只是缘分未到,一定要按时睡觉!!!

  1. 打开动态壁纸时程序直接崩溃,显示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");
	   		//通知默认的EGLContextFactory和默认的EGLConfigChooser选择哪个EGLContext客户端版本。
			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);删掉。

总结:适合别人的代码不一定适合自己!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值