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

 因爲最近一直忙項目,沒有時間來更新文檔,今天抽空來寫一點,但願你們能夠學習使用!java

     這一章固然仍是來分析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學習

**/.net

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


 /**
   *   使調頻裝置在接收模式。
   *    <p>
   *    這是一個同步的方法用於初始化調頻接收機。若是已經初始化該函數將intialize接收者使用默認設置。只有在成功地調用這個函數的許多調頻設備接口可使用。
   *    <p>
   *    使接收者時,客戶機還必須提供的區域設置接收器將運做。這些設置(包括參數configSettings)一般用於設置調頻接收機操做在一個特定的地理區域。這些設置能夠更改後啓用調頻驅動程序經過使用函數{ @link #配置}。
   *    <p>事件

*    這個命令只能出具一個調頻接收器的全部者。發出這個命令,客戶機必須首先成功叫{ @link #得到}。
   *    <p>
   *    @param configSettings設置打開收音機時應用
   *    @return真若是初始化成功了,假若是初始化失敗。
   *    <p>
   *@see #啓用
  *@see # registerClient
  *@see #禁用
   *
   */ci

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 >
   * <li>{@link #FM_RX_SRCH_MODE_SEEK}
   *  <li>{@link #FM_RX_SRCH_MODE_SCAN}
* < / ul >
* < p >
*有效參數值「dwellPeriod」:
* < ul >
   *    <li>{@link #FM_RX_DWELL_PERIOD_1S}
   *    <li>{@link #FM_RX_DWELL_PERIOD_2S}
   *    <li>{@link #FM_RX_DWELL_PERIOD_3S}
   *    <li>{@link #FM_RX_DWELL_PERIOD_4S}
   *    <li>{@link #FM_RX_DWELL_PERIOD_5S}
   *    <li>{@link #FM_RX_DWELL_PERIOD_6S}
   *    <li>{@link #FM_RX_DWELL_PERIOD_7S}
* < / ul >
* < p >
*有效參數值「方向」:
* < ul >
   *    <li>{@link #FM_RX_SEARCHDIR_DOWN}
   *    <li>{@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是用於生成站列表包括:
* <li>強站(FM_RX_SRCHLIST_MODE_STRONGFM_RX_SRCHLIST_MODE_STRONGEST)
* <li>弱站(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 >
* <li> { @link #FM_RX_SRCHLIST_MODE_STRONG }
* <li> { @link #FM_RX_SRCHLIST_MODE_WEAK }
* <li> { @link #FM_RX_SRCHLIST_MODE_STRONGEST }
* <li> { @link #FM_RX_SRCHLIST_MODE_WEAKEST }
* <li> FM_RX_SRCHLIST_MODE_PTY(未來會實現嗎)
* < / ul >
* < p >
*有效參數值「方向」:

* < ul >
   *    <li>{@link #FM_RX_SEARCHDIR_DOWN}
   *    <li>{@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()  

相關文章
相關標籤/搜索