Android7.0 开机播放mp4视频

播放开机动画的代码主要位于 frameworks/base/cmds/bootanimation 目录下,

主要播放处理代码在 BootAnimation.cpp 和 BootAnimation.h 两个文件中,默认播放动画图片序列。

要修改为支持 mp4 播放,需要如下处理:

1.  BootAnimation.h  添加两个成员:

bool video();

bool mVideo;

2. BootAnimation.cpp 修改:

a. 

status_t BootAnimation::readyToRun() {
       xxxxx
    mVideo = false;
    if(bBootOrShutDown &&
            access("/system/media/boot.mp4", R_OK) == 0) {
        mVideo = true;
    }
    return NO_ERROR;
}
b.

bool BootAnimation::threadLoop()
{
    xxxxxxxxx
if ((mZip == NULL)&&(mZipFileName.isEmpty())) {
        r = android();
    //  add begin
    } else if(mVideo) {
        r = video();
    //  add end
    } else {
        if (!bETC1Movie) {
            ALOGD("threadLoop() movie()");
            r = movie();
        } else {
            ALOGD("threadLoop() ETC1movie()");
            r = ETC1movie();
        }
    }
    xxxxxxx
}
c. 

#include <media/IMediaHTTPService.h>
bool BootAnimation::video() // add
{
    const float MAX_FPS = 60.0f;
    //const bool LOOP = true;
    const float CHECK_DELAY = ns2us(s2ns(1) / MAX_FPS);
    sp<IMediaHTTPService> httpService;
    eglMakeCurrent(mDisplay, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
    eglDestroySurface(mDisplay, mSurface);
#if 0
    float asp = 1.0f * mWidth / mHeight;
    SurfaceComposerClient::openGlobalTransaction();
    mFlingerSurfaceControl->setPosition(mWidth, 0);
    mFlingerSurfaceControl->setMatrix(0, 1 / asp, -asp, 0);
    SurfaceComposerClient::closeGlobalTransaction();
#endif
    sp<MediaPlayer> mp = new MediaPlayer();
    //mp->reset();
    if(bBootOrShutDown) {
        mp->setDataSource(httpService, "/system/media/boot.mp4", NULL);
    } else {
        mp->setDataSource(httpService, "/system/media/shutdown.mp4", NULL);
    }
    mp->setLooping(true);
    //Parcel*  _parcel = new Parcel;
    //mp->setParameter(100, *_parcel);
    mp->setVideoSurfaceTexture(mFlingerSurface->getIGraphicBufferProducer());
    mp->prepare();
    mp->start();
 
    while(true) {
        if(exitPending())
            break;
        usleep(CHECK_DELAY);
        checkExit();
    }
 
    mp->stop();
    mp->disconnect();
    mp.clear();
    return false;
}

好了,mmm 这个模块,然后push到/system/bin目录下,注意视频文件也要传上去/system/media/boot.mp4 

然后开机重启就播放视频了。

转载自:https://blog.csdn.net/zhbpd/article/details/79415748

参考:http://blog.csdn.net/dddxxxx/article/details/53944471

参考:http://blog.csdn.net/deeplee021/article/details/41042985
 

猜你喜欢

转载自blog.csdn.net/liangtianmeng/article/details/89316838