2016-12-22 1 views
2

J'utilise MediaPlayer pour lire un son de clic lorsque l'utilisateur clique sur un bouton. Parfois le son joue bien mais d'autres fois c'est trop lent. Par exemple, le premier clic est correct mais le deuxième clic est trop lent.
Voici mon code:MediaPlayer ne fonctionne pas correctement

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(); 
    } 
} 

Répondre

0

Essayez ceci:

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 est pris d'ici: https://stackoverflow.com/a/20111291/6159609

La méthode de réinitialisation est censé être plus rapide.

+0

ne fonctionne pas du tout – hosseinAmini

0

S'il vous plaît essayer ci-dessous le code de travail bien pour moi ...

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

même résultat .... – hosseinAmini

+0

mais je vérifie ce travail de fonctionner correctement dans notre application ... –