apps\player\src\main\AndroidManifest.xml¶
源码路径:
apps\player\src\main\AndroidManifest.xml· 59 行
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.INTERNET" />
<!-- 播放服务要挂前台;mediaPlayback 是 Android 14 要求的类型声明 -->
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<!-- 音频焦点/媒体键由 MediaSession 处理,但需要这条来接收媒体键广播 -->
<uses-permission android:name="android.permission.MEDIA_CONTENT_CONTROL" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<application
android:name=".PlayerApp"
android:label="NFarms Player"
android:icon="@mipmap/ic_launcher"
android:allowBackup="false"
android:theme="@style/Theme.Nfarms">
<activity
android:name=".MainActivity"
android:exported="true"
android:configChanges="orientation|screenSize|keyboardHidden|uiMode"
android:theme="@style/Theme.Nfarms">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!-- MediaSessionService 自己会 startForeground,不用我们再写通知 -->
<service
android:name=".play.PlaybackService"
android:exported="true"
android:foregroundServiceType="mediaPlayback">
<intent-filter>
<action android:name="androidx.media3.session.MediaSessionService" />
<action android:name="android.media.browse.MediaBrowserService" />
</intent-filter>
</service>
<!--
媒体按键接收器 —— **没有它,耳机/蓝牙的播放暂停键不生效**。
MediaSessionCompat 会打印
"Couldn't find a unique registered media button receiver"
然后静默忽略所有媒体键;而系统在 App 被杀、MediaSession 还没重建时
也需要一个接收器把 ACTION_MEDIA_BUTTON 转发回服务。
这个类由 media3-session 提供,声明在清单里即可,不用写代码。
-->
<receiver
android:name="androidx.media3.session.MediaButtonReceiver"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MEDIA_BUTTON" />
</intent-filter>
</receiver>
</application>
</manifest>