默认通知声音只有一次

时间:2012-08-17 15:34:53

标签: android audio notifications default

我有一个使用方向传感器的应用程序,我想在'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;
    }

0 个答案:

没有答案