2016-12-22 1 views
2

사용자가 버튼을 클릭 할 때 클릭 소리를 재생하는 데 MediaPlayer를 사용하고 있습니다. 때로는 소리가 좋지만 다른 시간은 너무 느립니다. 예를 들어 첫 번째 클릭은 괜찮지 만 두 번째 클릭은 너무 느립니다.MediaPlayer가 제대로 작동하지 않습니다.

private MediaPlayer mClickSound; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    ... 
    mClickSound = MediaPlayer.create(this, R.raw.click); 
} 

@Override 
public void onClick(View view) { 
    try { 
     if (mClickSound.isPlaying()) { 
      mClickSound.stop(); 
      mClickSound.release(); 
      mClickSound = MediaPlayer.create(this, R.raw.click); 
     } 
     mClickSound.start(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

답변

0

이 시도 :
다음은 내 코드입니다

mClickSound.reset(); 
AssetFileDescriptor afd = context.getResources().openRawResourceFd(R.raw.click); 
if (afd == null) return; 
mClickSound.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength()); 
mClickSound.start(); 
afd.close(); 

setDataSource 여기에서 가져온 것입니다 : https://stackoverflow.com/a/20111291/6159609

리셋 방법은 빠른 있어야한다.

+0

모든 – hosseinAmini

0

나를 위해 코드 작업을 잘 아래에 시도하십시오 ...

public class MainActivity extends AppCompatActivity implements View.OnClickListener 
{ 
    Button btn; 
    MediaPlayer mClickSound; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     btn = (Button) findViewById(R.id.button); 
     mClickSound = MediaPlayer.create(this, R.raw.click); 
     btn.setOnClickListener(this); 
    } 

    @Override 
    public void onClick(View view) { 
     if (mClickSound.isPlaying()) { 
      mClickSound.reset(); 
     } 
     else { 
      mClickSound = MediaPlayer.create(this, R.raw.click); 
      mClickSound.start(); 
     } 
    } 
} 
+0

같은 결과 작동하지 .... – hosseinAmini

+0

하지만 난 우리의 응용 프로그램에서 제대로이 기능이 작동을 확인 ... –

관련 문제