0

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

0 回答 0