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

  <uses-permission android:name="android.permission.INTERNET" />
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
  <uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC" />
  <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />

  <!-- Camara y microfono para las videollamadas de Karvan.
       Se declaran aqui porque Android exige que la lista sea estatica, pero NO se
       conceden al instalar: son permisos peligrosos y se piden en tiempo de ejecucion
       la primera vez que se pulsa Llamar. Si nadie llama, no se pide nada y la app
       nunca accede a la camara ni al microfono. -->
  <uses-permission android:name="android.permission.CAMERA" />
  <uses-permission android:name="android.permission.RECORD_AUDIO" />
  <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />

  <!-- required=false para no excluir de la tienda a dispositivos sin camara o sin microfono -->
  <uses-feature android:name="android.hardware.camera" android:required="false" />
  <uses-feature android:name="android.hardware.microphone" android:required="false" />

  <application
      android:label="@string/app_name"
      android:icon="@mipmap/ic_launcher"
      android:allowBackup="false"
      android:fullBackupContent="false"
      android:networkSecurityConfig="@xml/network_security_config"
      android:supportsRtl="true"
      android:theme="@style/Theme.Oasis">

    <!-- El backend Node vive en su propio proceso: asi sobrevive en segundo plano
         y se puede reiniciar limpio (nodejs-mobile solo permite arrancar node una
         vez por proceso). -->
    <service
        android:name="net.laenre.oasis.NodeService"
        android:process=":node"
        android:exported="false"
        android:foregroundServiceType="dataSync" />

    <!-- La lista de configChanges tiene que ser completa: si falta una sola (y la
         que faltaba era smallestScreenSize), rotar destruye y recrea la Activity,
         el WebView se pierde y vuelve a cargar la URL, a veces antes de que el
         backend escuche. -->
    <activity
        android:name="net.laenre.oasis.MainActivity"
        android:exported="true"
        android:configChanges="orientation|screenSize|smallestScreenSize|screenLayout|density|keyboardHidden|keyboard|navigation|uiMode|fontScale|layoutDirection"
        android:launchMode="singleTask">
      <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
    </activity>

  </application>
</manifest>
