Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android FM模塊學習之四源碼解析(三)

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

編輯:關於Android編程

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

這一章當然還是來分析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()


    1. 上一頁:
    2. 下一頁:
    熱門文章
    閱讀排行版
    Copyright © Android教程網 All Rights Reserved