2010-01-11 3 views
2

J'ai travaillé sur une application Android pour me familiariser avec la plate-forme. Plus précisément, l'application que j'essaie de mettre en œuvre permet à l'utilisateur de sélectionner un fichier son (MP3 ou WAV) à lire à une date et une heure spécifiques affichant un dialogue avec une barre de progression et un bouton OK/Annuler permettant à l'utilisateur d'arrêter jouer du fichier son. Je veux qu'il se comporte quelque chose comme les applications de compte à rebours que j'ai vu ou même l'application intégrée de réveil. Comme j'applique cette application simple (j'ai pensé!), J'essaye de mieux comprendre la plate-forme et rendre l'application conforme à la manière d'Android.Comprendre le bon "flot" d'alarme Android

En écrivant l'application, j'en apprends plus sur la façon dont les choses sont censées fonctionner sur la plateforme Android. Et voici où je suis un peu confus. Pendant mes tentatives pour déclencher l'alarme et l'afficher, j'apprends que les applications Android correctement formées ne sont pas supposées afficher des boîtes de dialogue suite à l'appel d'un service d'arrière-plan ou d'un récepteur de diffusion via le service d'alarme Android. Au lieu de cela, je pense que l'application est censée utiliser une notification sur la barre d'état pour alerter l'utilisateur. L'utilisateur a ensuite la possibilité de regarder la notification pour voir ce que l'application essaie de leur dire.

J'ai réussi à faire apparaître le dialogue que je voulais faire apparaître en lançant une nouvelle activité à partir d'un service lancé par le service d'alarme d'Android. Cependant, il semble que j'ai brisé une règle Android en le faisant. Je le savais d'abord parce que j'ai vu un message dans la fenêtre DDMS LogCat qui demandait si j'étais sûr de vouloir démarrer une nouvelle activité à partir d'un Service. Deuxièmement, j'ai lu à plusieurs endroits que ce n'était pas bien de le faire. Une déclaration qui vient à l'esprit vient d'un développeur de Google qui a dit qu'il allait certainement désinstaller une application qui a fait quelque chose comme ça. L'application est plutôt, si je comprends bien, censée utiliser la barre d'état et la notification pour attirer l'attention de l'utilisateur et lui permettre de voir ce que l'application veut à loisir. Cela semble contre-intuitif à ce que mon application essaye de faire. Encore une fois, j'essaie de le faire se comporter, essentiellement, comme les applications de compte à rebours que j'ai vu ou l'application intégrée de réveil qui vient sur les téléphones Android. Si mon application ne se comporte pas correctement, l'application de réveil se comporte-t-elle? Évidemment, je dirais que l'application de réveil fait exactement ce que je m'attendais. Et un utilisateur de mon application, je pense, s'attendrait à ce que le fichier son joue avec une boîte de dialogue montrant que la lecture du fichier son peut être arrêtée sans avoir à passer par la barre d'état. Est-ce que je comprends correctement la plate-forme Android? Des opinions sur la façon dont une application comme celle-ci pourrait être implémentée sans être méchant en évoquant le dialogue que j'ai mentionné? Je voudrais que l'application soit considérée comme une application Android bien formée, mais j'ai du mal à voir comment mon application est si différente des autres que j'ai vues ou même de l'application de réveil intégrée.

Merci! Jeff

Répondre

4

Utilisateurs généralement ne vous attendez pas à ce que des éléments aléatoires apparaissent à l'écran, en particulier lorsqu'ils sont en train de faire quelque chose. Après tout, s'ils jouent à un jeu ou tapent un message texte ou quelque chose, l'activité surgit détruira ce qu'ils font.

Certaines applications sont censées le faire par conception, indépendamment. Les appels téléphoniques entrants, par exemple, devraient faire apparaître l'écran d'appel, peu importe ce que fait l'utilisateur. On peut certainement prétendre qu'une application de style alarme, comme la vôtre, a des droits raisonnables de faire de même. Cependant, il existe des développeurs qui pensent que les utilisateurs sont des piles de matières fécales. Ces développeurs ont le sentiment d'avoir le droit de diffuser des informations en arrière-plan en toute impunité, car ils ont le droit, en tant que développeurs, de faire ce qu'ils veulent, que les utilisateurs soient damnés. J'imagine que c'est avec cet auditoire en tête que LogCat émet l'avertissement.Si j'écrivais votre application, je voudrais que l'utilisateur préfère que l'alarme déclenche simplement un Notification ou affiche un Activity. Mais peu importe comment vous gérez cela, votre objectif devrait être de faire ce que les utilisateurs s'attendent et apprécient, même si cela va à l'encontre de ce que vous en tant que développeur estime que devrait être fait.