2010-06-12 4 views
1

Je travaille sur une application qui émet un bip toutes les secondes. Quand j'appuie sur le bouton d'accueil, je veux qu'il ferme le programme et arrête de biper. En ce moment, il ferme le programme mais continue à émettre un bip.Android Stop Counter et Destroy Media Player

Qu'est-ce que je fais mal?

 if ((keyCode == KeyEvent.KEYCODE_HOME)) { 
     isdone = true; 
     mp.release(); 
     counter.cancel(); 
     finish(); 
    } 

Répondre

1

Quand je frappe le bouton d'accueil je le veux pour fermer le programme et arrêter le signal sonore.

Vous ne pouvez pas intercepter le bouton HOME du code de votre application - désolé!

0

Vous ne pouvez pas intercepter le bouton ACCUEIL directement, bien qu'une solution de contournement consiste à faire en sorte que votre application commence une activité HOME/défaut HOME par défaut; dans votre manifeste XML, ce serait comme ceci:

<intent-filter> 
    <action android:name="android.intent.action.MAIN"/> 
    <category android:name="android.intent.category.LAUNCHER"/> 
    <category android:name="android.intent.category.HOME"/> 
    <category android:name="android.intent.category.DEFAULT"/> 
</intent-filter> 

Ainsi, lorsque l'utilisateur appuie sur le bouton d'accueil, vous devriez conduire l'utilisateur à l'activité de démarrage de votre application, à partir de là, vous pouvez le rediriger vers un autre activité précédente, c'est-à-dire en sauvegardant l'état de l'utilisateur au préalable. Dans l'activité que vous avez mentionnée ci-dessus, où vous avez le beeping, vous devez placer la commande d'arrêt dans onPause ou onWindowFocusChanged.

Cette approche ci-dessus n'a de sens que dans certains cas et dépend de votre logique applicative/business case et de l'environnement dans lequel vous allez la déployer.

Nous avons utilisé cette approche dans une application (manipulant le bouton d'accueil) où notre application sera toujours regroupée et distribuée avec un périphérique. Nous avons donc le contrôle total de la configuration de l'appareil. Lorsque vous définissez votre propre activité comme activité par défaut, l'utilisateur obtient initialement un écran d'options avec la question de savoir quelle activité doit gérer l'intention du domicile (la maison android par défaut ou l'activité de votre application). Ensuite, l'utilisateur peut choisir et peut également cocher une case pour utiliser cette activité comme activité par défaut dans le futur sans être à nouveau interrogé.

Pour les applications générales destinées au marché public, ce n'est peut-être pas la meilleure solution, car ce serait un petit inconvénient et ce n'est pas non plus un bon flux d'écran/expérience utilisateur. Pour les applications pour lesquelles vous avez un contrôle total, cette solution peut s'avérer appropriée.

Si vous voulez vraiment capturer le bouton HOME, vous devrez modifier le système d'exploitation Android, il est dans la classe PhoneWindowManager.java qui vient dans android.policy.jar. Toutefois, cela n'a de sens que si vous maîtrisez parfaitement les périphériques, c'est-à-dire regroupez votre application avec un périphérique ou s'il s'agit d'une application interne où vous distribuez les périphériques aux utilisateurs et contrôlez la ROM que vous déployez.

Il y a aussi une discussion utile avec d'autres liens sur le bouton HOME: http://www.anddev.org/home_menu_button-t10232.html

0

n'est pas votre méthode d'activité onPause() appelée lorsque vous appuyez sur le bouton d'accueil?

Vous pouvez arrêter le compteur ici. Ne tuez pas l'activité par vous-même, le système fera cela pour vous quand cela vous convient.