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)