2013-01-13 25 views
0

我已經創建了獲取相關經緯度並在數據庫中更新的應用程序。問題是,當我在屋頂或商場等屋檐下時...我一直在我的應用程序上獲取GPS搜索圖標。如何在Android屋頂下處理GPS

我正在使用一個按鈕來觸發Mylocation(),它是監聽器。

按鈕有以下幾點:

locationListener = new MyLocationListener();       
location.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 5, locationListener); 

和下mylocationlistener方法我有

private class MyLocationListener implements LocationListener { 
    @Override 
    public void onLocationChanged(Location loc) { 
     try { 
      Thread.sleep(1000); 
      Toast.makeText(getBaseContext(),"Location: Lat:" + loc.getLatitude() + " Lng:" + loc.getLongitude(),Toast.LENGTH_SHORT).show(); 
      location.removeUpdates(locationListener); 
      location = null; 
      finish(); 
      } 
      catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 
     } 

我得到的值正確烤沒有任何問題,並且應用程序完成一個GPS圖標會消失,但當我在屋頂內時,頂部的GPS圖標繼續搜索GPS。該圖標不會消失。

我該如何解決這個問題?如果Gps信號良好,我是否需要放置一個條件,如果不是GPS信號不好,就啓動GPS。如果是的話如何?

謝謝!

回答

1

由於在這個問題上How to measure GPS signal strength on Android描述,

所以假設你真的是信號強度,就可以得到GpsStatus通過LocationManager.getGpsStatus(),這使您可以通過getSatellites()衛星的列表,以及這些中的每一個有一個信噪比(getSnr()

+0

我把以下內容點擊: GpsStatus gpsStatus = location.getGpsStatus(null); \t \t \t \t \t if(gpsStatus!= null) { locationListener = new MyLocationListener(); location.requestLocationUpdates(LocationManager.GPS_PROVIDER,5000,5,locationListener); } else { locationListener = new MyLocationListener(); location.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,5000,5,locationListener);} 沒有變化會像以前一樣嗎? – TheAndroDev

0

你可以考慮使用網絡位置服務以及或代替GPS。你也可以考慮增加一個超時。