標籤:android fm
前一陣子簡單描述了一些關於FM開啟、錄音和搜尋的流程,淺析了一下各個類的源碼,接下來就是關閉FM了,FM模組的學習就告一段落了,希望這陣子的整理能對大家在FM的瞭解上有一定協助,如果大家在修改FM模組的上層代碼時遇到了問題或BUG,可以留言,我們共同來處理。
FM關閉有兩種方式,一種是拔出耳機,FM關閉,另一種是按關閉按鈕。
請看第一種方式:
流程圖:
FmRadioService類中,使用者直接拔出耳機會接收到一個,耳機拔出廣播Intent.ACTION_HEADSET_PLUG當耳機被拔出後 mHeadsetPlugged =(intent.getIntExtra("state", 0) == 1); 取零。然後使用mHandler.post(mHeadsetPluginHandler);重新整理耳機狀態。調用fmOff();fmOff()調用stopFM()方法關閉fm接收的訊號裝置,調用FMRecevice的disable()方法關閉調頻裝置。調用mCallbacks.onDisabled();IFMRadioServiceCallbacks中的onDisabled()發一個handler,mHandler.post(mRadioDisabled);關閉FMRadio的UI狀態等
cleanupTimeoutHandler();endSleepTimer();stopRecording();cancelSearch();enableRadioOnOffUI(false);
接下來請看第二種方式:
流程圖:
當在FMRadio類介面手動關閉fm點擊關閉按鈕的時候,通過mOnOffButton監聽在回調方法mTurnOnOffClickListener中當fm播放的時候就可以手動關閉,通過發送handler mDisableRadioTask回調方法。mDisableRadioTask中調用disableRadio();方法。通過繼承存根類的類的引用調用FMRadioService中的fmOff();(mService.fmOff();),fmOff()調用stopFM()方法關閉fm接收的訊號裝置,調用FMRecevice的disable()方法關閉調頻裝置,調用enableRadioOnOffUI();更改FMRadio UI介面狀態。
AndroidFM模組學習之五關閉FM流程