27 Séries de jeux
NFC Communication
Compose Framework UI
Android 8+ Compatibilité

Télécharger l’APK Code source

Présentation

Amiibo Manager est une application Android qui permet de lire, sauvegarder et écrire des données Amiibo sur des tags NFC de type NTAG215. Elle inclut une bibliothèque complète couvrant 27 séries de jeux Nintendo et permet de gérer ses sauvegardes associées à des jeux spécifiques.

Captures d’écran

Fonctionnalités détaillées

Écran d’accueil

Dashboard avec 4 cartes d’action principales (Bibliothèque, Écrire, Lire, Sauvegardes), un indicateur d’état NFC (vert si activé, rouge si désactivé), et un carrousel des sauvegardes récentes.

Bibliothèque Amiibo

Tous les Amiibo organisés par série de jeux avec recherche en temps réel et catégories extensibles :

Série ID
Super Smash Bros. 00
Super Mario 01
Chibi-Robo! 02
Yoshi’s Woolly World 03
Splatoon 04
Animal Crossing 05
8-bit Mario 06
Skylanders 07
The Legend of Zelda 09
Shovel Knight 0A
Kirby 0C
Pokémon 0D
Mario Sports Superstars 0E
Monster Hunter 0F
BoxBoy! 10
Pikmin 11
Fire Emblem 12
Metroid 13
Mega Man 15
Diablo 16
Power Pros 17
Monster Hunter Rise 18
Yu-Gi-Oh! 19
Xenoblade 1A

Lecture NFC

Scan d’une figurine Amiibo physique ou d’un tag NFC existant. L’application détecte automatiquement la série et le personnage en lisant les octets d’identification (positions 84-89 du tag). Les données peuvent être sauvegardées avec un nom et un jeu associé.

Écriture NFC

Sélection d’un Amiibo depuis la bibliothèque ou restauration d’une sauvegarde. Écriture page par page sur un tag NTAG215 vierge avec gestion des lock bytes et pages de configuration.

Gestion des sauvegardes

Filtrage par jeu, restauration sur de nouveaux tags, suppression avec confirmation. 8 jeux pré-configurés : Super Smash Bros. Ultimate, Zelda: TotK, Zelda: BotW, Splatoon 3, Animal Crossing: NH, Super Mario Odyssey, Mario Kart 8 Deluxe.

Détails techniques NFC

L’application communique avec les tags NTAG215 (standard Amiibo Nintendo) :

Spécification Détail
Format tag NTAG215
Taille totale 540 octets (135 pages x 4 octets)
Pages de données Pages 3 à 129 (données Amiibo)
Lock bytes Page 130 (verrous dynamiques)
Pages config Pages 131-132 (CFG0, CFG1)
Protocoles MIFARE Ultralight + NFC-A (fallback)
Commande lecture 0x30 (READ)
Commande écriture 0xA2 (WRITE)

Double protocole : l’application tente d’abord MIFARE Ultralight (API simple), puis bascule sur les commandes NFC-A brutes pour une compatibilité maximale.

Architecture technique

AmiiboManager/
├── data/
│   ├── Amiibo.kt              # Modèle Amiibo (id, nom, série, fichier)
│   ├── AmiiboSave.kt          # Sauvegarde (540 octets + métadonnées)
│   ├── Game.kt                # Jeu associé (8 pré-configurés)
│   ├── AmiiboIdentifier.kt    # Extraction ID depuis les octets NFC
│   ├── AppDatabase.kt         # Base Room avec type converters
│   └── AmiiboSaveDao.kt       # Requêtes d'accès aux sauvegardes
├── nfc/
│   └── NfcManager.kt          # Lecture/écriture NFC bas niveau
├── ui/
│   ├── HomeScreen.kt          # Dashboard principal
│   ├── LibraryScreen.kt       # Bibliothèque par séries
│   ├── WriteScreen.kt         # Écriture sur tag
│   ├── ReadScreen.kt          # Lecture de tag
│   ├── SavesScreen.kt         # Gestion des sauvegardes
│   └── theme/                 # Thème Material 3
└── util/
    └── AmiiboFileManager.kt   # Gestion des fichiers .nfc/.bin

Technologies utilisées

Technologie Utilisation
Kotlin Langage principal
Jetpack Compose UI déclarative avec Material Design 3
Hilt (Dagger) Injection de dépendances
Room 2.6 Base de données locale avec type converters (ByteArray, Date)
Android NFC API Communication matérielle bas niveau
Kotlin Coroutines Opérations I/O asynchrones (Dispatchers.IO)
Navigation Compose Navigation multi-écrans
StateFlow Gestion réactive de l’état UI

Ce que j’ai appris

  • Communication NFC bas niveau avec les protocoles MIFARE Ultralight et NFC-A
  • Architecture MVVM complète avec injection de dépendances (Hilt)
  • Développement d’interfaces modernes avec Jetpack Compose et Material 3
  • Gestion du foreground dispatch NFC et du cycle de vie Android
  • Manipulation de données binaires (ByteArray) et conversion d’identifiants hexadécimaux
  • Persistance complexe avec Room (type converters pour ByteArray et Date)