2017-04-02 4 views
0

버튼을 누를 때마다 소리가 나도록 소리를 설정했습니다 (버튼을 여러 번 클릭해야하기 때문에 버튼입니다). 프로그램을 실행하면 총소리가 나는 매번 재생되지만, 28 번째 버튼을 누르면 소리가 더 이상 재생되지 않습니다. 그러나 내가 추가 한 Toast은 여전히 ​​작동합니다. 왜 그런지 아십니까?버튼 효과음 만 작동합니다. 28 회

activity_main.xml :

<Button 
     android:id="@+id/fire" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="fire" 
     android:onClick="fire" 
     android:textSize="35sp" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" /> 

Main.java : 29 시간 후

package com.example.brans.zoombie; 

import android.media.MediaPlayer; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Toast; 

public class Main extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
} 

public void fire(View v){ 
    MediaPlayer mp = MediaPlayer.create(Main.this, R.raw.pistol); 
    mp.start(); 
    Toast.makeText(this, "shot fired", Toast.LENGTH_SHORT).show(); 
} 
} 

는 로그 캣이 말한다.

04-02 16:07:56.371 23703-23717/com.example.brans.zoombie  V/MediaPlayer:message received msg=100, ext1=1, ext2=-19 
04-02 16:07:56.371 23703-23717/com.example.brans.zoombie E/MediaPlayer: error (1, -19) 
04-02 16:07:56.371 23703-23717/com.example.brans.zoombie V/MediaPlayer: callback application 
04-02 16:07:56.371 23703-23717/com.example.brans.zoombie V/MediaPlayer: back from callback 
+0

다른 변수의 상태를 확인하기 위해 29 일에 중단되는 중단 점은 어떻습니까? – efekctive

답변

1

메모리 예외가 발생하지 않도록 RAM에서 미디어 플레이어를 제거해야합니다.

public void fire(View v){ 
    MediaPlayer mp = MediaPlayer.create(Main.this, R.raw.pistol); 
    mp.start(); 
    Toast.makeText(this, "shot fired", Toast.LENGTH_SHORT).show(); 
    mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
    @Override 
    public void onCompletion(MediaPlayer mediaPlayer) { 
     mp.stop(); 
     if (mp != null) { 
      mp.release(); 
     } 

     } 
    }); 
} 
+0

'메소드 'killMediaPlayer()'를 해결할 수 없습니다. –

+0

방금 ​​업데이트 한 새 코드를 사용해보십시오. – Nobody

+0

이 코드가 작동합니다. 내가 바꾼 한 가지는 mp를 final로 만드는 것입니다. –

0

난 당신이 다음 다른 시간에 재생을 다시 완성 된 소리에서 풀어 미디어 플레이어를 공개해야한다고 생각합니다. 그래서 그것은 더 이상 기억에 없을 것입니다.