0

方向センサーを使用するアプリケーションがあり、「y」の値が170度を超える場合にデフォルトの通知音を再生したいと思います。問題は、最初に発生したときは正しく音が鳴りますが、2回(これは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