2014-09-01 1 views
0

자동화 된 테스트 프로세스가 끝나면 알람 소리가 재생되어 운영자에게 알리는 테스트 앱을 개발 중입니다.사용자가 멈출 때까지 계속 소리를냅니다.

이 소리는 3 초 지속 알람 벨소리이며, 사용자가 전화 화면을 터치 할 때까지 루프로 재생해야합니다.

내가 MediaPlayer를 구현하는 방식이다

mp = MediaPlayer.create(MainActivity.this, R.raw.alarm); 
    try { 
     mp.prepare(); 
     mp.setLooping(true); 
     } catch (IllegalStateException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     mp.start(); 
    } 

내가 continuosly 사운드 재생을해야 mp.setLooping를 정의하지만, 그렇지 않습니다. 작동하지 않는

@Override 
public boolean onTouchEvent (MotionEvent event) { 
    if (event.getAction() == MotionEvent.ACTION_DOWN) { 
     /*If sound is playing, stops*/ 
     if (mp.isPlaying()) { 
      mp.stop(); 
     } 
     return true; 
    } 
    return super.onTouchEvent(event); 
} 

그래서 mp.setLooping 경우, 어떻게 continuosly 사운드 플레이를해야한다 :

그런 다음, 화면을 터치 소리를 중지?

답변

5

create()으로 MediaPlayer를 인스턴스화하면 준비 상태로 반환되므로 prepare()을 호출하면 안됩니다. 귀하의 경우 예외가 throw되므로 mp.setLooping(true)이 호출되지 않습니다.

+0

그런 식으로 작동합니다! 어쨌든 이제는 화면을 터치하는 알람을 멈출 수 없으며 소리는 항상 계속 재생됩니다. onTouchEvent 메소드의 문제점은 무엇입니까? – masmic

+0

글쎄, 나는 모든 전역 메소드를 관리하고이 메소드가 어디에 정의되어 있는지를 주요 활동으로하고 있지만, UI는 3 개의 프래그먼트로 구성되어 있으며 viewPager를 사용하여 탐색한다. – masmic

+0

Ok Mike,이 방법으로 소식을 수정할 수 있습니까? 또는 onTouchEvent와 동일한 구조입니까? – masmic

관련 문제