3. Les produits bada
Famille WVGA
Des smartphones premium pour Famille HVGA
utilisateurs intensifs
Des smarpthones accessibles pour Famille WQVGA
Ecran WVGA
démocratiser les usages
UI 32 bits & transparences Des smartphones entrée de gamme
Ecran HVGA
pour tous
Multitouch 6 points
UI 32 bits & transparences
OpenGL ES 1.1 + 2.0 Ecran WQVGA
Multitouch 5 points
Multiples capteurs UI 16 bits sans transparence
OpenGL ES 1.1 + 2.0
Connectivité complète Multitouch 2 points
Pas de boussole ni tilt
HTTP Live Streaming Pas d’OpenGL
Connectivité complète
Capteurs optionnels
HTTP Live Streaming
Connectivité complète
Pas de Live Streaming
4. Les sites Web
developer.bada.com
Le site de référence pour le seller.samsungapps.com
développeur d’application
L’interface de gestion des @samsungbada sur Twitter
Téléchargement du SDK
applications commercialisées
Génération des manifestes Le flux d’information live
Guidelines éditeur
concernant l’univers bada
Documentation en ligne
Soumission des applications
Tutoriels et exemples News développeurs
Rapport de test
Forum de support Alertes sur les nouveaux
Marketing des applications articles ou outils disponibles
Premium Support Service sur developer.bada.com
Rapports financiers
Spécifications des mobiles
Questions utilisateurs
Support éditeur
Au choix :
- Utilisation du même compte
- Utilisation de comptes développeur / éditeur différents
6. Le SDK bada
Basé sur Eclipse, l’IDE permet de réaliser toutes les tâches liées au
développement : codage, UI, compilation, test sur émulateur ou sur
un terminal, debugging et optimisation …
UI Builder
Un outil visuel pour créer votre Emulateur
interface graphique
Testez vos développements Perf. Analyzer + Profiler
Création graphique des Forms
directement sur votre ordinateur
Placements des contrôles Un outil de monitoring pour
Support des trois familles
optimiser votre application
Choix des visuels
Emulation des boutons
Actions (Events) supportées Sur émulateur ou terminal
Event injector :
Insertion du code des Events Consommation mémoire
- Appels, messages, réseau
Génération du XML - Localisation (GPS) Système de fichiers
- Capteurs (Proximity, Tilt …) Utilisation base de données
Plusieurs résolutions gérées - Système (batterie, casque …)
- NFC Différentes vues disponibles
Alertes : fuites de mémoire …
Temps passé par méthode
7. Trois bases possibles pour votre application
Développement C++
Utilisez très simplement toutes les Développement Web
APIs natives de bada
Capitalisez sur votre expérience Développement Flash
Accès à toutes les APIs
des applications Web
UI builder WYSIWYG & C++ Intégrez vos créations Flash dans
HTML5, CSS, composants UI
une application bada
Grand choix de composants UI
JavaScript + approche Objets
Contenu Flash + ActionScript
Services du terminal
Interaction avec le système
accessibles via APIs WAC
via APIs dédiées
Trois types de développements différents pour que chaque
développeur puisse tirer parti de son expérience passée.
Des APIs toujours disponibles pour pouvoir utiliser les fonctions et
les capteurs du mobile.
9. Aperçu du process de développement
Création du manifeste Développement Test
developer.bada.com
developer.bada.com
developer.bada.com
Déclaration des privilèges Option 1 : C++ Sur l’émulateur ou via le RTL
Pré-requis HW Option 2 : Flash Sur des terminaux
Terminaux cibles Option 3 : Web Profiling / Resource monitor
Mise à jour
seller.samsungapps.com
seller.samsungapps.com
seller.samsungapps.com
Application commerciale Certification par Samsung Soumission de l’application
Suivi des statistiques Sur tous les terminaux cibles Saisie des infos de publication
Promotions, bannières Dans tous les pays cibles Choix des pays de diffusion
Questions des utilisateurs Rapport de test détaillé Choix du prix
10. Création du manifeste
Création du manifeste Choix du numéro de version
developer.bada.com
Déclaration des privilèges Choix de la version d’API cible
Pré-requis HW Les différentes versions d’OS sont rétro-compatibles !
Terminaux cibles
Choix du type de développement
Sélection des groupes de privilèges
Sélection des terminaux cibles
Certaines APIs requièrent des privilèges
Nécessaire pour bada 1.x, géré automatiquement
Certains privilèges sont réservés aux
pour bada 2.0
développeurs de statut Partner.
On peut ajouter ou enlever des privilèges à tout
moment, il suffit de régénérer un manifeste.
Téléchargement du fichier XML
A intégrer au projet dans l’IDE
Interdiction formelle de modifier le fichier
manuellement, tout changement doit être effectué
sur developer.bada.com
11. Développement
Développement Création du projet dans l’IDE
developer.bada.com
Option 1 : C++ Intégration du manifeste
Option 2 : Flash
Option 3 : Web
Développement
C++, Web ou Flash au choix
Possibilité de remplacer le manifeste, pour intégrer
des privilèges différents par exemple
Support
Documentation complète dans le SDK
Multiples applications de démonstration
Ressources en ligne sur developer.bada.com :
Exemples de code
Tutoriels vidéo
Premium Support Service
12. Test
Test Compilation
developer.bada.com
Sur l’émulateur ou via le RTL Run as > Emulator
Sur des terminaux
Test immédiat sur émulateur
Profiling / Resource monitor Event Injector pour simuler tous les événements
systèmes : appels, position gps, accéléromètre …
Préparation du terminal
Version logicielle adaptée
Installation du certificat de test
Configuration du port USB et connexion
Installation à distance
Installation du Test Kit depuis Samsung Apps
Configuration du Test Kit sur developer.bada.com Run as > Target
Packaging et upload du binaire de test
Déploiement OTA sur les terminaux autorisés L’application est installée et exécutée
Recette facilitée Les traces sont affichées dans la console
Les outils de profiling sont utilisables
13. Soumission de l’application
Packaging
seller.samsungapps.com
Soumission de l’application
Depuis l’IDE, en configuration Target-Release
Saisie des infos de publication
Choix des pays de diffusion
Connexion au Seller Office
Choix du prix
Avec le compte développeur ou éditeur
Edit Application
Add New Application Possibilité de modifier la fiche existante
Upload d’un nouveau package
Création de la fiche Samsung Apps incluant : Mise à jour du manifeste
Titre de l’application Même AppID
Catégorie Numéro de version supérieur
Restriction d’âge éventuelle
Prix
Description + Tags
Icône (identique à celle du menu) Résultat de la certification
Captures d’écran
Vidéo de présentation (optionnel) De 7 à 10 jours ouvrés
Période de vente Application mise en ligne si certification OK
Pays cibles Mise à jour nécessaire si certification refusée
Terminaux cibles Guidelines disponibles via le Seller Office
14. Certification par Samsung
Soumission de l’application
seller.samsungapps.com
Certification par Samsung
Sur tous les terminaux cibles Certification du contenu
Dans tous les pays cibles
Vérification du contenu sans test technique
Rapport de test détaillé Guidelines disponibles via le Seller Office
Pas de jeux d’argent
Catégorie d’âge correcte
Disclaimers (Push, Localisation…)
Copyright de marques
Facturation via Samsung Apps uniquement
Etc
Vérification du fonctionnement
Dans tous les pays cibles
Sur tous les terminaux cibles
Disponibilité des contenus en ligne (compte ?)
Gestion des interruptions Rapport de test
Respect du cycle de vie
De 7 à 10 jours ouvrés
Dans tous les cas un rapport est édité
Deux types de retours :
Defects : à corriger impérativement
Recommandations : avertissements
15. Application commerciale
Application mise en ligne
seller.samsungapps.com
Application commerciale
Suivi des statistiques Consultation des statistiques
Promotions, bannières Nombre de téléchargements
Questions des utilisateurs Bilan financier
Upload de bannières
Elles pourront être utilisées par Samsung pour
promouvoir l’application :
Promotions Dans Samsung Apps sur les mobiles
Dans Samsung Apps sur le web
Possibilité de changer temporairement le prix Dans Samsung Apps sur Kies
d’une application
L’ancien prix apparait barré pour montrer le
caractère exceptionnel de la promotion
Mises en avant exceptionnelles
Intégration de l’application dans les listes des apps
recommandées (première page de Samsung Apps)
A négocier au cas par cas avec Samsung France
17. Les étapes du cycle de vie d’une application
Lancement
Splash Screen
Initialisation
OnAppInitializing()
Disparition du Splash Screen
Retour au premier plan
OnForeground()
OnBackground() Fonctionnement
Utilisation
- Appui sur la touche HOME (*)
- Appui sur la touche END - Affichage d’un pop-up système
- Autre application au premier plan
OnAppTerminating()
Manque de ressources système Libération des ressources
Arrêt
(*) Sous bada 2.0, les applications qui
ne sont pas déclarées ‘multitâche’ sont
automatiquement arrêtées quand une
autre application bada est lancée.
18. Gestion des ressources
OnAppInitializing() Allocation OnForeground()
La méthode principale pour mettre La méthode qui remet en route une
en route votre application application mise en arrière plan
Allocation de la mémoire Restauration de la UI
Création du Frame de base Relance des connectivités
Chargement du registre Relance des traitements
OnAppTerminating() Libération OnBackground()
La méthode en charge de l’arrêt de La méthode qui prépare une
l’application Les éléments graphiques (Frame, Form et application à passer en arrière plan
tous les objets associés) sont détruits
Destruction de la UI avant l’appel de cette méthode, le
Destruction de la UI
Libération des ressources développeur n’a pas à s’en soucier. Arrêt des connectivités
Sauvegarde dans le registre Arrêt des traitements
Charge au développeur de déterminer quels
traitements doivent être arrêtés ou maintenus
quand l’application passe en arrière plan.
20. Système de fichiers
/Home Répertoire racine de l’application (RW)
/Home/Share Répertoire partagé avec d’autre apps (RW)
/Home/Share2 Répertoire partagé avec les apps de confiance (RW)
Application
/HomeExt Répertoire de l’application sur carte externe (RW)
/HomeExt/Share Répertoire partagé sur carte externe avec d’autre apps (RW)
/HomeExt/Share2 Répertoire partagé sur carte externe avec les apps de confiance (RW)
/Res Répertoire des ressources graphiques du package (RO)
/Media Répertoire des fichiers multimédia (RW)
/StorageCard/Media Répertoire des fichiers multimédia sur carte externe(RW)
/Share/<AppID> Répertoire partagé d’une autre application (RO)
Terminal
/Share2/<AppID> Répertoire partagé d’une application de confiance (RW)
/ShareExt/<AppID> Répertoire partagé sur carte externe d’une autre application (RO)
/Share2Ext/<AppID> Répertoire partagé sur carte externe d’une app de confiance (RW)
/Clipboard Contenu du presse papier pour les copier/coller de fichiers (RO)
22. La documentation
Namespace
Des Namespaces par thème pour plus de clarté
Introduit dans la version d’API
Pour utiliser des APIs adaptées aux terminaux cibles
Niveau et groupe de privilèges
Permet de savoir :
Si une déclaration dans le manifeste est requise
Quel groupe de privilèges doit être coché
Description de l’API
Tout ce qu’il faut savoir pour l’implémenter
23. Les privilèges
System
Des fonctions réservées aux Normal
développeurs partenaires
Des APIs puissantes nécessitant des Non-privileged
Quelques APIs puissantes
privilèges particuliers
Autorisation de Samsung Des APIs courantes utilisables sans
Connectivité, Capteurs, FS …
requise avant déclaration dans condition
le manifeste Ouvert à tous, sous réserve de
La majorité des API
déclaration dans le manifeste
Pas de déclaration dans le
manifeste requise
La documentation précise le niveau de privilège et, le cas
échéant, le groupe de privilèges requis pour chaque API.
Le SDK propose un outil pour vérifier que le manifeste inclus les
privilèges requis pour autoriser les APIs utilisées dans le code.
Il faut éviter d’inclure des privilèges inutiles dans le manifeste
pour simplifier la certification ultérieure de l’application.
24. Trois concepts importants
Pas d’Exceptions
Le mécanisme des Exceptions n’est Construction en deux phases
pas supporté par bada
Les objets doivent se construire en Appartenance des objets
Aucun support des Exceptions
deux phases pour éviter les fuites
A la place : Tout objet n’a qu’un propriétaire
Le constructeur n’alloue rien
Renvoi d’un Result qui doit libérer les ressouces
Utilisation de SetLastResult() Allocation déportée dans
Un propriétaire par objet
et GetLastResult() la méthode Construct()
Transmission de propriété
Son Result indique la résultat
de la construction Méthodes en xN :
L’appelant est propriétaire
du résultat et doit donc le
détruire en temps voulu
26. Osp::Ads
Configuration du service
Ads
developer.bada.com
Paramétrage des publicités sur
Regroupe les APIs permettant developer.bada.com
d’utiliser le service de > Home
publicité intégré au SDK bada > My Applications
> Application Manager
Setup Component
Gestion du compte (reports, etc)
Intégration du service dans le code
Utilisation des APIs pour récupérer des publicités
Possibilité de déclencher l’ouverture d’une page
web, l’appel d’un numéro ou l’ouverture de
Samsung Apps en cliquant sur la bannière
27. Osp::App
System Events
Osp::App
developer.bada.com
Récupération des événements systèmes et
Tout pour contrôler son matériel (batterie, réseau …) afin de pouvoir y
application et la faire interagir répondre
avec le terminal et les autres
applications
AppRegistry
Un registre permettant de sauvegarder l’état de
l’application et de le restaurer à l’exécution suivante
AppResource
Récupérer automatiquement les chaines de
caractères en fonction de la langue du mobile AppManager
Récupérer automatiquement les bonnes Programmer l’exécution de l’application en
ressources graphiques en fonction de la résolution fonction de l’heure ou d’événements système
de l’écran
AppControl
Pour exporter les services de l’application afin que
les autres applications puissent en tirer parti
Comparable aux Intents Android
28. Osp::Commerce
Osp::Commerce
Configuration du service
developer.bada.com
Samsung Apps gère la vente
Définition des articles et de leur prix via le Seller
d’articles ou de services
Office
depuis votre application
Organisation des articles en groupe pour gérer
aisément plusieurs applications
Mode Test pour faciliter le développement
Intégration du service dans le code
Récupération de la liste des articles en vente
Gestion de la transaction
Samsung Apps prend en charge la facturation
29. Osp::Locations
Osp::Location
Location Service Provider
developer.bada.com
Des outils de géolocalisation Récupération de cartes (Navteq)
et de cartographie pour tous Geocoding
les usages Calcul d’itinéraires
Service d’annuaire
Les services Navteq n’ont aucun caractère
obligatoire
On peut donc utiliser d’autres fournisseurs
Les services Navteq sont régis par des
conditions d’utilisation définies sur le Seller
Location Provider Office
Outil de récupération d’une position
GeoFencing
Entièrement paramétrable : fréquence, moyen…
Map Control
Divers outils pour afficher des cartes, gérer
différentes couches et placer des points d’intérêt
30. Osp::Media
AudioIn & AudioOut
Osp::Media
developer.bada.com
Lecture et enregistrement audio
De multiples outils pour le
multimedia : Streaming, AudioEncoder & AudioDecoder
manipulation d’images,
conversion audio, caméra … Outils de conversion Raw <> Format compressé
VideoEncoder & VideoDecoder
Outils de conversion Raw <> Format compressé
Player
Lecteur multimédia complet incluant le Streaming
Camera
Utilisation de l’appareil photo du terminal
AudioRecorder & VideoRecorder
Utilisation de la caméra et du micro du terminal
31. Osp::Messaging
Osp::Messaging
developer.bada.com
SMS
Pour utiliser les différentes
Envoi / Réception de SMS depuis l’application
messageries du téléphone,
mais aussi le service de
notifications Push MMS
Envoi de MMS depuis l’application
Email
Envoi de mails depuis l’application
PushManager
Réception de notifications Push sur le terminal
Réception possible :
De messages
De badges (incrément ou valeur absolue)
32. Et les incontournables …
Osp::Base
developer.bada.com
Osp::Content
developer.bada.com
Les outils clé pour gérer les Osp::Graphics
developer.bada.com
types de données, les threads Tout pour gérer les contenus
et autres outils de base du multimédia et leurs Les outils de base pour toutes
développeur métadonnées dans la gallerie les représentations graphiques
du mobile y compris OpenGL
Osp::Io
developer.bada.com
Osp::Locales
Les outils classiques pour developer.bada.com Osp::Net
developer.bada.com
gérer les entrées / sorties vers Rendez votre application
des fichiers, le registre ou internationale en adaptant la Tirez parti des capacités de
encore une base de données langue ou les préférences communication du mobile :
locales (format de date, etc) HTTP, Sockets, Bluetooth,
WiFi, WiFi Direct, NFC
Osp::Security
developer.bada.com
Osp::Social
developer.bada.com
Divers outils de chiffrement et
de protection basés sur Des APIs permettant de se
l’utilisation de clés ou de connecter simplement aux
nombres pseudo-aléatoires principaux réseaux sociaux
33. Et les incontournables …
Osp::System
developer.bada.com
Osp::Telephony
developer.bada.com
Toutes les ressources pour Osp::Text
developer.bada.com
connaitre l’état du mobile, Des outils pour gérer les
gérer au mieux la batterie et appels ou être notifié des Tout pour décoder ou
interagir avec ses accessoires changements liés au réseau convertir du texte encodé
selon différentes tables de
caractères
Osp::Ui
developer.bada.com
Osp::Uix
Comprend tous les outils pour developer.bada.com Osp::Web
developer.bada.com
utiliser les contrôles UI Des interactions avancées :
standards de la plateforme reconnaissance de visages, Pour afficher des pages web
TTS/STT, accès direct capteurs, dans l’application ou traiter les
haptic feedback, météo données JSON
Osp::Xml
developer.bada.com
Pour manipuler ou parcourir
les fichiers XML ou HTML
35. Architecture de l’interface utilisateur
Un Frame unique par application
Plusieurs Forms
Tous liés au Frame de base
A tout instant un seul Form est visible
Plusieurs Controls par Form
Chaque Control est lié à un Form ou un Container
Le positionnement doit se faire de façon relative
pour s’adapter aux différentes résolutions
Des Listeners pour les événements
Différents Listeners permettent d’être alerté quand
l’utilisateur manipule la UI
37. Les Listeners
Création d’un objet
Control UI, SensorManager, etc
Création d’un Listener Des alertes asynchrones
Sous la forme d’Interfaces à implémenter
Disponibles pour tous les objets renvoyant des
Ajout du Listener à l’objet résultats asynchrones : UI, capteurs, événements
système, etc
Event
Appel d’une méthode du Listener
Un Listener comporte plusieurs méthodes
Une méthode différente est appelée selon l’Event Attention à ne pas exécuter de code lourd dans les
Charge au développeur d’implémenter le Listeners afin de garder une interface réactive !
comportement voulu pour chaque méthode