Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 默认通知只响一次_Android_Audio_Notifications_Default - Fatal编程技术网

Android 默认通知只响一次

Android 默认通知只响一次,android,audio,notifications,default,Android,Audio,Notifications,Default,我有一个使用方向传感器的应用程序,我想在“y”值高于170度时播放默认通知声音。问题是,第一次出现时,它发出的声音是正确的,但有两次(我想这是因为将canSound设置为false需要时间),而且在第一次出现后,如果“y”值再次高于170,听起来就不像我预期的那样。所以,问题是,我对mediaPlayer有什么错 提前谢谢 注意:这是我在public void onSensorChanged(传感器事件)中与我的问题相关的代码部分 if(y>170&&canSoun

我有一个使用方向传感器的应用程序,我想在“y”值高于170度时播放默认通知声音。问题是,第一次出现时,它发出的声音是正确的,但有两次(我想这是因为将canSound设置为false需要时间),而且在第一次出现后,如果“y”值再次高于170,听起来就不像我预期的那样。所以,问题是,我对mediaPlayer有什么错

提前谢谢

注意:这是我在public void onSensorChanged(传感器事件)中与我的问题相关的代码部分

    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的情况下仍保持声音(由于错误,它没有出现在上面的代码中)