0

現在の速度がユーザーが設定した警告速度制限を超えたときに「ビープ音」を鳴らすアプリのコードを書いています。以下に示すコードは 内onLocationChanged()に記述されていますが、何らかの論理的な理由で、ビープ音が 1 回だけ鳴って停止します。これは、ループを 1 回通過した後、pastTime と curTime が追跡を失い、その後 if 条件が論理的に真ではないことを示しています。したがって、ループをスキップします。5 秒の遅延が必要な理由は、ビープ音の間に十分な時間遅延があり、ビープ音が重ならないようにするためです。アクティビティの最初に、pasTime を 0 で初期化しました。これに対する修正に関する提案は大歓迎です。またcurTime = c.getTimeInMillis()、場所リスナーで場所が変更されるたびに。

if (Activity2.mySpeedmph > mySpeed_max & curTime > pastTime+5000)
{
    player = MediaPlayer.create(Activity2.this, R.raw.beep);  
    player.setLooping(false);     
    player.setVolume(100,100);         
    player.start();    
    pastTime = curTime;
}

これは非常に具体的な問題であり、これに関連するものは見つかりませんでした。私はそれが専門家にとって非常に単純な問題であることを知っています。

4

1 に答える 1

0

ここで見下すつもりはありません (この回答は、従来の IT ヘルプデスクの「オフにしてから再度オンにしてみましたか?」のように聞こえます)、すべてのベースをカバーしているだけです。

更新していcurTimeますか?あなたが説明しているpastTimeのは、元々ははるか昔にcurTime設定されていて、ループの外で一度設定され、更新されていない場合に表示されるものです。

それができない場合は、おそらく、そのifステートメントに含まれる変数のサンプルを ( の前にif) 取得して、それらがどの値に設定されているかを確認する必要があります。

または、事前に一方の条件を強制的に true にする (他のActivity.mySpeedmph = mySpeed_max + 1;条件の動作を確認するために使用するなど) 。

于 2012-05-11T01:29:37.350 に答える