推荐使用 读书导航 极客导航 :125啦极客导航(http://www.91es.com/jike.html)
最近在Android 6.0时出现logo过度到Android动画时出现闪一下和黑屏问题。
查询资料后,在《kernel logo到开机动画之间闪现黑屏(android 5.X)》找到了解决方法,因此摘抄于此作为笔记。
/frameworks/base/cmds/bootanimation/BootAnimation.cpp
删除部分我做了记录,如下
//开机动画走Android()的,注释如下
bool BootAnimation::android()
{
initTexture(&mAndroid[0], mAssets, "images/android-logo-mask.png");
initTexture(&mAndroid[1], mAssets, "images/android-logo-shine.png");
//--------------------delete start------------------------
// clear screen
//glShadeModel(GL_FLAT);
//glDisable(GL_DITHER);
//glDisable(GL_SCISSOR_TEST);
//glClearColor(0,0,0,1);
//glClear(GL_COLOR_BUFFER_BIT);
//eglSwapBuffers(mDisplay, mSurface);
//--------------------delete end------------------------
glEnable(GL_TEXTURE_2D);
glTexEnvx(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
.....
return false;
}
//开机动画走自定义动画Move()
bool BootAnimation::movie()
{
String8 desString;
......
mZip->endIteration(cookie);
//--------------------delete start------------------------
// clear screen
//glShadeModel(GL_FLAT);
//glDisable(GL_DITHER);
//glDisable(GL_SCISSOR_TEST);
//glDisable(GL_BLEND);
//glClearColor(0,0,0,1);
//glClear(GL_COLOR_BUFFER_BIT);
//eglSwapBuffers(mDisplay, mSurface);
//--------------------delete end ------------------------
glBindTexture(GL_TEXTURE_2D, 0);
glEnable(GL_TEXTURE_2D);
glTexEnvx(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
glTexParameterx(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameterx(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameterx(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameterx(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
const int xc = (mWidth - animation.width) / 2;
const int yc = ((mHeight - animation.height) / 2);
nsecs_t frameDuration = s2ns(1) / animation.fps;
Region clearReg(Rect(mWidth, mHeight));
clearReg.subtractSelf(Rect(xc, yc, xc+animation.width, yc+animation.height));
......
return false;
}
如果是原生系统的,那就是改上面两个就可以的,但是由于我们使用的是被芯片公司修改过得源码。
比如Rockchip(瑞芯微),autochips(杰发)等,他们会对代码进行优化有修改。
如果你的代码不是Android源码,可以再查找一下是否有ETC1movie(),MTKmovie()等,如果有,请把下面代码也注释掉。
当然,虽有这个代码,但不一定走了,为了确保万一,还是注释掉为好。
//芯片公司自定义一套动画Move()
bool BootAnimation::ETC1movie()
{
......
mZip->endIteration(cookie);
initShader();
glViewport((mWidth - animation.width) >> 1, (mHeight - animation.height) >> 1,
animation.width, animation.height);
//--------------------delete start------------------------
// clear screen
//glDisable(GL_DITHER);
//glDisable(GL_SCISSOR_TEST);
//glDisable(GL_BLEND);
//glClear(GL_COLOR_BUFFER_BIT);
//eglSwapBuffers(mDisplay, mSurface);
//--------------------delete end------------------------
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, 0);
glUniform1i(mUniformTexture, 0);
......
return false;
}
暂无评论...
随机推荐
WordPress页面中阻止插入额外换行
众所周知WordPress会对编辑器里的内容再格式化一遍,比如自动分段。但有些时候这些添加的格式反而也会让人很头疼。最近遇到WordPress在input,select,pre前会插入额外的换行即<br>,从而破坏页面样式的问题。方法一:去除所有页面的额外换行符在对应主题f...
Android消息机制之三Handler分析
接着《Android消息机制之一简介(1)》和《Android消息机制之二简介(2)》,我们现在来单独看看Handler源码。设计代码的路径:base\core\java\android\os\Handler.javaHandler的简单使用在项目中,Handler的声明和初始化一般...
触发了v2ex.com某些机制,被禁止访问
前言尴尬,触发了v2ex.com某些机制,被禁止访问。Google Chrome提示访问 v2ex.com 的请求遭到拒绝您未获授权,无法查看此网页。HTTP ERROR 403微软 Edge提示访问 v2ex.com 被拒绝你没有查看此页面的用户权限。HTTP ERROR 403...
[代码片段]MediaCode 播放Video中的视频帧[无声]
前言这就只做使用MediaCodec+SurfaceView播放视频PS 这里不涉及音频播放,只显示视频帧出来。正文这里只简单记录一下,推荐看我参考的文章,我用的就是他的代码。原理通过MediaExtractor获取媒体的编码信息[Track索引,MediaMime,MediaFor...
MediaPlayer异常
前言播放媒体测试时,出现Mediaplayer报异常问题,如下打印日志MediaPlayerNative(13594): start called in state 4, mPlayer(0x75b4e81280)MediaPlayerNative(13594): error (-38, 0...
Android 13 MediaProvider简单记录2
前言简单记录一下Android 13中MediaProvider的扫描流程,记录于此,方便自己查阅而已。接上回《Android 13 MediaProvider简单记录》正文上回介绍到。@Overridepublic void scanDirectory(File file, int...