
Make all adapters relying on diffing unified into a DiffAdapter superclass that can then accurately respond to the new UpdateInstructions data. UpdateInstructions is still not fully used everywhere, but will be soon.
134 lines
No EOL
5.5 KiB
XML
134 lines
No EOL
5.5 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
|
xmlns:tools="http://schemas.android.com/tools">
|
|
|
|
<!-- Android 13 uses READ_MEDIA_AUDIO instead of READ_EXTERNAL_STORAGE -->
|
|
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
|
|
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32" />
|
|
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
|
<uses-permission android:name="android.permission.WAKE_LOCK" />
|
|
|
|
<!-- Bluetooth auto-connect functionality (Disabled until permission workflow can be made) -->
|
|
<!-- <uses-permission android:name="android.permission.BLUETOOTH" android:maxSdkVersion="30" />-->
|
|
<!-- <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" android:minSdkVersion="31" />-->
|
|
<!-- <uses-feature android:name="android.hardware.bluetooth" android:required="false"/>-->
|
|
|
|
<!-- Work around ExoPlayer requiring network permissions we do not use -->
|
|
<uses-permission
|
|
android:name="android.permission.ACCESS_NETWORK_STATE"
|
|
tools:node="remove" />
|
|
|
|
<queries />
|
|
|
|
<application
|
|
android:name=".Auxio"
|
|
android:allowBackup="true"
|
|
android:fullBackupContent="@xml/backup_descriptor"
|
|
android:icon="@mipmap/ic_launcher"
|
|
android:label="@string/info_app_name"
|
|
android:roundIcon="@mipmap/ic_launcher"
|
|
android:supportsRtl="true"
|
|
android:theme="@style/Theme.Auxio.App"
|
|
android:dataExtractionRules="@xml/data_extraction_rules"
|
|
android:appCategory="audio"
|
|
android:enableOnBackInvokedCallback="true"
|
|
tools:ignore="UnusedAttribute">
|
|
|
|
<activity
|
|
android:name=".MainActivity"
|
|
android:exported="true"
|
|
android:icon="@mipmap/ic_launcher"
|
|
android:launchMode="singleTask"
|
|
android:roundIcon="@mipmap/ic_launcher"
|
|
android:windowSoftInputMode="adjustPan">
|
|
|
|
<intent-filter>
|
|
<!-- Expose that we are a music player. -->
|
|
<action android:name="android.intent.action.MAIN" />
|
|
<action android:name="android.intent.action.MUSIC_PLAYER" />
|
|
|
|
<category android:name="android.intent.category.DEFAULT" />
|
|
<category android:name="android.intent.category.LAUNCHER" />
|
|
<category android:name="android.intent.category.APP_MUSIC" />
|
|
</intent-filter>
|
|
|
|
<intent-filter>
|
|
<!--
|
|
Signal that we can take audio of *any* format, file or content. This is important,
|
|
as some apps use this to determine if Auxio is eligible to be a default music
|
|
player.
|
|
-->
|
|
<action android:name="android.intent.action.VIEW" />
|
|
|
|
<category android:name="android.intent.category.DEFAULT" />
|
|
<category android:name="android.intent.category.BROWSABLE" />
|
|
|
|
<data android:scheme="content" />
|
|
<data android:scheme="file" />
|
|
|
|
<!-- Normal audio mime types + weird mime types -->
|
|
<data android:mimeType="audio/*" />
|
|
<data android:mimeType="application/ogg" />
|
|
<data android:mimeType="application/x-ogg" />
|
|
<data android:mimeType="application/itunes" />
|
|
</intent-filter>
|
|
</activity>
|
|
|
|
<!--
|
|
Service handling querying the media database, extracting metadata, and constructing
|
|
the music library.
|
|
-->
|
|
<service
|
|
android:name=".music.system.IndexerService"
|
|
android:foregroundServiceType="dataSync"
|
|
android:icon="@mipmap/ic_launcher"
|
|
android:exported="false"
|
|
android:roundIcon="@mipmap/ic_launcher" />
|
|
|
|
<!--
|
|
Service handling music playback, system components, and state saving.
|
|
-->
|
|
<service
|
|
android:name=".playback.system.PlaybackService"
|
|
android:foregroundServiceType="mediaPlayback"
|
|
android:icon="@mipmap/ic_launcher"
|
|
android:exported="false"
|
|
android:roundIcon="@mipmap/ic_launcher" />
|
|
|
|
<!--
|
|
Work around apps that blindly query for ACTION_MEDIA_BUTTON working.
|
|
See the class for more info.
|
|
-->
|
|
<receiver
|
|
android:name=".playback.system.MediaButtonReceiver"
|
|
android:exported="true">
|
|
<intent-filter>
|
|
<action android:name="android.intent.action.MEDIA_BUTTON" />
|
|
</intent-filter>
|
|
</receiver>
|
|
|
|
<!-- Receiver for bluetooth headset events -->
|
|
<!-- <receiver-->
|
|
<!-- android:name=".playback.system.BluetoothConnectReceiver"-->
|
|
<!-- android:exported="true">-->
|
|
<!-- <intent-filter>-->
|
|
<!-- <action android:name="android.bluetooth.a2dp.profile.action.CONNECTION_STATE_CHANGED" />-->
|
|
<!-- </intent-filter>-->
|
|
<!-- </receiver>-->
|
|
|
|
<!-- "Now Playing" widget. -->
|
|
<receiver
|
|
android:name=".widgets.WidgetProvider"
|
|
android:exported="false"
|
|
android:label="@string/lbl_playback">
|
|
|
|
<intent-filter>
|
|
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
|
|
</intent-filter>
|
|
|
|
<meta-data
|
|
android:name="android.appwidget.provider"
|
|
android:resource="@xml/widget_info" />
|
|
</receiver>
|
|
</application>
|
|
</manifest> |