Android 默认通知只响一次
我有一个使用方向传感器的应用程序,我想在“y”值高于170度时播放默认通知声音。问题是,第一次出现时,它发出的声音是正确的,但有两次(我想这是因为将canSound设置为false需要时间),而且在第一次出现后,如果“y”值再次高于170,听起来就不像我预期的那样。所以,问题是,我对mediaPlayer有什么错 提前谢谢 注意:这是我在public void onSensorChanged(传感器事件)中与我的问题相关的代码部分Android 默认通知只响一次,android,audio,notifications,default,Android,Audio,Notifications,Default,我有一个使用方向传感器的应用程序,我想在“y”值高于170度时播放默认通知声音。问题是,第一次出现时,它发出的声音是正确的,但有两次(我想这是因为将canSound设置为false需要时间),而且在第一次出现后,如果“y”值再次高于170,听起来就不像我预期的那样。所以,问题是,我对mediaPlayer有什么错 提前谢谢 注意:这是我在public void onSensorChanged(传感器事件)中与我的问题相关的代码部分 if(y>170&&canSoun
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;
}
if(y>170&&canSound)
{
canSound=false;
uridefaultringtoneuri=ringtonemager.getDefaultUri(ringtonemager.TYPE_通知);
mediaPlayer=新的mediaPlayer();
尝试
{
setDataSource(上下文,defaultRingtoneUri);
mediaPlayer.setAudioStreamType(AudioManager.STREAM_通知);
mediaPlayer.prepare();
mediaPlayer.setOnCompletionListener(新的OnCompletionListener()
{
@凌驾
完成时的公共作废(MediaPlayer mp)
{
mp.release();
}
});
mediaPlayer.start();
}
捕获(IllegalArgumentException e)
{
e、 printStackTrace();
}
捕获(安全异常e)
{
e、 printStackTrace();
}
捕获(非法状态)
{
e、 printStackTrace();
}
捕获(IOE异常)
{
e、 printStackTrace();
}
}
}
其他的
{
如果(Y删除发布并再次尝试Hanks Michel。将发布替换为重置它可以工作(onCompletion中没有任何内容不工作),尽管它在将canSound设置为false的情况下仍保持声音(由于错误,它没有出现在上面的代码中)