2012-04-25 12 views
0

私は自分のサーバーにgpsポイントを送信するsingeltonスレッドクラスを持っています。クラスはgpsの位置を保持し、リフレッシュします。GPSの場所が見つかりません

FinderThread:

public class FinderThread extends Thread { 
    private static FinderThread SINGLETON; 
    public boolean isinterrupt = true; 
    public int maxage; 
    public int minage; 
    public int distance; 
    public String gender; 
    public String latitude; 
    public String longitude; 
    public String sid; 
    public Context ctx; 
    LocationManager gps; 
    boolean nav; 
    SharedPreferences pref; 
    private Handler dlh; 
    private Handler myLocationHandler; 
    boolean pause=false; 




    private FinderThread(Context ctx,Handler dlh, Handler myLocationHandler) { 
     this.ctx = ctx; 

     gps = (LocationManager) ctx.getSystemService(Context.LOCATION_SERVICE); 
     gps.requestLocationUpdates(LocationManager.GPS_PROVIDER,60000, 20, llistener); 

     pref = ctx.getSharedPreferences("NFF", 0); 
     sid = pref.getString("sid", ""); 

     this.dlh = dlh; 

     if (myLocationHandler!=null) 
     { 
      this.myLocationHandler = myLocationHandler; 
     } 
     if(myLocationHandler != null) 
     { 
      myLocationHandler.sendEmptyMessage(0); 
     } 

    } 
    public static synchronized FinderThread getInstance(Context ctx,Handler dlh, Handler myLocationHandler) 
    { 
     if (SINGLETON == null) // falls null 
     { 
       SINGLETON = new FinderThread (ctx,dlh,myLocationHandler);//instanzieren 
     } 
     else 
     { 
      SINGLETON.myLocationHandler= myLocationHandler; 
      SINGLETON.dlh = dlh; 
      myLocationHandler.sendEmptyMessage(0); 
     } 
     return SINGLETON; 
    } 

    /* 
    @Override 
    public synchronized void start() { 
     if(SINGLETON != null) 
     { 
      SINGLETON.start(); 
     } 
    } 
    public synchronized void pause() 
    { 
     if(SINGLETON.getState()==State.RUNNABLE || SINGLETON.getState()==State.WAITING) 
     { 
       SINGLETON.pause = true; 

     } 
    } 
    public synchronized void tcontinue() 
    { 
     if(SINGLETON.getState()==State.RUNNABLE || SINGLETON.getState()==State.WAITING) 
     { 
       SINGLETON.pause = false; 

     } 
    } 
    public synchronized boolean isPaused() 
    { 
     return SINGLETON.pause; 
    } 
    */ 

    public synchronized void pause() 
    { 
     this.pause = true; 
    } 
    public synchronized boolean isPaused() 
    { 
     return this.pause; 
    } 
    public synchronized void tcontinue() 
    { 
       this.pause = false; 
    } 

    @Override 
    public void run() { 
     //String locationProvider = LocationManager.GPS_PROVIDER; 
     //Location lastpoint = gps.getLastKnownLocation(locationProvider); 

     //longitude = String.valueOf(lastpoint.getLongitude()); 
     //latitude = String.valueOf(lastpoint.getLatitude()); 

     try 
     { 
      while (isinterrupt) { 
       if(!pause) 
       { 
        Log.e("NFF", "Finder Thread Begin"); 
        RestConnection r = new RestConnection("finder", dlh, "POST"); 
        r.setParameter("minage", String.valueOf(minage)); 
        r.setParameter("maxage", String.valueOf(maxage)); 
        r.setParameter("distance", String.valueOf(distance)); 
        r.setParameter("gender", String.valueOf(gender)); 
        r.setParameter("latitude", String.valueOf(latitude)); 
        r.setParameter("longitude", String.valueOf(longitude)); 
        r.setParameter("sid", sid); 
        Log.e("NFF Finder Paramater", String.valueOf(minage)+" "+String.valueOf(maxage)+" "+String.valueOf(distance)+" "+String.valueOf(gender) + " "+String.valueOf(latitude)+" " +String.valueOf(longitude)+ " " + sid ); 

        r.start(); 
       } 

       Thread.sleep(10000); 
      } 
     } 
     catch (InterruptedException e) { 
      Log.e("NFF FT", "InterruptedException"); 
      isinterrupt = false; 
     } 
    } 
    private LocationListener llistener = new LocationListener(){ 

     @Override 
     public void onLocationChanged(Location location) { 
      if(String.valueOf(location.getLatitude())!= null) 
      { 
       latitude = String.valueOf(location.getLatitude()); 
       longitude = String.valueOf(location.getLongitude()); 
       if(myLocationHandler != null) 
       { 
        myLocationHandler.sendEmptyMessage(0); 
       } 
      } 


     } 

     @Override 
     public void onProviderDisabled(String provider) { 
      Log.e("NFF", "GPS Disabled"); 
      isinterrupt = true; 

     } 

     @Override 
     public void onProviderEnabled(String provider) { 
      Log.e("NFF", "GPS Enabled"); 

     } 

     @Override 
     public void onStatusChanged(String provider, int status, Bundle extras) { 
      // TODO Auto-generated method stub 

     } 

    }; 
    public void saveProperties() 
    { 
     Editor editor = pref.edit(); 
     editor.putInt("maxage", maxage); 
     editor.putInt("minage", minage); 
     editor.putInt("distance", distance); 
     editor.putString("gender", gender); 
     editor.putString("lat", latitude); 
     editor.putString("long", longitude); 
     editor.commit(); 

    } 
    public void loadProperties() 
    { 
     maxage = pref.getInt("maxage", -1); 
     minage = pref.getInt("minage", -1); 
     distance = pref.getInt("distance", -1); 
     gender = pref.getString("gender", "f"); 
     latitude = pref.getString("lat", "f"); 
     longitude = pref.getString("long", "f"); 
    } 
    public synchronized void pushSettings() 
    { 
     SINGLETON.maxage = maxage; 
     SINGLETON.minage = minage; 
     SINGLETON.distance = distance; 
     SINGLETON.gender = gender; 
     SINGLETON.latitude = latitude; 
     SINGLETON.longitude = longitude; 
    } 




} 

私はエミュレータ上で私のアプリをテストし、エミュレータ制御everthing作業罰金と位置を設定します。私は私の携帯電話でそれをテストすると、ドロイドは、位置を見つけることはありません。私はアプリ "GPSテスト"をテストして、そこに5つの衛星で3分以内に位置を見つける。

助けてください

+0

屋外でも屋内でもテストしていますか?gpsは屋内で動作しないためですか? –

+0

屋外 - >私は、アプリケーション "gps test"が場所を見つけたと書いています – user547995

+0

あなたは通知と通知をトリガするのに必要な距離の間の時間を減らそうとしましたか? – dymmeh

答えて

0

確かにそこにすべてがあるようです。

あなたはFINE_LOCATIONのマニフェストの許可を受けていますか?

私が行う提案の1つは、requestLocationUpdates()を変更して、それらの間の時間が0であり、それらの間の距離が0である修正を要求するようにすることです。私が見たすべてのGPS受信機は、ほとんどのgpsエンジンがどのように機能しているか、この設定で1秒に1回程度の修正を行います。あなたのリクエストに入れた1分20メートルがあなたを悩ませているのは、ちょっとしたチャンスです。この提案を使って修正が得られたら、そこから作業してgpsがオンになっている時間を最小限に抑えることができます。

幸運を祈る!

関連する問題