我有一个使用方向传感器的应用程序,我想在“y”值高于 170 度时播放默认通知声音。问题是它第一次发生时它会正确发出声音但两次(我想这是因为将 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;
}