簡體   English   中英

Android Auto 不會自動綁定到 MediaBrowserService 或 MediaLibraryService

[英]Android Auto isn't automatically binding to MediaBrowserService or MediaLibraryService

我正在嘗試將 Android 自動功能添加到我現有的應用程序中。 這是一款消息傳遞應用程序,但有些消息帶有音頻附件。 到目前為止,我已經成功地創建了一個CarAppService來顯示消息本身,但我似乎無法讓音頻播放連接到 Android Auto(因此它綁定到 aa media session 並顯示播放控件在 Android 汽車儀表板中)。

我按照此處的說明進行操作,並且還嘗試使用新的 Media3 庫(使用此處的示例代碼),但似乎都沒有激活MediaBrowserService (如果是 Media3,則為MediaLibraryService )。

我有前台服務權限和清單中聲明的瀏覽器服務

<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />

<meta-data android:name="com.google.android.gms.car.notification.SmallIcon"
           android:resource="@drawable/ic_auto_icon" />

        <service
            android:name=".auto.MediaService"
            android:foregroundServiceType="mediaPlayback"
            android:exported="true">
            <intent-filter>
                <action android:name="androidx.media3.session.MediaSessionService"/>
                <action android:name="android.media.browse.MediaBrowserService"/>
            </intent-filter>
        </service>

我已將MediaLibraryService全部設置為創建媒體 session,使用我現有的ExoPlayer實例,並使用適當的MediaLibrarySession.Callback進行初始化。 但是 MediaLibraryService(或 MediaBrowserService)的“onCreate()”方法永遠不會被調用。

我錯過了什么? 我需要在汽車應用程序本身中做些什么才能使其綁定到媒體瀏覽器服務嗎?

我弄清楚發生了什么,問題基本上是由於幾乎完全缺少 Android Auto 的文檔。 正如我在 OP 中所說,我設置了兩種不同的服務: CarAppServiceMediaBrowserService 因此,我的應用程序在 AA 中顯示了兩次(2 個圖標啟動了 2 個完全不同版本的應用程序)。 因此,每項服務都被視為一個完全獨立的應用程序。 一旦我意識到這一點,我就為清單中的每個服務創建了不同的圖標和標簽,所以至少現在我能夠區分它們。

啟動MediaBrowserService時,它按預期運行 - 它自動綁定到服務,並允許用戶瀏覽媒體文件(就好像它只是一個簡單的媒體播放器應用程序一樣)。

但即使啟動另一個(我最初發布的那個),我也必須手動創建一個媒體瀏覽器客戶端,並使用MediaBrowserCompat將其綁定到媒體瀏覽器服務。

我還想出了一種方法來隱藏MediaBrowserService圖標,但仍然保留在后台回報之前使用它的功能。 這可以通過從清單中刪除該服務的<intent-filter>組件來完成。 這樣做的唯一問題是我們也失去了 Android Auto 的回報控制,所以媒體播放沒有問題,但它必須由 CarAppService 控制,這消除了在后台控制它的選項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM