protected void onStop() {
   super.onStop();
   Log.i(TAG, "---------Search on Stop!!------------");
   stopProgressDialog();
   dvb.installationStop();
   tvNames.clear();
   radioNames.clear();
   dvb.installationDeinit();
   newScheduledThreadPool.shutdown();
 }
  /**
   * <搜索节目>
   *
   * @see [类、类#方法、类#成员]
   */
  public void searchChannelInfo() {
    dvb = new NativeInstallation();
    dvb.installationInit();

    // 注册消息监听
    msgInstall = new MessageInstallation(handler);
    dvb.installMessageInit(msgInstall);

    Install_Cfg_t icfg = dvb.new Install_Cfg_t();
    icfg.ptTimeout = dvb.new Install_Timeout_t();

    // 指定Tuner的参数类型为C类型
    icfg.eSignalSource = Config.DVBCore_Signal_Source_eDVBCORE_SIGNAL_SOURCE_DVBC;
    if (!hasBat) {
      icfg.u8SearchLimitFlag = 1;
    } else {
      // 0 has bat,1 no bat
      icfg.u8SearchLimitFlag = 0;
    }

    // 声明Tuner参数的对象
    NativeInstallation.DVBCore_Cab_Desc_t tunerDesc = dvb.new DVBCore_Cab_Desc_t();

    if (null != strInputFrequency && !"".equals(strInputFrequency)) {
      u32Freq = Integer.parseInt(strInputFrequency);
    }
    if (null != strSymbolRate && !"".equals(strSymbolRate)) {
      u32SymbRate = Integer.parseInt(strSymbolRate);
    } else {
      u32Freq = Integer.parseInt(getString(R.string.InputFrequencyDefault));
      u32SymbRate = Integer.parseInt(getString(R.string.SymbolRateDefault));
    }
    int eMod = CommonUtils.getModHandling(strQam);

    SharedPreferences spChannel = getSharedPreferences("double_tuner", 8);
    int tunerid = spChannel.getInt("radio_serviceId", 0);
    LogUtils.printLog(1, 3, TAG, "--->>> tuner id is " + tunerid);

    tunerDesc.setU8TunerId((char) tunerid);
    tunerDesc.setU32Freq(u32Freq);
    tunerDesc.setU32SymbRate(u32SymbRate);
    tunerDesc.seteMod(eMod);

    // manual search
    if (searchMode == Config.Install_Search_Type_eTP_SEARCH) {
      Log.i(TAG, "---Search Type--->>>---Single  TP ---------");

      icfg.eSearchType = Config.Install_Search_Type_eTP_SEARCH;
      icfg.u32MainTpNum = 0;
      icfg.u32NormalTpNum = 1;

      icfg.puNormalTpDescList = new NativeInstallation.DVBCore_Cab_Desc_t[1];
      icfg.puNormalTpDescList[0] = tunerDesc;
    }
    // auto search
    if (searchMode == Config.Install_Search_Type_eAUTO_SEARCH) {
      Log.i(TAG, "---Search Type--->>>---Auto Search ---------");
      icfg.eSearchType = Config.Install_Search_Type_eAUTO_SEARCH;
      icfg.u32MainTpNum = 1;
      icfg.u32NormalTpNum = 0;
      NativeInstallation.DVBCore_Cab_Desc_t[] puMainTpDescList =
          new NativeInstallation.DVBCore_Cab_Desc_t[1];
      puMainTpDescList[0] = tunerDesc;
      icfg.puMainTpDescList = puMainTpDescList;
    }
    // all search
    if (searchMode == Config.Install_Search_Type_eALL_SEARCH) {
      Log.i(TAG, "---Search Type--->>>---All Search ---------");
      icfg.eSearchType = Config.Install_Search_Type_eALL_SEARCH;
      icfg.u32MainTpNum = 1;
      icfg.u32NormalTpNum = 0;
      NativeInstallation.DVBCore_Cab_Desc_t[] puMainTpDescList =
          new NativeInstallation.DVBCore_Cab_Desc_t[1];
      puMainTpDescList[0] = tunerDesc;
      icfg.puMainTpDescList = puMainTpDescList;
    }

    Log.i(TAG, "--------------------DVB Search Params ---------------------------");
    Log.i(TAG, "---------Search Mode is----------------------->>>" + searchMode);
    Log.i(TAG, "---------Input Frequency is----------------------->>>" + tunerDesc.getU32Freq());
    Log.i(TAG, "---------SysbolRate is----------------------->>>" + tunerDesc.getU32SymbRate());
    Log.i(TAG, "---------QAM is----------------------->>>" + tunerDesc.geteMod());
    Log.i(TAG, "---------HasBAT----------------------->>>" + hasBat);

    int reCode = dvb.installationStart(icfg);
    Log.i(TAG, "---------------------------------->>>>>>>>>>Re Code ----------->>>>>" + reCode);
  }