2017-04-17 6 views
0

첫 번째 앱 여행에서 다른 오류가 발생했습니다. 앱이로드 될 때 소리를 내고 싶습니다. .wav 파일은 무엇입니까? 2 초 정도 지속되지만 이전 삼성 S4에서 앱을 실행하면 재생되지 않습니다. IDE 또는 아무 것도 볼 수있는 오류가 없습니다. 'mp'에 값이 있는지 확인했습니다. 게시물을 둘러 보면서 대부분의 사람들은 'mp'가 null이라는 문제가 있습니다. 광산에는 가치가 있지만 전화에서 소리가 나오지 않습니다 ... 다시 말하지만, 어떤 도움도 인정됩니다!android에서 사운드 재생

public class OpeningScreen extends Activity { 
    @Override 
    // create the screen state 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     // connect the xml layout file 
     setContentView(R.layout.activity_opening_screen); 

     final MediaPlayer mp = new MediaPlayer(); 
     mp.create(this, R.raw.welcome_message); 

     mp.start(); 

     // create the on touch listener 
     ConstraintLayout layout = (ConstraintLayout) findViewById(R.id.opening_layout); 

     layout.setOnTouchListener(new View.OnTouchListener() { 
      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       // change the screen to a new state 
       Intent intent = new Intent(OpeningScreen.this, GameScreen.class); 

       // start the new activity 
       startActivity(intent); 

       // stop welcome sound (if still playing) 
       mp.stop(); 
       return true; 
      } 
     }); 
    } 
} 

답변

0

public static MediaPlayer create(Context context, int resid)은 지정된 리소스 ID에 대한 MediaPlayer를 만드는 정적 메서드입니다. create를 호출하면 참조 용법이없는 미디어 플레이어의 새 인스턴스가 생성된다는 것을 의미합니다.

final MediaPlayer mp = MediaPlayer.create(this, R.raw. welcome_message); 

final MediaPlayer mp = new MediaPlayer(); 
mp.create(this, R.raw.welcome_message); 

을 변경하려고 플레이어가 작동합니다.

+0

내가 처음으로 그렇게했습니다. 그러나 mp는이 코드를 통과 한 후에도 여전히 null입니다. –

+0

방금 ​​다시했는데 이번에는 효과가있었습니다. 어쩌면 내가 파일 이름이나 일종의 일을 어지럽 혔을 수도 있습니다. 고맙습니다! –

0

왜 최종 사용합니까? 당신이들의 OnDestroy에서 중지하면

MediaPlayer mp = MediaPlayer.create(OpeningScreen.this, R.raw.welcome_message); 
mp.start(); 

는 또한 MediaPlayer를 중지하는 것이 낫다으로 MP3를 재생할 수 있습니다.

public void onDestroy() { 

    mp.stop(); 
    super.onDestroy(); 

} 
+0

final은 내부 클래스에서 mp에 액세스 할 수 있도록 사용됩니다. 비록 내가이 함수를 만들었다면 어쨌든'mp'가 선언 된 바깥에 있어야 할 것이므로 여전히 확실하게 final을 요구할 것입니다. –