2016-12-22 6 views
2

Ich benutze den MediaPlayer für die Wiedergabe eines Klick-Sounds, wenn der Benutzer auf eine Schaltfläche klickt. Manchmal wird der Sound gut wiedergegeben, aber manchmal ist es zu langsam. Zum Beispiel ist der erste Klick in Ordnung, aber der zweite Klick ist zu langsam.
Hier ist mein Code:MediaPlayer funktioniert nicht richtig

private MediaPlayer mClickSound; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    ... 
    mClickSound = MediaPlayer.create(this, R.raw.click); 
} 

@Override 
public void onClick(View view) { 
    try { 
     if (mClickSound.isPlaying()) { 
      mClickSound.stop(); 
      mClickSound.release(); 
      mClickSound = MediaPlayer.create(this, R.raw.click); 
     } 
     mClickSound.start(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

Antwort

0

Try this:

mClickSound.reset(); 
AssetFileDescriptor afd = context.getResources().openRawResourceFd(R.raw.click); 
if (afd == null) return; 
mClickSound.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength()); 
mClickSound.start(); 
afd.close(); 

setDataSource von hier genommen wird: https://stackoverflow.com/a/20111291/6159609

Die Reset-Methode soll schneller sein.

+0

Nicht bei allen – hosseinAmini

0

Bitte versuchen Sie unter Code funktioniert gut für mich ...

public class MainActivity extends AppCompatActivity implements View.OnClickListener 
{ 
    Button btn; 
    MediaPlayer mClickSound; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     btn = (Button) findViewById(R.id.button); 
     mClickSound = MediaPlayer.create(this, R.raw.click); 
     btn.setOnClickListener(this); 
    } 

    @Override 
    public void onClick(View view) { 
     if (mClickSound.isPlaying()) { 
      mClickSound.reset(); 
     } 
     else { 
      mClickSound = MediaPlayer.create(this, R.raw.click); 
      mClickSound.start(); 
     } 
    } 
} 
+0

Gleiches Ergebnis arbeiten .... – hosseinAmini

+0

aber ich überprüfen Sie diese Funktion richtig funktioniert in unserer App ... –