方向センサーを使用するアプリケーションがあり、「y」の値が170度を超える場合にデフォルトの通知音を再生したいと思います。問題は、最初に発生したときは正しく音が鳴りますが、2回(これはcanSoundをfalseに設定するのにかかる時間のためだと思います)、また最初に発生した後は、「y」の値が再び高い場合170を超えると、思ったとおりに聞こえないので、問題は、mediaPlayerで何が間違っているのかということです。
前もって感謝します。
PD:これは、私の問題に関連するpublic void onSensorChanged(SensorEvent event)内にあるコードの一部です。
if(y>170&&canSound)
{
canSound=false;
Uri defaultRingtoneUri=RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
mediaPlayer = new MediaPlayer();
try
{
mediaPlayer.setDataSource(context, defaultRingtoneUri);
mediaPlayer.setAudioStreamType(AudioManager.STREAM_NOTIFICATION);
mediaPlayer.prepare();
mediaPlayer.setOnCompletionListener(new OnCompletionListener()
{
@Override
public void onCompletion(MediaPlayer mp)
{
mp.release();
}
});
mediaPlayer.start();
}
catch (IllegalArgumentException e)
{
e.printStackTrace();
}
catch (SecurityException e)
{
e.printStackTrace();
}
catch (IllegalStateException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
else
{
if(y<170&&!canSound)
{
mediaPlayer.stop();
mediaPlayer.reset();
canSound=true;
}