El dev ya trae Telefono (llamadas uno a uno, buzon de voz) y Salas (hasta 50, con video, grabacion y emision). La rama quita su modulo propio de salas y llamadas: modelo, vista, JS de cliente, CSS, rutas, credenciales TURN, pruebas y textos. - el router propio pasa a llamarse fork_routes.js, sin Karvan - el audio, la camara y la emision de Android se enchufan desde main.js con setAudioFactory/setVideoFactory/setStreamFactory, que exporta el propio dev; SSB_server.js vuelve a tener su linea original - Clear-SNH.css y modules_view.js vuelven a ser identicos a los del dev - el workflow acampada y la config de serie cambian Karvan por Telefono y Salas - README y guia: las llamadas son las del dev; antes de hacer un modulo propio, mirar si el dev ya lo tiene
64 lines
3.3 KiB
XML
64 lines
3.3 KiB
XML
<?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" />
|
|
<!-- descubrir otros moviles en la misma wifi: el anuncio LAN de SSB va por UDP
|
|
broadcast/multicast, y Android lo filtra si no se coge un MulticastLock -->
|
|
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
|
|
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
|
|
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
|
<!-- solo para guardar descargas en Android 9 o anterior; desde el 10 no hace falta -->
|
|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="28" />
|
|
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC" />
|
|
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
|
|
|
|
<!-- Camara y microfono para el Telefono y las Salas de Oasis.
|
|
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 llama o se entra en una sala. 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"
|
|
android:windowSoftInputMode="adjustResize">
|
|
<intent-filter>
|
|
<action android:name="android.intent.action.MAIN" />
|
|
<category android:name="android.intent.category.LAUNCHER" />
|
|
</intent-filter>
|
|
</activity>
|
|
|
|
</application>
|
|
</manifest>
|