電台控制功能的實作方式是根據 MediaSession 和 MediaBrowse 實作,讓媒體和語音助理應用程式可控制電台。詳情請參閱 developer.android.com 上的「打造車用媒體應用程式」一文。
packages/apps/Car/libs 中的 car-broadcastradio-support 程式庫提供媒體瀏覽樹狀結構實作項目。這個程式庫也包含 ProgramSelector 的擴充功能,可用於將 URI 轉換為其他格式,或將其他格式轉換為 URI。建議無線電實作項目使用這個程式庫建構相關的瀏覽樹狀結構。
媒體來源切換器
為了在媒體中顯示的電台和其他應用程式之間提供無縫轉換,car-media-common 程式庫包含應整合至電台應用程式的類別。MediaAppSelectorWidget 可納入電台應用程式的 XML (在參考媒體和電台應用程式中使用的圖示和下拉式選單):
<com.android.car.media.common.MediaAppSelectorWidget android:id="@+id/app_switch_container" android:layout_width="@dimen/app_switch_widget_width" android:layout_height="wrap_content" android:background="@drawable/app_item_background" android:gravity="center" />
這項小工具會啟動 AppSelectionFragment,顯示可切換的媒體來源清單。如果您想要使用提供的 UI 以外的介面,可以在應顯示切換器時啟動 AppSelectionFragment,建立自訂小工具。
AppSelectionFragment newFragment = AppSelectionFragment.create(widget, packageName, fullScreen); newFragment.show(mActivity.getSupportFragmentManager(), null);
在 packages/apps/Car/Radio 中,參考電台應用程式實作項目提供實作範例。
詳細控制項規格
MediaSession (透過 MediaSession.Callback) 介面為目前播放的廣播節目提供控制機制:
onPlay,onStop。開啟或關閉電台播放的靜音功能。onPause. 時間延遲暫停 (如有支援)。onPlayFromMediaId:播放頂層資料夾中的任何內容。例如「播放 FM 電台」或「播放電台」。onPlayFromUri:播放特定頻率。例如「播放 88.5 FM」。onSkipToNext,onSkipToPrevious。切換至下一個或上一個電台。onSetRating:新增或移除「我的收藏」中的項目。
MediaBrowser 會透過三種頂層目錄公開可調整的 MediaItem:
- (選填) 節目 (電台)。雙調諧器收音機通常會使用這個模式,指出使用者所在位置的所有可調諧電台。
- 收藏的內容。已新增至「我的最愛」清單的電台節目,其中部分節目可能無法收聽 (不在收訊範圍內)。
- 頻道頻帶:目前區域中所有可能的管道 (87.9、88.1、88.3、88.5、88.7、88.9、89.1 等)。每個頻帶都有一個獨立的頂層目錄。
每個資料夾 (AM/FM/節目) 中的每個元素都是 MediaItem,其中包含可與 MediaSession 搭配使用的 URI,用於調整頻道。每個頂層資料夾 (AM/FM/Programs) 都是 MediaItem,其中的 mediaId 可與 MediaSession 搭配使用,用於觸發播放作業,這取決於原始設備製造商 (OEM) 的判斷。舉例來說,「播放 FM」、「播放 AM」和「播放電台」都是非特定電台查詢,會使用 mediaId 傳送至 OEM 電台應用程式。電台應用程式會根據一般要求和 mediaId 決定要播放哪些內容。
MediaSession
由於廣播串流沒有暫停的概念,因此播放、暫停和停止動作不一定適用於廣播。在廣播電台中,Stop 動作會將串流設為靜音,而 Play 會將靜音設為關閉。
部分收音機 (或應用程式) 可透過快取內容,然後稍後播放,模擬廣播串流暫停的情況。在這種情況下,請使用 onPause。
透過 mediaId 和 URI 動作播放,目的是將電台調諧至從 MediaBrowser 介面擷取的電台。mediaId 是隨意字串,由收音機應用程式提供,用於強制設立用來識別特定電台的值,該值必須是獨特的 (也就是說,特定 ID 只會指向一個項目) 且穩定的 (也就是說,特定項目在整個工作階段中都會使用相同的 ID)。URI 會是明確定義的結構定義。簡而言之,這是 ProgramSelector 的 URI 格式。雖然這可保留唯一性屬性,但不一定會保持穩定,因為當電台轉移至其他頻率時,這項屬性可能會變更。
onPlayFromSearch 是設計用途,由用戶端 (隨附應用程式) 負責從 MediaBrowser 樹狀結構中選取搜尋結果。將這項責任轉移至無線電應用程式會增加複雜度,需要針對字串查詢的顯示方式簽訂正式合約,並導致不同硬體平台的使用者體驗不一致。
注意:收音機應用程式不包含其他資訊,因此無法透過 MediaBrowser 介面搜尋未向用戶端公開的電台名稱。
跳到下一個或上一個車站取決於目前的情況:
- 當應用程式從「我的最愛」清單調到某個電台時,應用程式可以從「我的最愛」清單移動到下一個電台。
- 從「節目」清單中收聽電台時,系統可能會依頻道號碼排序,切換至下一個可用的電台。
- 聆聽任意頻道可能會導致系統切換至下一個實體頻道,即使沒有廣播訊號也一樣。
廣播應用程式會處理這些動作。
處理錯誤
TransportControls 動作 (播放、停止和下一首) 不會提供動作是否成功的回饋。如要指出錯誤,唯一的方法是將 MediaSession 狀態設為 STATE_ERROR,並附上錯誤訊息。
收音機應用程式必須處理這些動作,並執行或設定錯誤狀態。如果執行 Play 指令不是立即執行,播放狀態應變更為
STATE_CONNECTING (在直接調音的情況下),或是在執行指令時變更為
STATE_SKIPPING_TO_PREVIOUS 或
NEXT。
用戶端應監控
PlaybackState,並驗證工作階段是否將目前的程式變更為要求的內容,或進入錯誤狀態。STATE_CONNECTING 不得超過 30 秒。不過,直接調到特定的調頻/調幅頻率應該會更快。
新增及移除收藏項目
MediaSession 支援分級功能,可用於控制「我的最愛」。onSetRating
以 RATING_HEART 類型的評分呼叫,可將目前收聽的電台新增或移除至收藏清單。
與舊版預設值相反,這個模型假設未排序且無邊界的精選清單,每個已儲存的精選項目都會分配至數字插槽 (通常為 1 到 6)。因此,以預設值為基礎的系統將無法與 onSetRating 作業相容。
MediaSession API 的限制是,只能新增或移除目前已調諧的電台。舉例來說,您必須先選取項目,才能移除該項目。這只是 MediaBrowser 用戶端 (例如隨附應用程式) 的限制。收音機應用程式並未受到類似限制。如果應用程式不支援「我的最愛」,則這個部分為選用項目。
MediaBrowser
為了表示哪些頻率或實際頻道名稱 (當調整為任意頻道時,是否適合特定無線電技術) 適用於特定區域,每個頻帶都會列出所有有效頻道 (頻率)。在美國地區,這相當於 87.8 到 108.0 MHz 範圍內的 101 個 FM 頻道 (使用 0.2 MHz 間距),以及 530 到 1700 kHz 範圍內的 117 個 AM 頻道 (使用 10 kHz 間距)。由於 HD 調頻使用相同的頻道空間,因此不會個別顯示。
目前可用的電台節目清單是平面式,因此不允許顯示分組方式,例如依據直接音訊廣播 (DAB) 集合分組。
常用清單中的項目可能無法調整。舉例來說,如果某個指定的節目超出範圍,收音機應用程式可能會或可能不會偵測到是否可以事先調到該項目。否則,系統可能不會將該項目標示為可播放。
為了識別頂層資料夾,系統會採用與藍牙相同的機制。也就是說,
MediaDescription 物件的 Extras 組合包含了與調諧器相關的欄位,就像藍牙與
EXTRA_BT_FOLDER_TYPE 一樣。在廣播電台的情況下,這會導致在公開 API 中定義下列新欄位:
EXTRA_BCRADIO_FOLDER_TYPE = "android.media.extra.EXTRA_BCRADIO_FOLDER_TYPE"。下列任一值:BCRADIO_FOLDER_TYPE_PROGRAMS = 1。目前可用的方案。BCRADIO_FOLDER_TYPE_FAVORITES = 2. 我的最愛。BCRADIO_FOLDER_TYPE_BAND = 3:指定頻帶的所有實體頻道。
由於所有相關資料都符合現有的
MediaBrowser.MediaItem配置,因此您不需要定義任何特定電台的自訂中繼資料欄位:- 節目名稱 (RDS PS、DAB 服務名稱)。
MediaDescription.getTitle。 - FM 頻率。 URI (請參閱 ProgramSelector) 或
MediaDescription.getTitle(如果項目位於BROADCASTRADIO_FOLDER_TYPE_BAND資料夾中)。 - 無線電專屬 ID (RDS PI、DAB SId)。
MediaDescription.getMediaUri已剖析為 ProgramSelector。
一般來說,您不需要為目前節目或「我的最愛」清單中的項目擷取 FM 頻率 (因為用戶端應以媒體 ID 運作)。不過,如果需要這類資訊 (例如為了顯示目的),則會出現在 URI 中,並可剖析為
ProgramSelector。不過,我們不建議使用 URI 選取目前工作階段中的項目。詳情請參閱ProgramSelector。為避免效能或 Binder 相關問題,MediaBrowser 服務必須支援分頁:
注意:根據預設,系統會在
onLoadChildren()變化版本中實作分頁功能,但不會處理選項。所有類型清單 (原始頻道、已找到的節目和收藏內容) 中的相關項目可能會有不同的 mediaId (這取決於電台應用程式;支援程式庫會提供不同的 mediaId)。在大多數情況下,原始頻道和節目的 URI (以 ProgramSelector 表單表示) 不同 (沒有 RDS 的 FM 除外),但在節目和收藏內容之間的 URI 通常相同 (例如 AF 更新時除外)。
針對不同類型的清單項目使用不同的 mediaId,可讓您針對這些項目採取不同的動作。您可以依據最近選取的
MediaItem資料夾,在onSkipToNext上遍歷「收藏」清單或「所有節目」清單 (請參閱 MediaSession)。特殊音調操作
使用者可透過節目清單收聽特定電台,但無法提出「收聽 FM 電台」等一般要求,因為這可能會導致系統收聽 FM 頻帶上最近收聽過的電台。
為支援這類動作,部分頂層目錄會設定
FLAG_PLAYABLE標記 (以及資料夾的FLAG_BROWSABLE)。動作 轉到 發布方式 播放電台 任何電台頻道 startService(ACTION_PLAY_BROADCASTRADIO)
或
playFromMediaId(MediaBrowser.getRoot())播放 FM 廣播 任何 FM 頻道 播放 FM 頻帶的 mediaId。應用程式會決定要收看哪個節目,通常是從指定清單中最近收看的頻道。如要進一步瞭解
ACTION_PLAY_BROADCASTRADIO,請參閱「一般播放意圖」。探索和服務連線
PackageManager可以直接找到提供廣播電台樹狀結構的 MediaBrowserService。如要這麼做,請使用ACTION_PLAY_BROADCASTRADIO意圖 (請參閱「一般播放意圖」) 和MATCH_SYSTEM_ONLY標記呼叫resolveService。如要找出所有提供廣播電台服務的服務 (可能不只一個,例如 AM/FM 和衛星廣播電台),請使用queryIntentServices。已解析的服務也會處理
android.media.browse.MediaBrowserService繫結意圖。這項資訊已透過 GTS 驗證。如要連線至所選的 MediaBrowserService,請為特定服務元件和
connect建立MediaBrowser例項。建立連線後,您可以透過getSessionToken取得 MediaSession 的句柄。Radio 應用程式可限制在
onGetRoot服務實作中允許連線的用戶端套件。應用程式應允許系統應用程式連線,而無須加入許可清單。如要進一步瞭解許可清單,請參閱「接受 Google 助理應用程式套件和簽章」。如果在沒有支援此來源的裝置上安裝來源專屬應用程式 (例如廣播應用程式),該應用程式仍會宣稱自己處理
ACTION_PLAY_BROADCASTRADIO意圖,但其 MediaBrowser 樹狀結構不會包含廣播專屬標記。因此,如果客戶端想要檢查裝置上是否有特定來源,則必須:- 探索電台服務 (呼叫
resolveService即可取得ACTION_PLAY_BROADCASTRADIO)。 - 建立
MediaBrowser,然後連線至該項目。 - 使用
EXTRA_BCRADIO_FOLDER_TYPEextra 判斷是否存在MediaItem。
注意: 在多數情況下,用戶端必須掃描所有可用的 MediaBrowser 樹狀結構,才能偵測特定裝置的所有可用來源。
頻帶名稱
樂團清單由一組頂層目錄代表,其中資料夾類型標記設為
BCRADIO_FOLDER_TYPE_BAND。其MediaItem的標題是代表樂團名稱的本地化字串。在多數情況下,這會與英文翻譯相同,但用戶端無法依據這項假設。為提供穩定的機制來查詢特定頻帶,我們為頻帶資料夾新增了額外標記
EXTRA_BCRADIO_BAND_NAME_EN。這是頻帶的非本地化名稱,只能使用下列預先定義值之一:AMFMDAB
如果樂團不在這個清單中,就不要設定樂團名稱標記。不過,如果頻道在清單中,則必須設定標記。高解析度調幅廣播不會列舉個別頻帶,因為它使用與調幅/調頻廣播相同的基礎媒體。
一般播放意圖
每個專門播放特定來源 (例如廣播電台或 CD) 的應用程式,都必須處理一般 play 意圖,才能從非活動狀態 (例如開機後) 開始播放某些內容。應用程式會自行決定如何選取要播放的內容,但通常會播放最近播放的廣播電台節目或 CD 音軌。每個音訊來源都有個別的意圖定義:
android.car.intent.action.PLAY_BROADCASTRADIOandroid.car.intent.action.PLAY_AUDIOCD:CD-DA 或 CD-Textandroid.car.intent.action.PLAY_DATADISC:光學資料光碟,例如 CD/DVD,但不是 CD-DA (可能是混合模式 CD)android.car.intent.action.PLAY_AUX:未指定 AUX 通訊埠android.car.intent.action.PLAY_BLUETOOTHandroid.car.intent.action.PLAY_USB:未指定 USB 裝置android.car.intent.action.PLAY_LOCAL:本機媒體儲存空間 (內建快閃記憶體)
我們選擇使用意圖來執行一般播放指令,因為意圖可以同時解決兩個問題:一般播放指令本身和服務探索。有了這類意圖,您就能在不開啟 MediaBrowser 工作階段的情況下,執行這類簡單動作。
服務探索其實是這些意圖解決的更重要問題。這樣一來,服務探索程序就會變得簡單明確 (請參閱「探索和服務連線」)。
為了讓部分用戶端的實作更容易,我們提供了另一種方式來發出這類播放指令 (也必須由無線電應用程式實作):使用根節點的 rootId 發出
playFromMediaId(用作 mediaId)。雖然根節點無法播放,但其 rootId 是任意字串,可做為 mediaId 使用。不過,用戶端不必瞭解這項細微差異。ProgramSelector
雖然
mediaId足以從MediaBrowserService中選取管道,但會與工作階段繫結,且不同提供者之間的一致性不一致。在某些情況下,用戶端可能需要絕對指標 (例如絕對頻率),才能在工作階段和裝置之間維持連線。在數位廣播電台時代,單憑頻率無法收聽特定電台。因此,請使用
ProgramSelector將頻道調諧至類比或數位頻道。ProgramSelector由兩個部分組成:- 主要 ID。特定電台的專屬 ID,不會變更,但可能無法調到該電台。例如 RDS PI 代碼,可翻譯為美國的呼號。
- 次要 ID:其他可用於調諧至該電台的 ID (例如頻率),可能包括其他無線電技術的 ID。舉例來說,DAB 電台可能會備有類比廣播。
如要讓
ProgramSelector符合MediaBrowser或MediaSession為基礎的解決方案,請定義 URI 結構定義來序列化。結構定義如下:broadcastradio://program/<primary ID type>/<primary ID>? <secondary ID type>=<secondary ID>&<secondary ID type>=<secondary ID>
在這個範例中,次要 ID 部分 (問號 (
?) 後方) 為選用項目,可移除,以提供可用於mediaId的穩定 ID。例如:broadcastradio://program/RDS_PI/1234?AMFM_FREQUENCY=88500&AMFM_FREQUENCY=103300broadcastradio://program/AMFM_FREQUENCY/102100broadcastradio://program/DAB_SID_EXT/14895264?RDS_PI=1234
program的權威部分 (又稱為主機) 可讓日後的配置文件擴充功能有更多空間。在 HAL 2.x 定義的IdentifierType中,ID 類型字串會精確指定為其名稱,而值格式則為十進位或十六進位 (含0x前置字元) 數字。所有供應商專屬 ID 都會以
VENDOR_前置字串表示。例如,VENDOR_0代表VENDOR_START,VENDOR_1代表VENDOR_START加 1。這類 URI 僅適用於產生這些 URI 的無線電硬體,無法在不同原始設備製造商 (OEM) 製造的裝置之間轉移。這些 URI 必須指派給頂層廣播資料夾下的每個 MediaItem。此外,MediaSession 必須同時支援
playFromMediaId和playFromUri。不過,URI 主要用於擷取無線電中繼資料 (例如 FM 頻率) 和永久性儲存空間。我們無法保證 URI 可供所有媒體項目使用 (例如,當架構尚未支援主要 ID 類型時)。另一方面,Media ID 一律有效。不建議用戶端使用 URI 從目前的 MediaBrowser 工作階段選取項目。請改用playFromMediaId。不過,這並非服務應用程式可選擇的做法,且缺少的 URI 僅適用於有充分理由的情況。初始設計使用單一冒號,而非在配置部分後方使用
://序列。不過,android.net.Uri不支援絕對階層 URI 參照的情況。其他來源類型
其他音訊來源的處理方式也類似。例如外部音源輸入和音訊 CD 播放器。
單一應用程式可能會提供多種來源。在這種情況下,建議您為每種來源類型建立個別的 MediaBrowserService。即使在設定中有多個服務來源/MediaBrowserService,我們仍強烈建議在單一應用程式中使用單一 MediaSession。
音訊 CD
與音訊 CD 相似,提供此類光碟的應用程式會透過 MediaBrowser 提供單一可瀏覽的項目 (如果系統有 CD 變換器,則可提供多個項目),而該項目會包含特定 CD 的所有曲目。如果系統不知道每張 CD 上的曲目 (例如,當所有磁碟一次插入卡匣時,系統不會讀取所有磁碟),則整張磁碟的 MediaItem 就會是
PLAYABLE,而不是BROWSABLE加PLAYABLE。如果特定插槽中沒有磁碟,該項目就不會是PLAYABLE或BROWSABLE(但每個插槽都必須出現在樹狀結構中)。
圖 3 音訊 CD 樹狀結構。 這些項目的標記方式與廣播電台資料夾類似,會包含 MediaDescription API 中定義的額外欄位:
EXTRA_CD_TRACK:音訊 CD 上的每個MediaItem,以 1 為基底的曲目編號。EXTRA_CD_DISK:以 1 為基底的磁碟編號。
對於啟用 CD-Text 的系統和相容的磁碟,頂層 MediaItem 會具有磁碟的標題。同樣地,曲目的 MediaItems 會包含曲目名稱。
輔助輸入
提供輔助輸入的應用程式會公開 MediaBrowser 樹狀結構,其中包含一個項目 (或多個項目,如果存在多個通訊埠),代表 AUX 輸入通訊埠。相應的 MediaSession 會在取得
playFromMediaId要求後,取得媒體 ID 並切換至該來源。
圖 4. AUX 樹狀結構。 每個 AUX MediaItem 項目都會有額外的欄位
EXTRA_AUX_PORT_NAME,其值為未經本地化的端口名稱,不含「AUX」字詞。舉例來說,「AUX 1」會設為「1」、「AUX front」會設為「front」,而「AUX」會設為空字串。在非英文語言代碼中,名稱標記會維持相同的英文字串。與EXTRA_BCRADIO_BAND_NAME_EN不同,這些值是由 OEM 定義,並未受限於預先定義的清單。如果硬體可偵測到連接至 AUX 連接埠的裝置,則只有在輸入連線時,硬體才應將 MediaItem 標示為
PLAYABLE。如果沒有任何裝置連接到這個通訊埠,硬體仍應列舉 (但不是PLAYABLE)。如果硬體沒有這類功能,則 MediaItem 一律必須設為PLAYABLE。其他欄位
定義下列欄位:
EXTRA_CD_TRACK = "android.media.extra.CD_TRACK"EXTRA_CD_DISK = "android.media.extra.CD_DISK"EXTRA_AUX_PORT_NAME = "android.media.extra.AUX_PORT_NAME"
用戶端需要檢查頂層 MediaItems,針對具有
EXTRA_CD_DISK或EXTRA_AUX_PORT_NAME額外欄位集的元素。詳細範例
以下範例說明此設計中所用來源類型的 MediaBrowser 樹狀結構。
廣播電台 MediaBrowserService (處理
ACTION_PLAY_BROADCASTRADIO):- 電台 (可瀏覽)
EXTRA_BCRADIO_FOLDER_TYPE=BCRADIO_FOLDER_TYPE_PROGRAMS- BBC One (可播放) URI:
broadcastradio://program/RDS_PI/1234?AMFM_FREQUENCY=90500 - ABC 88.1 (可播放) URI:
broadcastradio://program/RDS_PI/5678?AMFM_FREQUENCY=88100 - ABC 88.1 HD1 (可播放) URI:
broadcastradio://program/HD_STATION_ID_EXT/158241DEADBEEF?AMFM_FREQUENCY=88100&RDS_PI=5678 - ABC 88.1 HD2 (可播放) URI:
broadcastradio://program/HD_STATION_ID_EXT/158242DEADBEFE - 90.5 FM (可播放) - 沒有 RDSURI 的 FM:
broadcastradio://program/AMFM_FREQUENCY/90500 - 620 AM (可播放) URI:
broadcastradio://program/AMFM_FREQUENCY/620 - BBC One (可播放) URI:
broadcastradio://program/DAB_SID_EXT/1E24102?RDS_PI=1234
- BBC One (可播放) URI:
- 我的最愛 (可瀏覽、可播放)
EXTRA_BCRADIO_FOLDER_TYPE=BCRADIO_FOLDER_TYPE_FAVORITES- BBC One (可播放) URI:
broadcastradio://program/RDS_PI/1234?AMFM_FREQUENCY=101300 - BBC Two (無法播放)URI:
broadcastradio://program/RDS_PI/1300?AMFM_FREQUENCY=102100
- BBC One (可播放) URI:
- AM (可瀏覽、可播放):
EXTRA_BCRADIO_FOLDER_TYPE=BCRADIO_FOLDER_TYPE_BANDEXTRA_BCRADIO_BAND_NAME_EN="AM"- 530 AM (可播放) URI:
broadcastradio://program/AMFM_FREQUENCY/530 - 540 AM (可播放) URI:
broadcastradio://program/AMFM_FREQUENCY/540 - 550 AM (可播放) URI:
broadcastradio://program/AMFM_FREQUENCY/550
- 530 AM (可播放) URI:
- FM (可瀏覽、可播放):
EXTRA_BCRADIO_FOLDER_TYPE=BCRADIO_FOLDER_TYPE_BANDEXTRA_BCRADIO_BAND_NAME_EN="FM"- 87.7 FM (可播放) URI:
broadcastradio://program/AMFM_FREQUENCY/87700 - 87.9 FM (可播放) URI:
broadcastradio://program/AMFM_FREQUENCY/87900 - 88.1 FM (可播放) URI:
broadcastradio://program/AMFM_FREQUENCY/88100
- 87.7 FM (可播放) URI:
- DAB (可播放):
EXTRA_BCRADIO_FOLDER_TYPE=BCRADIO_FOLDER_TYPE_BANDEXTRA_BCRADIO_BAND_NAME_EN="DAB"
音訊 CD MediaBrowserService (處理
ACTION_PLAY_AUDIOCD):- 光碟 1 (可播放)
EXTRA_CD_DISK=1 - 光碟 2 (可瀏覽、可播放)
EXTRA_CD_DISK=2- 曲目 1 (可播放)
EXTRA_CD_TRACK=1 - 曲目 2 (可播放)
EXTRA_CD_TRACK=2
- 曲目 1 (可播放)
- 我的音樂 CD (可瀏覽、可播放)
EXTRA_CD_DISK=3- All By Myself (可播放)
EXTRA_CD_TRACK=1 - Reise, Reise (playable)
EXTRA_CD_TRACK=2
- All By Myself (可播放)
- 空白的空格 4 (無法播放)
EXTRA_CD_DISK=4
AUX MediaBrowserService (處理
ACTION_PLAY_AUX):- AUX 前端 (可播放)
EXTRA_AUX_PORT_NAME="front" - AUX 後 (可播放)
EXTRA_AUX_PORT_NAME="rear"