Android FM模組學習之四原始碼解析(四)
我今天想分享的是FM模組的儲存方法,即FmSharedPreferences.java
FmSharedPreferences(Context context)在構造方法中載入Load()方法,
public void Load(){ Log.d(LOGTAG, "Load preferences "); if(mContext == null) { return; } SharedPreferences sp = mContext.getSharedPreferences(SHARED_PREFS, Context.MODE_PRIVATE); mTunedFrequency = sp.getInt(PREF_LAST_TUNED_FREQUENCY, DEFAULT_NO_FREQUENCY); mRecordDuration = sp.getInt(LAST_RECORD_DURATION, RECORD_DUR_INDEX_0_VAL); mAFAutoSwitch = sp.getBoolean(LAST_AF_JUMP_VALUE, true); mAudioOutputMode = sp.getBoolean(AUDIO_OUTPUT_MODE, true); if(sp.getInt(FMCONFIG_COUNTRY, 0) == REGIONAL_BAND_USER_DEFINED) { mBandMinFreq = sp.getInt(FMCONFIG_MIN, mBandMinFreq); mBandMaxFreq = sp.getInt(FMCONFIG_MAX, mBandMaxFreq); mChanSpacing = sp.getInt(FMCONFIG_STEP, mChanSpacing); } int num_lists = sp.getInt(LIST_NUM, 1); if (mListOfPlists.size() == 0) { for (int listIter = 0; listIter < num_lists; listIter++) { String listName = sp.getString(LIST_NAME + listIter, "FM - " + (listIter+1)); int numStations = sp.getInt(STATION_NUM + listIter, 1); if (listIter == 0) { createFirstPresetList(listName); } else { createPresetList(listName); } PresetList curList = mListOfPlists.get(listIter); for (int stationIter = 0; stationIter < numStations; stationIter++) { String stationName = sp.getString(STATION_NAME + listIter + "x" + stationIter, DEFAULT_NO_NAME); int stationFreq = sp.getInt(STATION_FREQUENCY + listIter + "x" + stationIter, DEFAULT_NO_FREQUENCY); PresetStation station = curList.addStation(stationName, stationFreq); int stationId = sp.getInt(STATION_ID + listIter + "x" + stationIter, DEFAULT_NO_STATIONID); station.setPI(stationId); int pty = sp.getInt(STATION_PTY + listIter + "x" + stationIter, DEFAULT_NO_PTY); station.setPty(pty); int rdsSupported = sp.getInt(STATION_RDS + listIter + "x" + stationIter, DEFAULT_NO_RDSSUP); if (rdsSupported != 0) { station.setRDSSupported(true); } else { station.setRDSSupported(false); } /* Load Configuration */ setCountry(sp.getInt(FMCONFIG_COUNTRY, REGIONAL_BAND_NORTH_AMERICA)); /* Last list the user was navigating */ mListIndex = sp.getInt(LAST_LIST_INDEX, 0); if(mListIndex >= num_lists) {mListIndex=0; } }
初始化取出sp一些資料
根據系統初始化地區設定當地頻率
/*Load Configuration */ if (Locale.getDefault().equals(Locale.CHINA)) { setCountry(sp.getInt(FMCONFIG_COUNTRY, REGIONAL_BAND_CHINA)); } else { setCountry(sp.getInt(FMCONFIG_COUNTRY, REGIONAL_BAND_NORTH_AMERICA)); } /* Last list the user was navigating */
儲存頻率
public void Save()
設定預設的地區
public static void SetDefaults()
設定調整頻率
public static void setTunedFrequency(intfrequency)
獲取調整頻率
public static int getTunedFrequency()
獲取下一個頻率
public static int getNextTuneFrequency(intfrequency)
獲取上一個頻率
public static int getPrevTuneFrequency(intfrequency)
/ * * * @param mFMConfiguration mFMConfiguration設定 * / public static void setFMConfiguration(FmConfig mFMConfig) /** *@return the mFMConfiguration */ public static FmConfig getFMConfiguration() { return mFMConfiguration; }
設定fm播放的頻率範圍
public static void setRadioBand(int band)
獲取fm頻率範圍限制
public static int getRadioBand()
獲取間隔
public static int getChSpacing()
設定遠端資料服務
public static void setRdsStd(int std)
mFMConfiguration.setRdsStd(std);
獲取遠端資料服務
public static int getRdsStd()
mFMConfiguration.getRdsStd();
設定國家地區
public static void setCountry(intnCountryCode)
獲取國家地區
public static int getCountry()
設定聲音輸出模板
setAudioOutputMode
設定錄音是否持續
public static void setRecordDuration(intdurationIndex)