2013-05-05 92 views
0

我是Android开发人员的新手,所以我正在努力研究是否有更高效或更快速的方式来使用onTouch方法切换MediaPlayer数据源。我正在尝试创建一种可以像长笛演奏的乐器,但是当我按下(触摸)按钮时,音源不会足够快地切换。有更快的方式来切换MediaPlayer的数据源吗?

我正在使用playNote()方法在音频文件之间切换。任何建议表示赞赏。

public class PlayAggeion extends Activity { 

ImageButton patC1; 
int soundIsOn = 1; 
MediaPlayer mp; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_play_aggeion); 
    onConfigurationChanged(null); 
    addListenerPatima(); 
    mp = new MediaPlayer(); 
    playNote(R.raw.aa); 
} 

public void addListenerPatima() { 
    patC1 = (ImageButton) findViewById(R.id.patC1); 
    patC1.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      switch(event.getAction()) 
      { 
      case MotionEvent.ACTION_DOWN: 
       playNote(R.raw.bb); 
       return true; 

      case MotionEvent.ACTION_UP: 
       playNote(R.raw.aa); 
       return true; 
      } 
      return false; 
     }; 

    }); 
} 

public void playNote(int note){ 
    // Play note 
    try { 
     mp.reset(); 
     mp.setDataSource(getApplicationContext(), Uri.parse("android.resource://" + getPackageName() + "/" + note)); 
     mp.prepare(); 
     mp.setLooping(true); 
     mp.start(); 
    } catch (IllegalArgumentException e) { 
     e.printStackTrace(); 
    } catch (IllegalStateException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

回答

相关问题