我有一个使用方向传感器的应用程序,我想在'y'值高于170度时播放默认通知声音。问题是它第一次发生它会使声音正确但是两次(我想这是因为它需要花费时间来使canSound变为false)以及第一次发生之后,如果'y'值又是上限超过170,它听起来并不像我预期的那样。所以问题是,我对mediaPlayer做错了什么?
提前致谢。
P.D.:这是我在public void onSensorChanged(SensorEvent事件)中与我的问题相关的代码的一部分。
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;
}