2016-08-10 7 views
1

私は既に地図上の位置を検出し、ユーザからの距離をメートルで計算する仕組みになっています。Java AndroidでonLocationChangedでMediaPlayerを一度再生するには?

私の生のオーディオファイルは、その位置が望みの距離にある場合(私の場合は30メートル)再生したいと思います。

Iすでに)(私のonLocationChangedにこのコードを作っ

@Override 
public void onLocationChanged(Location location) { 
    try { 
      float dis = calcdist(location.getLatitude(),location.getLongitude,lat,lng); 
      if(dis <= 30) { 
      MediaPlayer mp = MediaPlayer.create(this,R.raw.sound); 
      mp.setLooping(false); 
      mp.start(); 
      } else { 
      mp.stop(); 
      } 
     } catch (Exception e) { 
      Toast.makeText(getApplicationContext(),"Error",Toast.LENGTH_LONG).show(); 
      } 
    } 

今の問題は、ユーザーが再びその機能上移動、その火を取得し、距離がよりになるまで何度も音を再生したときに、あります30メートル以上

私はそれがなぜ正確に起こっているのか知っていますが、私はこれを行う正しい方法を見つけることができません。

誰でも手伝ってもらえますか?

ありがとうございます!

答えて

1
@Override 
public void onLocationChanged(Location location) { 
    try { 
      int a = 0; 
      float dis = calcdist(location.getLatitude(),location.getLongitude,lat,lng); 
      if(dis <= 30) { 

      int a = a+1; //add 1 if you are in the circle 

      if(a = 1) { //if a=1 it will do the rest 
        MediaPlayer mp = MediaPlayer.create(this,R.raw.sound); 
        mp.setLooping(false); 
        mp.start(); 
       } else { 
        mp.stop(); 
       } 
      } 

      //if you are not int he circle 

      if(dis > 30) { 
       int a = 0; 
      } 

     } catch (Exception e) { 
     Toast.makeText(getApplicationContext(),"Error",Toast.LENGTH_LONG).show(); 
     } 
    } 

この内容はどうですか?あなたがすでに30メートルのサークルに入っている場合に設定されます。もしそうなら、あなたはそのオーディオを演奏させます。そうでなければ何もしません。私は英語にすみません、私があなたを助けてくれることを願って申し訳ありません。

関連する問題