- Architecture système
Les applications multi-appareils nécessitent une segmentation claire des rôles fonctionnels. Les appareils interagissent selon leurs capacités matérielles :
- Téléphones : Gestion des interactions utilisateur et affichage des données
- Montres connectées : Acquisition et traitement de données biométriques
- Enceintes intelligentes : Réponse vocale et contrôle d'objets IoT
2.1 Stratégie de planification distribuée
Exemple de mise en œuvre avec la bibliothèque distribuée :
import { DistributedScheduler } from '@harmony/distributed';
class TaskManager {
deployTask(deviceIdentifier: string, operationID: string): void {
const task = new DistributedScheduler({
operationID,
targetDevice: deviceIdentifier,
configuration: { priority: 'high', timeout: 3000 },
});
task.execute().then(() => {
console.log(`Opération ${operationID} lancée sur ${deviceIdentifier}`);
}).catch(error => {
console.error(`Échec de l'exécution : ${error.message}`);
});
}
}
- Configuration des modules
3.1 Conventions de nommage
Utilisation de formats inversés pour les paquets :
com.example.multiDeviceApp
Chaque module doit avoir un espace de noms distinct pour faciliter l'évolutivité.
3.2 Adaptation des icônes
Dans le fichier module.json5 :
{
"abilities": [
{
"icon": "$media:device_logo",
"label": "$string:device_name"
}
]
}
- Composants UI embarqués
4.1 Principes de conception
Interface simplifiée pour les appareils portables avec :
- Éléments graphiques légers
- Temps de réponse < 100ms
- Chargement différé des données secondaires
4.2 Exemple de composant
@Entry
@Component
struct VitalSignsDisplay {
build() {
Column() {
Text('Évaluation biométrique')
Button('Démarrer').onClick(() => {
this.initiateDataCapture();
});
}
}
initiateDataCapture() {
// Logique métier spécifique
}
}
- Gestion des Want explicites et implicites
5.1 Configuration explicite
Exemple pour lancement direct d'un module :
const launchRequest = {
packageName: 'com.example.deviceManager',
targetModule: 'BiometricModule',
metadata: {
operation: 'startMonitoring'
}
};
- Configuration des appareils et permissions
6.1 Spécification des types d'appareils
Dans module.json5 :
{
"supportedDeviceTypes": ["wearable", "tablet", "speaker", "tv"]
}
6.2 Gestion des permissions
Déclaration dynamique des accès :
{
"requiredPermissions": [
"ohos.permission.SENSORS"
]
}
- Intégration de AppStartup
7.1 Configuration des tâches
{
"initializationTasks": [
{
"name": "DataSync",
"threadPool": "background"
}
]
}
- Utilisation avancée du contexte
8.1 Gestion des chemins de fichiers
const appDir = context.getApplicationDataDirectory();
8.2 Communication cross-composant
const eventManager = new EventDispatcher();
eventManager.publish("deviceStatus", { status: "connected" });
eventManager.subscribe("deviceStatus", (data) => {
console.log("État reçu :", data.status);
});