Button spielt Audio nur 31 mal ab

  • 4 Antworten
  • Letztes Antwortdatum
A

Android_DEV

Ambitioniertes Mitglied
1
Hallo,
ich habe ein Problem mit einem Button der eine Audio Datei abspielt.
Der Button spielt immer nur genau bis zum 32. klick auf den Button die Datei ab.

Code:
public class MainActivity extends Activity {

...

public MediaPlayer mp;

...

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);


ppneu = (ImageButton) findViewById(R.id.ppneu);
ppneu.setOnClickListener(new View.OnClickListener() {

public void onClick (View v) {
MediaPlayer mp = MediaPlayer.create ( getApplicationContext(),R.raw.ppneu);
mp.start();


...

}


@Override
public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;


}


@Override
public boolean onOptionsItemSelected(MenuItem item) {

int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}

}


Danke im voraus

Lg,


Android_DEV :smile:
 
Kurze Frage, da dein Code extrem fragmentiert ist und die mindestens die Hälfte fehlt:
Beendest du den MediaPlayer zwischendurch, oder startest du ihn nur immer wieder?

Wenn du ihn nicht beendest, würde ich auf ein Speicherüberlauf tippen. Dafür spricht auch, dass der MediaPlayer nach dem 31 Mal abbricht.

Am besten du arbeitest mit den Methoden pause() und start().

Wie die ganzen Methoden des Mediaplayer ineinander greifen ist nicht so leicht zu erklären. Ich fand folgendes Schaubild sehr hilfreich:

MediaPlayer | Android Developers

Am besten beendest du den MediaPlayer auch in onPause(). Und ich würde ihn in onResume() starten. Dann hast du auch keine Probleme, wenn die App in den Background geht.
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: Android_DEV
Danke für die Tips, ich habe nämlich keinen on.stop aufruf im Code.
Daran wird liegen.

Lg,

-Android_DEV

Der ursprüngliche Beitrag von 15:07 Uhr wurde um 15:42 Uhr ergänzt:

Ich probiere mal diese Methode mit der onClick zu verknüpfen.



public void onPause() {
super.onPause();
mp.stop();

}
 
Das lässt sich mit folgendem Code beheben:
Code:
public class MainActivity extends Activity {
MediaPlayer mp;

public void alles_stoppen(){
try{
mp.release();
}catch (Exception e){
}
}

public void onClick (View v) {
alles_stoppen();
                mp = MediaPlayer.create (  getApplicationContext(),R.raw.ppneu);
                mp.start();
   mp.setOnCompletionListener(new OnCompletionListener() {
            
            @Override
            public void onCompletion(MediaPlayer mp) {
                // TODO Auto-generated method stub
                
                mp.release();
                
            }
        });
 
         ...
 
}



Ich hoffe ich kann dir helfen
 
  • Danke
Reaktionen: Android_DEV
Vielen dank für die Hilfe :)
Es funktioniert super!

Lg,

-Android_DEV
 

Ähnliche Themen

K
  • keen
Antworten
5
Aufrufe
1.961
Majadroid
Majadroid
E
Antworten
1
Aufrufe
2.396
markus.tullius
markus.tullius
H
Antworten
24
Aufrufe
4.951
swa00
swa00
Zurück
Oben Unten