2012-08-11 3 views
21

In meiner Android-App habe ich einige Tasten, die mit onTouch() Methode funktionieren sollte, natürlich muss ich Button Text ändern, wenn Finger in ACTION_DOWN Position. Aber diese Tasten sollten Standard android Sound der Schaltfläche klicken (wie in onClick() -Methode) zu spielen. Wo kann ich solchen Klang finden? Ich denke, es muss in SDK sein, aber wie kann ich es finden? Und welche Methoden sind für einen solchen Betrieb besser? Ich benutze den MediaPlayer.Standard Android Sound der Schaltfläche, klicken Sie aufTouch() Methode

Listing:

public boolean onTouch(View v, MotionEvent event) { 
    int action = event.getAction(); 
    switch (action) { 
    case MotionEvent.ACTION_DOWN: 
     addTextShadow(v); 
     Log.v(LOG_TAG, "ACTION_DOWN"); 
     break; 
    case MotionEvent.ACTION_MOVE: 
     clearTextShadow(v); 
     isMoved = true; 
     Log.v(LOG_TAG, "ACTION_MOVE"); 
     break; 
    case MotionEvent.ACTION_UP: 
     Log.v(LOG_TAG, "ACTION_UP"); 
     if (!isMoved) { 
      clearTextShadow(v); 
      if (v.getId() == R.id.btn_new) { 
       Log.v(LOG_TAG, "New pressed"); 

          playSound(); //MY METHOD TO PLAY SOUND 

      } else if (v.getId() == R.id.btn_saved) { 
       Log.v(LOG_TAG, "Saved pressed"); 
      } else if (v.getId() == R.id.btn_random) { 
       Log.v(LOG_TAG, "Random pressed"); 
      } 
     } 
     isMoved = false; 
     break; 
    } 
    return true; 
} 

Und meine playsound() Methode:

public void playSound(){ 
    if (mp != null) { 
     mp.release(); 
     mp = null; 
    } 
    try { 
     mp = MediaPlayer 
    .create(MyActivity.this, R.raw.sound); //BUT HERE I NEED DEFAULT SOUND! 
     mp.start(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
+0

Spielt Android nicht standardmäßig den Klick-Sound nach "Standard"? Zumindest tut es das bei ICS. –

+0

Vishwa Patel, nein, Android spielt den Standardklickton, wenn wir onClickListener, aber nicht onTouchListener verwenden. Ich teste alle Programme mit ICS (SGS2). – dmgmyza

Antwort

62

Verwenden Sie diesen Code in Ihre OnTouch() -Methode:

view.playSoundEffect(android.view.SoundEffectConstants.CLICK); 

Wenn Sie einfach nur für eine voreingestellte Android Sound suchen, dann ist es besser, diese Funktion zu nutzen, die durch den Rahmen für die kostenlos zur Verfügung gestellt wird. Wenn Sie nichts anderes tun, als für die Anpassung erforderlich, werden Sie einfach mit dem Framework arbeiten, anstatt mit ihm zu arbeiten.

+2

Vishwa Patel, super! Es funktioniert, vielen Dank. Rechts, playSound() & MediaPlayer sind jetzt nutzlos. – dmgmyza

+0

@ dmgmyza Ausgezeichnet! Ich bin froh, dass ich geholfen habe. Sie sollten meine Antwort upvote, wenn Sie denken, dass es hilfreich ist! –

+0

Ich will wirklich, aber mein Ruf ist jetzt nur 12. Ich brauche 3 Punkte mehr, um abzustimmen. – dmgmyza

0

Standard verwenden Klänge aus /system/media/audio/

Mediaplayer oder Soundpool wird dazu beitragen, die Wiedergabe zu implementieren.

0

Verwenden Sie view.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY);.

Es wird beides tun: Wiedergabe des Standardtons und Vibrieren, wenn der Benutzer es in den globalen Einstellungen aktiviert hat.