我正在尝试使用media3,为此我遵循这里的教程:https://developer.android.com/guide/topics/media/media3/getting-started/playing-in-background
然而,当我运行我的代码,我有以下错误在这一行:
val sessionToken = SessionToken(this, ComponentName(this, PlaybackService::class.java))
java.lang.IllegalArgumentException: Failed to resolve SessionToken for ComponentInfo{com.example.euphonia/PlaybackService}. Manifest doesn't declare one of either MediaSessionService, MediaLibraryService, MediaBrowserService or MediaBrowserServiceCompat. Use service's full name.
事情已经在我的清单中正确声明了,如我的教程
所示<service
android:name="PlaybackService"
android:foregroundServiceType="mediaPlayback"
android:exported="true">
<intent-filter>
<action android:name="androidx.media3.session.MediaSessionService"/>
</intent-filter>
</service>
如何解决这个问题?
我已经复制了这个运行时错误,似乎你的服务声明是罪魁祸首:如果你的PlaybackService
类在一个包中(从错误看来是这样),你的服务声明应该考虑到这一点:
<service
android:name=".PlaybackService"
...
或使用其完全限定名
<service
android:name="com.example.euphonia.PlaybackService"
...