我正在尝试在我现有的应用程序中添加Android自动功能。这是一个消息应用程序,但有些消息有音频附件。到目前为止,我已经成功地创建了一个CarAppService来显示消息本身,但是我似乎无法让音频播放连接到Android (这样它就可以绑定到一个媒体会话,并在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设置为创建媒体会话,使用现有的ExoPlayer实例,并使用正确的MediaLibrarySession.Callback初始化。但是MediaLibraryService (或MediaBrowserService)的‘`onCreate()’方法从未被调用。
我遗漏了什么?在这个汽车应用程序中,我需要做些什么来使它绑定到媒体浏览器服务中吗?
发布于 2022-11-17 23:23:29
我搞清楚了发生了什么,问题主要是因为Android汽车几乎完全缺乏文档。正如我在操作中所说的,我设置了两个不同的服务:CarAppService和MediaBrowserService。正因为如此,我的应用程序在AA中被显示了两次(两个图标启动了两个完全不同版本的应用程序)。因此,每个服务都被视为一个完全独立的应用程序。一旦我意识到,我为清单中的每个服务创建了不同的图标和标签,所以至少现在我能够区分它们。
在启动MediaBrowserService时,它会按预期的方式工作--它会自动绑定到服务上,并允许用户浏览媒体文件(就好像它只是一个简单的媒体播放器应用程序一样)。
但是,即使启动了另一个(这是我最初发布的那个),我也不得不手动创建一个媒体浏览器客户机,并让它使用MediaBrowserCompat绑定到媒体浏览器服务。
我还想出了一种隐藏MediaBrowserService图标的方法,但仍然保留了在后台进行回报之前使用它的功能。这可以通过从Manifest中删除该服务的<intent-filter>组件来完成。这样做的唯一问题是,我们也失去了Android的回报控制,因此媒体播放时没有问题,但它必须由CarAppService来控制,这就排除了在后台控制它的选择。
https://stackoverflow.com/questions/74383128
复制相似问题