Android Radio开发——切换电台解析(十三)

         在前面的文章中,无论是 hal1 还是 hal2 再切换频道的时候都会调用 tuneInternalLocked() 方法。且切换方式都是调用 virtualRadio().getProgram() 方法,只是后面的通知方法有所区别。

1、切换频道HAL

tuneInternalLocked

源码位置:

hal1.1:/hardware/interfaces/broadcastradio/1.1/default/Tuner.cpp

hal2.0:/hardware/interfaces/broadcastradio/2.0/default/TunerSession.cpp

void TunerSession::tuneInternalLocked(const ProgramSelector& sel) {
    VirtualProgram virtualProgram;
    ProgramInfo programInfo;
    if (virtualRadio().getProgram(sel, virtualProgram)) {
        mCurrentProgram = virtualProgram.selector;
        programInfo = virtualProgram;
    } else {
        mCurrentProgram = sel;
        // 电台切换失败
        programInfo = makeDummyProgramInfo(sel);
    }
    mIsTuneCompleted = true;

    ......
}

// 电台切换失败,生成不指向任何程序的ProgramInfo
static ProgramInfo makeDummyProgramInfo(const Pr

猜你喜欢

转载自blog.csdn.net/c19344881x/article/details/130771293