Sharrit/app/src/main/AndroidManifest.xml
Bruno Charest 2b8134f5b7 feat: Add audio playback system with Media3 and comprehensive audio content classification
- Add Media3 dependencies (ExoPlayer, HLS, MediaSession, UI) for audio streaming
- Implement AudioPlayerService as MediaSessionService with foreground playback support
- Create AudioHandler for playback control and AudioMedia domain model with AudioContentType enum
- Add MiniPlayerBar and FullPlayerSheet UI components with play/pause, seek, and navigation controls
- Implement AudioClassifier with strict priority
2026-02-11 11:23:22 -05:00

146 lines
5.9 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK" />
<application
android:name=".ShaarItApp"
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.ShaarIt"
android:usesCleartextTraffic="true"
tools:targetApi="31">
<!-- Disable default WorkManager initialization to use HiltWorkerFactory -->
<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
android:exported="false"
tools:node="merge">
<meta-data
android:name="androidx.work.WorkManagerInitializer"
android:value="androidx.startup"
tools:node="remove" />
</provider>
<activity
android:name=".MainActivity"
android:exported="true"
android:label="@string/app_name"
android:theme="@style/Theme.ShaarIt.Splash"
android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<!-- Share Intent - Text -->
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
<!-- Share Intent - Markdown and Text Files -->
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/*" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="application/octet-stream" />
</intent-filter>
<!-- App Shortcuts -->
<meta-data
android:name="android.app.shortcuts"
android:resource="@xml/shortcuts" />
</activity>
<!-- Audio Player Service (Media3 MediaSessionService) -->
<service
android:name=".service.AudioPlayerService"
android:exported="true"
android:foregroundServiceType="mediaPlayback">
<intent-filter>
<action android:name="androidx.media3.session.MediaSessionService" />
</intent-filter>
</service>
<!-- Quick Settings Tile -->
<service
android:name=".service.AddLinkTileService"
android:exported="true"
android:label="@string/tile_add_link"
android:icon="@drawable/ic_launcher_foreground"
android:permission="android.permission.BIND_QUICK_SETTINGS_TILE">
<intent-filter>
<action android:name="android.service.quicksettings.action.QS_TILE" />
</intent-filter>
</service>
<!-- Widget Search Dialog Activity -->
<activity
android:name=".widget.WidgetSearchActivity"
android:exported="false"
android:theme="@style/Theme.AppCompat.Dialog" />
<!-- Legacy Widget (RemoteViews) -->
<receiver
android:name=".widget.ShaarliWidgetProvider"
android:exported="true"
android:label="@string/app_name">
<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>
<service
android:name=".widget.ShaarliWidgetService"
android:exported="false"
android:permission="android.permission.BIND_REMOTEVIEWS" />
<!-- Glance Widget: Recent Links (4×2) -->
<receiver
android:name=".widget.glance.RecentLinksWidgetReceiver"
android:exported="true"
android:label="@string/widget_recent_links_name">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/widget_recent_links_info" />
</receiver>
<!-- Glance Widget: Quick Stats (2×1) -->
<receiver
android:name=".widget.glance.QuickStatsWidgetReceiver"
android:exported="true"
android:label="@string/widget_quick_stats_name">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/widget_quick_stats_info" />
</receiver>
</application>
</manifest>