2015-01-22 5 views
0

나는 많은 등 피아노사운드가 안드로이드에 약간의 지연이 앱

처럼 연주하는 내 응용 프로그램과 많은 짧은 노래 버튼 그러나 코드 아래 사용이 후 경기, 응용 프로그램은 노래를 재생할 때, 약의 지연이 버튼을 클릭하면 앱이 사운드를 재생하는 사이에 0.5 초입니다.

어떻게 해결할 수 있습니까?

public class MainActivity extends Activity { 
    MediaPlayer mp; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
       WindowManager.LayoutParams.FLAG_FULLSCREEN); 


     final Button g1 = (Button) findViewById(R.id.bu1); 
     final Button g2 = (Button) findViewById(R.id.bu2); 
     final Button g3 = (Button) findViewById(R.id.bu3); 
     final Button g4 = (Button) findViewById(R.id.bu4); 
     final Button g5 = (Button) findViewById(R.id.bu5); 






       g1.setOnTouchListener(new OnTouchListener() { 
        MediaPlayer mp = MediaPlayer.create(MainActivity.this, R.raw.closehh); 
        @Override 
        public boolean onTouch(View view, MotionEvent motionevent) 
        { 
         int action = motionevent.getAction(); 
         if (action == MotionEvent.ACTION_DOWN) 
         {   
            mp.start(); 
            mp.seekTo(0); 
            g1.setBackgroundResource(R.drawable.a0005z); 

         } 
         if (action == MotionEvent.ACTION_UP){ 
          g1.setBackgroundResource(R.drawable.a0005); 

         } 

         return false; 
        } 
       }); 

       g2.setOnTouchListener(new OnTouchListener() { 
        MediaPlayer mp = MediaPlayer.create(MainActivity.this, R.raw.openhh); 
        @Override 
        public boolean onTouch(View view, MotionEvent motionevent) 
        { 
         int action = motionevent.getAction(); 
         if (action == MotionEvent.ACTION_DOWN) 
         {   
            mp.start(); 
            mp.seekTo(0); 
            g2.setBackgroundResource(R.drawable.a0005z); 

         } 
         if (action == MotionEvent.ACTION_UP){ 
          g2.setBackgroundResource(R.drawable.a0005); 

         } 

         return false; 
        } 
       }); 

답변

0

SoundPool 클래스는 낮은 지연 시간의 사운드 리소스 재생 용입니다. MediaPlayer를 사용하지만 응답 성있는 재생을 위해 메모리에 스트림을로드합니다.

+0

많은 사람에게 감사드립니다. –

관련 문제