2012-04-11 146 views
0

我试图播放随机声音onTouch事件(目前正在工作),但声音实际上播放两次onTouch事件,而不是一次按预期。我假设这是由于UP和Down onTouch事件。有什么想法吗?播放随机声音onTouch

注意:我在测试时注释掉了附加的随机声音文件。

package com.tmapps.wiub; 

import java.util.Random; 
import com.tmapps.wiub.SoundManager; 
import android.app.Activity; 
import android.os.Bundle; 
import android.view.MotionEvent; 
import android.view.Window; 
import android.view.WindowManager; 

public class Soundboard extends Activity { 
    private SoundManager mSoundManager; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     // FULLSCREEN CODE 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
           WindowManager.LayoutParams.FLAG_FULLSCREEN); 

     setContentView(R.layout.main); 

     mSoundManager = new SoundManager(); 
     mSoundManager.initSounds(getBaseContext()); 
     mSoundManager.addSound(0, R.raw.sound0); 

    // COMMENTED OUT WHILE TESTING 
    // mSoundManager.addSound(1, R.raw.sound1); 
    // mSoundManager.addSound(2, R.raw.sound2); 
    // mSoundManager.addSound(3, R.raw.sound3); 
    // mSoundManager.addSound(4, R.raw.sound4); 
    // mSoundManager.addSound(5, R.raw.sound5); 
    // mSoundManager.addSound(6, R.raw.sound6); 
    // mSoundManager.addSound(7, R.raw.sound7); 
    // mSoundManager.addSound(8, R.raw.sound8); 
    // mSoundManager.addSound(9, R.raw.sound9); 

    }; 

     Random r = new Random(); 
     int x = r.nextInt(1); 

     switch (evt.getAction()) 
     { 
      case MotionEvent.ACTION_DOWN: 
      mSoundManager.playSound(x); 
      return super.onTouchEvent(evt); 

      case MotionEvent.ACTION_UP: 
      break; 
      default: 
      break; 
     } 

回答

0

那是因为ACTION_DOWN和ACTION_UP都被解雇,落实代码只对其中一个

public boolean onTouchEvent(MotionEvent evt) 
    { 
     switch (evt.getAction()) 
     { 
      case MotionEvent.ACTION_DOWN: 
      break; 
      case MotionEvent.ACTION_UP: 
      break; 
      default: 
      break; 
     } 
     return true; 
    } 
+0

感谢您的帮助kishu27。我按照您的建议更新了onTouch代码,现在一切正常。 – n00bdev 2012-04-12 00:48:23

+0

不客气的兄弟..很高兴为你解决 – kishu27 2012-04-12 02:13:35

+0

偶然你有什么想法,我可以逐渐增加音量超过X秒使用AudioManager? – n00bdev 2012-04-12 02:40:05