31

Windows Phone 8, ca déchire !

jan

Une fois n’est pas coutume (ce n’est pas une bonne résolution pour 2013), je vais essayer de voir le verre à moitié plein plutôt qu’à moitié vide !
En mal d’inspiration et ayant quelques ressources pécuniaires j’ai offert à mon père un Nokia 920 équipé du flambant neuf Windows Phone 8 pour Noël. Je n’avais jusque là jamais vu tourner l’OS de microsoft, mais j’ai été décidé par la qualité de l’appareil photo et par le fait que pour une fois, il s’agit d’un téléphone assez novateur…

Des innovations plutôt sympa.

Loin de moi l’idée de dérouler toutes les caractéristiques du smartphone de Nokia, je prèfère plutôt lister les quelques innovations qui rendent ce téléphone assez orginal

  • L’appareil photo de la mort qui prend des supers photos même de nuit
  • Le chargement par induction : Même si mon feu PALM pré le faisait déjà (je serais d’ailleurs intéressé par le coût énergétique du chargement pas induction, si quelqu’un sait où trouver ça)
  • Le GPS qui fonctionne sans connexion 3G

Bref, que du bon !

A l’usage ?

Et bien le téléphone n’est pas exempt de bugs! Par exemple il est pour le moment impossible de recevoir une photo par MMS. Après une petite recherche sur Internet, il semblerai que cela vienne plutôt de la SIM que du téléphone !!! A voir donc.
Sinon, l’interface est plutôt pas mal et même carrément sympa en fait ! Après 15 minutes on n’est plus du tout perdu.

Elle est clair et l’effet monochromatique des icônes pas désagréable du tout! Ca fait… pro et surtout homogène. Peut-être par contre que si on a beaucoup d’applications installées, l’interface deviendra moins évidente !

Internet explorer 10 est quant à lui d’une rapidité fulgurante. Est-ce parce que le téléphone est tout neuf ou bien est-ce IE10 mobile qui déchire ? Quoiqu’il en soit c’est plus rapide que Chrome sur mon galaxy Note, et pas qu’un peu ! Par contre, la gestion des liens hypertexte est moins précise que sur chrome. Il faut parfois zoommer pour pouvoir cliquer sur un lien là où Chrome zoom automatiquement une portion de l’écran s’il estime qu’il peut y avoir un risque d’erreur.

Bref, il me faudrait un nokia 920 d’au moins 5 pouces pour que j’abandonne mon Galaxy Note.
Il me manquerai aussi quelques applications, mais disons que je suis prêt à faire le grand saut !

Développement sur Windows Phone 8

De retour de vacances je me suis dis : “Tiens si je faisais un petit Hello World pour Windows Phone 8″.
Me voilà donc parti en quête du SDK pour Windows Phone 8 !

Microsft et Apple : Même combat

Le SDK est donc disponible sur le site de Microsoft ici et il est gratuit, livrée avec Visual Studio 11 Express.
Là où c’est plus relou, c’est qu’il ne fonctionne qu’avec Windows 8 !
Hors moi j’ai Seven !

Du coup mes expérimentations auraient pu tourner court (car je ne vais pas changer de PC ou d’OS juste pour développer pour WindowsPhone) !
Sauf que miracle (et surprise), la boite où je bosse a reçu en ce début d’année tout un lot de nouveau PC sous Windows 8 ! La vie fait bien les choses parfois !!!
Donc HOP! Première mission de 2013 migrer mon poste de travail sur Windows 8.

Une fois mon flambant neuf PC opérationnel, j’ai pu installer le SDK de WindowsPhone 8.

Autant le dire tout de suite, Microsoft on aime ou on n’aime pas, mais Visual Studio c’est quand même autre chose qu’éclipse !

Premier programme

Bon n’étant pas franchement une brute du C++ j’ai donc tout simplement créé un projet.
J’ai donc choisi un projet Visual C++ / WindowsPhone / Direct3D (native app)

Choisir un type de projet dans la multitude de choix possibles n’a pas été une simple affaire vu que je n’ai pas la moindre idée de ce qu’est XAML ou encore XNA Game…
J’ai donc choisi ce qui me semblait le moins inconnu !

L’obscurité est sombre, surtout en pleine nuit !

La dernière fois que j’avais fait du C++ avec le Visual C remonte à peu prêt à l’époque des MFC !
J’avais donc vaguement imaginé que que quelques trucs avaient bien dû changer, mais là, j’ai été servi !
Je ne résiste pas à l’envie de mettre un petit bout de code généré par Visual Studio ;)

[Platform::MTAThread]
int main(Platform::Array < Platform::String^ > ^)
{
	auto direct3DApplicationSource = ref new Direct3DApplicationSource();
	CoreApplication::Run(direct3DApplicationSource);
	return 0;
}

Donc là, Je ne sais pas ce que veut dire :

  • [Platform::MTAThread] : je savais même pas qu’on pouvait utiliser des [] en C++ à cet endroit
  • < Platform::String^ > ^ : Il me semble avoir expérimenté une fois les templates, mais a quoi servent les deux ^?

Dans les .h c’est encore pire !

ref class CubeRenderer sealed : public Direct3DBase

ref et sealed sont des mots clés “mystères” pour moi.

Je suis donc parti à la recherche d’un bouquin pour me permettre de comprendre tout ça !
Par contre, il y a quand même quelques chose que j’ai réussi à faire, en j’en suis pas peu fier c’est…

Mettre du code Assembleur dans un projet WindowsPhone

A défaut d’y comprendre quoi que ce soit au code produit par Visual Studio, je suis parti à la recherche du moyen de mettre du code assembleur dans mon projet.
Cela fut finalement assez simple, même si n’ayant pas de téléphone WP8 sous le main j’ai du me contenter du code intel !

Tout d’abord vous ajoutez un fichier à votre projet. C’est assez Simple : bouton de droite, “Add”, “New Item…”.
Vous choisissez alors n’importe quel type de fichier que vous renommez en file.asm. Là, et c’est un bon début, Visual Studio reconnait l’extension et affiche donc une petit icone représentant un fichier asembleur.

Vous l’ouvrez et vous taper un petit bout de code tout miteux (genre qui fait pas grande chose).
Ici, voici une fonction qui s’appelle “clear” et qui efface deux registres temporaires.

.586               ;Target processor.  Use instructions for Pentium class machines
.MODEL FLAT, C    ;Use the flat memory model. Use C calling conventions
.STACK            ;Define a stack segment of 1KB (Not required for this example)
.DATA             ;Create a near data segment.  Local variables are declared after
                  ;this directive (Not required for this example)
.CODE             ;Indicates the start of a code segment.
	clear PROC
	xor eax, eax
	xor ebx, ebx
	ret
	clear ENDP
END

On utilise ici du code intel car on va exécuter notre programme sur l’émulateur qui fonctionne en code natif intel !

Enregistrez !
Il vous faut encore préciser à Visual Studio que faire de ce type de fichier car malheureusement, il ne le sait pas par défaut.
Ouvrez les propriétés du fichier en faisant un click droit dessus.

Vous allez alors trouver un attribut “Item Type” qui vaut Does not participate in build. Cette valeur indique que comme Visual Studio ne sait pas quoi faire de ce fichier il n’entrera pas dans le processus de compilation.
Changez cet attribut pour lui mettre la valeur Custom Build Tool et Cliquez sur [Appliquer].

Une nouvelle entrée Custom Build Tool est apparue dans l’arborescence des attributs du fichier (à gauche). Cliquez dessus

il vous faut alors renseigner deux attributs:

  • Command Line
  • Outputs

le premier est la ligne de compilation. Moi j’ai mis
Command Line : C:\ml.exe /c /Cx /coff “$(ProjectDir)file.asm”

Pour la deuxième j’ai mis
Outputs : file.obj

Rem: pour le moment j’ai pas trouvé la macro qui me permettrai d’éviter de devoir écrire en dur le nom du fichier (ici file.asm et file.obj).
Rem: j’ai recopier le fichier ml.exe fourni avec le SDK à la racine de mon disque dur pour que ma ligne de commande soit moins longue a écrire.

That’s all folks

En bien voilà !
Jusqu’à ce que j’ai un téléphone sous Windows Phone et trouvé un bouquin sur le développement C++/CX sous Windows, je pense que je n’irai pas plus loin !

Et tout cas, ce Windows Phone 8 me semble être un système bien sympa à utiliser.

 | Tags:

Répondre

Human control : 6 + 6 =