Files
Noxely/app/src/main/java/fr/tuxgyver/noxely/MainActivity.kt
T
tuxgyver 51b60cda70 Appairage du téléphone, en-têtes de licence (2.1.0)
Recopier un jeton de trente-trois caractères sur un clavier tactile n'était pas
un réglage, c'était une corvée. On ouvre désormais une fenêtre depuis le
serveur, on appuie sur Appairer côté téléphone, et c'est fait.

Le jeton n'est pas pour autant distribué : ouvrir la fenêtre l'exige déjà,
elle dure deux minutes, se referme dès qu'un appareil s'est servi, et ne
répond qu'à une adresse privée. Le champ de saisie reste là pour qui préfère
le coller.

Les cinquante fichiers de code portent en outre leur notice de licence, comme
la GPL le recommande. Elle est en français, comme le reste ; le texte qui fait
foi demeure celui de LICENSE, non traduit.
2026-09-13 20:15:14 +02:00

62 lines
2.1 KiB
Kotlin

/*
* Noxely — collecte côté serveur, écoute hors connexion côté mobile.
* Copyright © 2026 Johnny (tuxgyver)
*
* Ce programme est un logiciel libre : vous pouvez le redistribuer et le modifier
* selon les termes de la GNU General Public License, version 3 ou ultérieure,
* telle que publiée par la Free Software Foundation.
*
* Il est distribué dans l'espoir d'être utile, mais SANS AUCUNE GARANTIE.
* Voir le fichier LICENSE à la racine du dépôt pour le texte complet.
*/
package fr.tuxgyver.noxely
import android.Manifest
import android.content.pm.PackageManager
import android.os.Build
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.activity.result.contract.ActivityResultContracts
import androidx.core.content.ContextCompat
import fr.tuxgyver.noxely.ui.NoxelyRoot
import fr.tuxgyver.noxely.ui.theme.NoxelyTheme
class MainActivity : ComponentActivity() {
private val notificationPermission =
registerForActivityResult(ActivityResultContracts.RequestPermission()) { /* informatif */ }
override fun onCreate(savedInstanceState: Bundle?) {
enableEdgeToEdge()
super.onCreate(savedInstanceState)
val container = (application as NoxelyApp).container
container.player.connect()
askForNotificationsIfNeeded()
setContent {
NoxelyTheme {
NoxelyRoot(container)
}
}
}
override fun onDestroy() {
if (isFinishing) {
(application as NoxelyApp).container.player.release()
}
super.onDestroy()
}
/** La notification porte les commandes de lecture et la progression des téléchargements. */
private fun askForNotificationsIfNeeded() {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU) return
val granted = ContextCompat.checkSelfPermission(this, Manifest.permission.POST_NOTIFICATIONS) ==
PackageManager.PERMISSION_GRANTED
if (!granted) notificationPermission.launch(Manifest.permission.POST_NOTIFICATIONS)
}
}