<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.lemenzo.clock">

    <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.USE_EXACT_ALARM" />
    <uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT" />
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK" />
    <!-- Optional, local-only upcoming-event integration. Requested at runtime only. -->
    <uses-permission android:name="android.permission.READ_CALENDAR" />

    <application
        android:name=".ClockApplication"
        android:allowBackup="false"
        android:fullBackupContent="false"
        android:dataExtractionRules="@xml/data_extraction_rules"
        android:directBootAware="true"
        android:icon="@mipmap/ic_launcher"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:label="@string/app_name"
        android:localeConfig="@xml/locale_config"
        android:supportsRtl="true"
        android:theme="@style/LemenzoClockTheme">

        <activity
            android:name=".ClockActivity"
            android:exported="true"
            android:launchMode="singleTop">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <!-- Android AlarmClock contract: SET_* is permission protected. -->
        <activity-alias
            android:name=".SetAlarmIntentActivity"
            android:targetActivity=".ClockActivity"
            android:exported="true"
            android:permission="com.android.alarm.permission.SET_ALARM">
            <intent-filter>
                <action android:name="android.intent.action.SET_ALARM" />
                <action android:name="android.intent.action.SET_TIMER" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity-alias>

        <!-- SHOW/SNOOZE/DISMISS are intentionally not gated by SET_ALARM. -->
        <activity-alias
            android:name=".ClockApiIntentActivity"
            android:targetActivity=".ClockActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.SHOW_ALARMS" />
                <action android:name="android.intent.action.SHOW_TIMERS" />
                <action android:name="android.intent.action.SNOOZE_ALARM" />
                <action android:name="android.intent.action.DISMISS_ALARM" />
                <action android:name="android.intent.action.DISMISS_TIMER" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity-alias>

        <activity android:name=".alarm.AlarmEditorActivity" android:exported="false" />
        <activity android:name=".settings.SettingsActivity" android:exported="false" />
        <activity
            android:name=".alarm.AlarmRingingActivity"
            android:excludeFromRecents="true"
            android:exported="false"
            android:showWhenLocked="true"
            android:turnScreenOn="true"
            android:theme="@style/LemenzoClockAlarmTheme" />
        <activity
            android:name=".timer.TimerRingingActivity"
            android:excludeFromRecents="true"
            android:exported="false"
            android:showWhenLocked="true"
            android:turnScreenOn="true"
            android:theme="@style/LemenzoClockAlarmTheme" />
        <activity
            android:name=".bedtime.BedtimeSunriseActivity"
            android:excludeFromRecents="true"
            android:exported="false"
            android:showWhenLocked="true"
            android:turnScreenOn="true"
            android:theme="@style/LemenzoClockSunriseTheme" />
        <activity
            android:name=".bedtime.BedtimeWakeActivity"
            android:excludeFromRecents="true"
            android:exported="false"
            android:showWhenLocked="true"
            android:turnScreenOn="true"
            android:theme="@style/LemenzoClockAlarmTheme" />

        <service
            android:name=".alarm.AlarmService"
            android:exported="false"
            android:foregroundServiceType="mediaPlayback" />
        <service
            android:name=".timer.TimerService"
            android:exported="false"
            android:foregroundServiceType="mediaPlayback" />
        <service
            android:name=".bedtime.SleepSoundService"
            android:exported="false"
            android:foregroundServiceType="mediaPlayback" />
        <service
            android:name=".bedtime.BedtimeWakeService"
            android:exported="false"
            android:foregroundServiceType="mediaPlayback" />

        <receiver android:name=".alarm.AlarmReceiver" android:exported="false" />
        <receiver android:name=".timer.TimerReceiver" android:exported="false" />
        <receiver android:name=".bedtime.BedtimeReceiver" android:exported="false" />
        <receiver android:name=".bedtime.BedtimeWakeReceiver" android:exported="false" />


        <receiver android:name=".widget.LemenzoClockWidgetProvider" android:exported="true">
            <intent-filter><action android:name="android.appwidget.action.APPWIDGET_UPDATE" /></intent-filter>
            <meta-data android:name="android.appwidget.provider" android:resource="@xml/lemenzo_clock_widget_info" />
        </receiver>

        <receiver android:name=".receivers.BootReceiver" android:exported="true" android:directBootAware="true">
            <intent-filter android:priority="1000">
                <action android:name="android.intent.action.BOOT_COMPLETED" />
                <action android:name="android.intent.action.LOCKED_BOOT_COMPLETED" />
            </intent-filter>
        </receiver>
        <receiver android:name=".receivers.TimeChangeReceiver" android:exported="true" android:directBootAware="true">
            <intent-filter>
                <action android:name="android.intent.action.TIME_SET" />
                <action android:name="android.intent.action.TIMEZONE_CHANGED" />
                <action android:name="android.intent.action.DATE_CHANGED" />
            </intent-filter>
        </receiver>
    </application>
</manifest>
