Android FM模組學習之四源碼解析(三)

來源:互聯網
上載者:User

Android FM模組學習之四源碼解析(三)

由於最近一直忙項目,沒有時間來更新文檔,今天抽空來寫一點,希望大家可以學習使用!

這一章當然還是來分析FM模組的源碼。FmReceiver.java


publicFmReceiver(String devicePath,FmRxEvCallbacksAdaptor callback) throwsInstantiationException {      mControl = new FmRxControls();      mRxEvents = new FmRxEventListner();      //registerClient(callback);      mCallback = callback;   }

/**註冊一個回調為調頻接收機事件通知。
* < p >
*這是一個同步命令用於註冊的事件通知調頻接收機的司機。自調頻驅動非同步執行一些任務,該功能允許用戶端非同步接收資訊。
* < p >
*在調用該函數時,客戶機必須通過一個回呼函數用來實現非同步事件。必須非空值參數的回調。如果一個NULL值傳遞給這個函數,註冊將會失敗。
* < p >
*用戶端可以選擇哪些事件將從接收器發送司機只需實現事件希望接收的功能。
* < p >
* @param回調事件回調處理事件的調頻接收機。

* @return真如果回調註冊,假如果回調註冊失敗了。
*初始化失敗。
* < p >
* @see #收購
*@see # unregisterClient

**/

public boolean registerClient(FmRxEvCallbacks callback){      boolean status;      status = super.registerClient(callback);      /* Do Receiver Specific Stuff here.*/      return status;   }

/**
* 使調頻裝置在接收模式。
*


* 這是一個同步的方法用於初始化調頻接收機。如果已經初始化該函數將intialize接收者使用預設設定。只有在成功地調用這個函數的許多調頻裝置介面可以使用。
*


* 使接收者時,客戶機還必須提供的地區設定接收器將運作。這些設定(包括參數configSettings)通常用於設定調頻接收機操作在一個特定的地理地區。這些設定可以更改後啟用調頻驅動程式通過使用函數{ @link #配置}。
*

* 這個命令只能出具一個調頻接收器的所有者。發出這個命令,客戶機必須首先成功叫{ @link #獲得}。
*


* @param configSettings設定開啟收音機時應用
* @return真如果初始化成功了,假如果初始化失敗。
*


*@see #啟用
*@see # registerClient
*@see #禁用
*
*/

public boolean enable (FmConfig configSettings)


/ * *
*重設調頻裝置。
* < p >
*這是一個同步命令用於重設調頻裝置的狀態不可恢複的錯誤。這個函數時將使用用戶端收到意想不到的廣播通知禁用。曾稱,大多數調頻裝置提供的功能將被禁用,直到用戶端還可以重新開啟裝置再次通過{ @link #可用}。
* < p >

*@return真如果複位成功了,假如果重設失敗了。
@see #啟用
@see #禁用
@see # registerClient
* /

publicboolean reset()


/ * *
*禁用調頻裝置。
* < p >
*這是一個同步命令用于禁用調頻裝置。時這個函數將使用用戶端不再需要使用調頻裝置。曾稱,大多數調頻裝置提供的功能將被禁用,直到用戶端還可以重新開啟裝置再次通過{ @link #可用}。
* < p >
* @return真如果禁用成功了,假如果禁用失敗了。
@see #啟用
@see # registerClient


* /

publicboolean disable()


/ * *
*擷取當前搜尋操作的狀態。
* < p >
時這個函數將使用searchStations()函數想知道是否尋求/掃描/自動選擇操作已經進行中。
如果一個尋求命令時發出一個已經進行中,我們取消正在尋求命令和開始新的搜尋操作。
* < p >

* @return調頻搜尋操作的目前狀態:
* SRCH_COMPLETE
* SRCH_INPROGRESS
* SRCH_ABORTED
* /

static int getSearchState()



/ * *
*設定搜尋操作的目前狀態。
* < p >

*這個函數是用於設定目前狀態的搜尋操作。如果一個尋求命令時發出一個已經進行中,我們取消正在尋求命令,搜尋操作的狀態設定為SRCH_ABORTED和開始新的搜尋。
* < p >
* @return沒有
* /

static void setSearchState(int state)


/ * *
*啟動基本的尋求和掃描操作。
*
* < p >
*使用此命令來調用一個基本尋求/ FM無線電頻段的掃描

* < p >
* < ul >
*這個API用於:<李>調用基本尋求操作({ @link # FM_RX_SRCH_MODE_SEEK })<李>調用基本的掃描操作({ @link # FM_RX_SRCH_MODE_SCAN })
* < / ul >

* < p >
*這個函數執行的最基本的操作是一個{ @link # FM_RX_SRCH_MODE_SEEK }的命令。遞增或遞減的尋求過程處理頻率在預定義的通道的步驟(由通道間隔定義)和測量得到的訊號電平。一旦成功調站,發現為了達到或超過這個訊號電平,尋求操作將完成和FmRxEvSearchComplete事件將返回給用戶端。如果沒有發現匹配搜尋標準站,頻率將會回到最初調諧。
* < p >

*由於尋求總是導致頻率調諧,每個尋求操作也將返回一個FmRxEvRadioTuneStatus事件到客戶機/應用程式層。
*
* < p >

就像{ @link # FM_RX_SRCH_MODE_SEEK },{ @link # FM_RX_SRCH_MODE_SCAN }命令可以比作許多背靠背尋求一段住在每個成功的追求。一旦發布,掃描將增量或減量的頻率定義通道間隔直到找到站達到或超過搜尋閾值集。一旦發現本站,並成功地調整,FmRxEvRadioTuneStatus事件將返回給用戶端,車站仍將調整為特定的時間內由參數dwellPeriod表示。時間到期後,FmRxEvSearchInProgress事件將被發送到用戶端和一個新的將開始尋找下一站符合搜尋閾值。後掃描整個樂隊,或取消後搜尋已經由用戶端發起,FmRxEvRadioTuneStatus事件將被發送到用戶端。類似於尋求命令,每個掃描將導致至少一個站被調整,即使這是起始頻率。
* < p >
*每次司機啟動搜尋(尋求或掃描)用戶端將通過一個FmRxEvSearchInProgress事件通知。同樣,每次搜尋完成後,用戶端將通過一個FmRxEvRadioTuneStatus事件通知。
* < p >
*搜尋可以在任何時候被取消使用API cancelSearch()。一旦取消,每個搜尋將調到最後一站和產生FmRxEvSearchComplete和FmRxEvRadioTuneStatus事件。有效參數值“模式”:
* < ul >
*
  • {@link #FM_RX_SRCH_MODE_SEEK}
    *
  • {@link #FM_RX_SRCH_MODE_SCAN}
    * < / ul >
    * < p >
    *有效參數值“dwellPeriod”:
    * < ul >
    *
  • {@link #FM_RX_DWELL_PERIOD_1S}
    *
  • {@link #FM_RX_DWELL_PERIOD_2S}
    *
  • {@link #FM_RX_DWELL_PERIOD_3S}
    *
  • {@link #FM_RX_DWELL_PERIOD_4S}
    *
  • {@link #FM_RX_DWELL_PERIOD_5S}
    *
  • {@link #FM_RX_DWELL_PERIOD_6S}
    *
  • {@link #FM_RX_DWELL_PERIOD_7S}
    * < / ul >
    * < p >
    *有效參數值“方向”:
    * < ul >
    *
  • {@link #FM_RX_SEARCHDIR_DOWN}
    *
  • {@link #FM_RX_SEARCHDIR_UP}
    * < / ul >
    * < p >
    * @param模式調頻的搜尋模式。
    @param dwellPeriod調頻掃描住時間。只有當使用
    模式= { @link # FM_RX_SRCH_MODE_SCAN }
    @param方向搜尋方向。


    * < p >
    * @return真如果搜尋啟動成功了,假如果搜尋啟動失敗。
    @see # searchStations(int,int,int,int,int)
    @see # searchStationList
    * /

    public boolean searchStations (int mode,int dwellPeriod,int direction)public boolean searchStations (int mode,int dwellPeriod,int direction,int pty,int pi)


    / * *啟動站列表搜尋操作。
    * < p >該方法將初啟搜尋,產生基於強和弱電台的頻率列表中發現的調頻樂隊。
    * < p >
    * < ul >
    *這個API是用於產生站列表包括:
    *

  • 強站(FM_RX_SRCHLIST_MODE_STRONGFM_RX_SRCHLIST_MODE_STRONGEST)
    *
  • 弱站(FM_RX_SRCHLIST_MODE_WEAKFM_RX_SRCHLIST_MODE_WEAKEST)
    * < / ul >
    * < p >

    *掃描的頻率範圍取決於當前組樂隊。司機搜尋所有有效站在樂隊和完成後,返回一個頻道列表基於客戶的選擇。用戶端可以選擇搜尋中最強的電台列表樂隊,樂隊最弱的電台,或第N強弱。通過設定maximumStations參數,用戶端可以限制返回的頻率數在列表中。如果使用者指定參數maximumStations 0,搜尋將產生站的最大數量。


    * < p >

    *驅動每次啟動一個基於列表的搜尋,用戶端將通過一個FmRxEvSearchInProgress事件通知。類似地,每一次基於列表搜尋完成後,用戶端將通過一個FmRxEvSearchListComplete事件通知。
    * < p >
    *完成搜尋,最初調諧站將調諧和事件將產生如下:FmRxEvSearchListComplete——搜尋完成。FmRxEvRadioTuneStatus——re-tuned最初的頻率。


    * < p >
    *一旦發出搜尋命令,多個命令從客戶機可能不允許,直到搜尋完成或取消。
    * < p >

    搜尋可以在任何時候被取消使用API cancelSearch()。取消搜尋視為完成搜尋和事件將產生如下:FmRxEvSearchComplete——搜尋完成。FmRxEvRadioTuneStatus——re-tuned最初的頻率。
    * < p >
    * 有效參數值“模式”:
    * < ul >
    *
  • { @link #FM_RX_SRCHLIST_MODE_STRONG }
    *
  • { @link #FM_RX_SRCHLIST_MODE_WEAK }
    *
  • { @link #FM_RX_SRCHLIST_MODE_STRONGEST }
    *
  • { @link #FM_RX_SRCHLIST_MODE_WEAKEST }
    *
  • FM_RX_SRCHLIST_MODE_PTY(將來會實現嗎)
    * < / ul >
    * < p >
    *有效參數值“方向”:

    * < ul >
    *

  • {@link #FM_RX_SEARCHDIR_DOWN}
    *
  • {@link #FM_RX_SEARCHDIR_UP}
    * < / ul >
    * < p >
    * 有效參數值“maximumStations”:1 - 12

    < p >
    *@param模式調頻的搜尋模式。
    @param方向搜尋方向。
    @param maximumStations站的最大數量,可以從搜尋返回。這個參數被忽略和12站返回FM_RX_SRCHLIST_MODE_STRONGEST或FM_RX_SRCHLIST_MODE_WEAKEST如果搜尋模式
    @param企業調頻RDS搜尋程式類型(目前不使用)
    * < p >

    * @return真如果搜尋啟動成功了,假如果搜尋啟動失敗。
    @see # searchStations(int,int,int)
    @see # searchStations(int,int,int,int,int)
    * /

    public boolean searchStationList (int mode,int direction,int maximumStations,int pty)


    / * *
    *取消進行中的搜尋操作 (掃描,尋找searchlist等等)。
    * < p >

    *這種方法應該用於取消之前啟動搜尋(例如基本尋求/掃描,RDS尋求/掃描、搜尋列表,等)。
    * < p >
    一旦完成,這個命令將產生一個FmRxEvSearchCancelledtr事件所有註冊的客戶。這個事件後,用戶端還可以接收搜尋事件進行中相關搜尋正在完成。
    *
    * < p >
    * @return真如果取消搜尋啟動成功,假如果取消搜尋啟動失敗。
    @see # searchStations(int,int,int)
    @see # searchStations(int,int,int)
    @see # searchStationList
    * /

    關閉搜尋更改狀態

    publicboolean cancelSearch ()


    / * *
    *允許調頻接收機靜音和非靜音。
    * < p >
    *這是一個同步命令用於靜音或un-mute FM音頻。這個命令減弱來自FM音訊裝置。重要的是要注意,這隻會影響調頻音頻而不是其他音頻系統被使用。
    * < p >
    * @param沉默的模式設定應用模式
    * < p >
    @return真如果setMuteMode調用放置成功,假如果setMuteMode失敗了。
    @see #啟用
    @see # registerClient
    * /

    public boolean setMuteMode (int mode)


    / * *

    *FM的單聲道/立體聲模式設定。
    *
    * < p >
    *此命令允許使用者佈建的單聲道/立體聲模式調頻裝置。使用此功能,使用者可以允許單聲道/立體聲混音或單聲道音訊接待。
    @param stereoEnable如此:支援立體聲,Mono錯誤的:力量
    @return真如果setStereoMode調用放置成功,假如果setStereoMode失敗了。
    * /

    public boolean setStereoMode (booleanstereoEnable)


    返回當前的RDS / RBDS計劃服務

    publicFmRxRdsData  getPSInfo()


    / * *
    *此函數返回一個頻率的列表。
    *
    * < p >
    *該方法獲得的結果{ @link # searchStationList }。這種方法應該調用FmRxEvSearchListComplete時調用。
    * < p >
    *@return整數數組,對應的頻率搜尋電台
    @see # searchStationList
    * /

    public int[] getStationList ()


    / * *
    *此函數返回當前裝置的訊號強度

    *
    * < p >
    *該方法返回當前的訊號強度調諧。
    * < p >
    * 目前@return RSSI的調諧
    * /

    public intgetRssi()


  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.