Aller au contenu

Plantage MediaPlayer, et questions sur myPid() et killProcess()


Invité

Recommended Posts

Bonjour,

Ne sachant pas trop ou mettre ce sujet je l'ai donc posté ici.

J'ai quelques questions, je vais donc m'efforcer avant tout de poser de manière structurée le contexte de l'appli que j'essai de monter :)

Je suis en train d'essayer de faire une appli ayant un menu (type menu de propriétés Android) renvoyant à un sous-menu permettant d'accomplir certaines actions suivant le choix dans le sous-menu, c'est rien de bien compliqué c'est juste un Intent vers une autre Activity, pour le moment tout est OK, cela dit j'ai des question qui ne trouvent pas réponse, peut-être ai-je mal cherché...

1) J'ai cru comprendre que l'attribut "NoHistory" dans le AndroidManifest.xml permettrait de ne pas garder de traces des Activity passées, cad si je change d'activity et que je fais une pression sur la touche retour j'aurai rien, est-ce bien ca? je patauge un peu la.

2) J'ai un bouton quitter dans mon menu, j'aimerai qu'il serve a quitter proprement l'application, au gré de mes recherches sur la toile j'ai vu des personnes parler de "System.exit(0)", mais je suis pas sur que cela soit tres "propre", j'ai pu trouver les methodes "myPid() et killProcess()" hors je n'arrive absolument pas à en faire usage... quelqu-un aurait-il un exemple?

3) Toujours a propos du menu, j'avais mis des sons au clic, via MediaPlayer, le seul problème est que ca plante si je declenche un autre menu trop vite, j'ai essayé avec un Thread comme ceci :

    new Thread(){
       public void run(){
           mp = MediaPlayer.create(Test.this, R.raw.mysound);   
           mp.start();
       }
   }.start();

ou bien d'une autre facon comme ci-dessous, mais je m'en sors pas, j'ai une erreur qui plante le tout...

mp.setOnCompletionListener(new OnCompletionListener() {

                       @Override
                       public void onCompletion(MediaPlayer mp) {
                           // TODO Auto-generated method stub
                           mp.release();
                       }

                   });

y'a t'il une alternative a MediaPlayer?

D'avance merci de vos réponses...

PS Voila le LOG de DDMS :

02-16 16:56:19.362: ERROR/PlayerDriver(30): Command PLAYER_PREPARE completed with an error or info PVMFErrResource

Le Code qui foire :

package com.android.dbriwa.aac;

import android.app.Activity;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;

public class AAC extends Activity {

   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);
   }

public boolean onCreateOptionsMenu(Menu menu) {
	MenuInflater inflater = getMenuInflater();
	inflater.inflate(R.layout.menu, menu);
	menu.getItem(0).getSubMenu().setHeaderIcon(R.drawable.choice);
	return true;
}

public boolean onOptionsItemSelected(MenuItem item) {

	MediaPlayer MachineGun = MediaPlayer.create(AAC.this, R.raw.machine_gun);
	MediaPlayer GunShot = MediaPlayer.create(AAC.this, R.raw.gunshot);
	MediaPlayer Rifle = MediaPlayer.create(AAC.this, R.raw.rifle_shot);

	switch (item.getItemId()) {

		case R.id.menu:
			MachineGun.start();
			return true;

		case R.id.conversions:
			GunShot.start();
		    Intent Conv;
	        Conv = new Intent(AAC.this, Conv.class);
	        startActivity(Conv);
			return true;

		case R.id.batteries:
			GunShot.start();
		    Intent Bat;
	        Bat = new Intent(AAC.this, Bat.class);
	        startActivity(Bat);
			return true;

		/*
		case R.id.geoloc:
			GunShot.start();
		    Intent Geo;
	        Geo = new Intent(AAC.this, Geo.class);
	        startActivity(Geo);
			return true;
		*/

		case R.id.about:
			GunShot.start();
		    Intent About;
	        About = new Intent(AAC.this, About.class);
	        startActivity(About);
			return true;

		case R.id.quitter:
			Rifle.start();
			finish();
			return true;
	}
	return false;
}
}

J'ai le meme appel de menu dans mes autres Classes... About, Bat, Conv, Geo...

Et voiçi un screencast de l'erreur en question, du moins comment elle se produit.

http://www.youtube.com/watch?v=oHRfciwdCEE

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...