2013-06-04 35 views
6
  • 我有一個安裝了Google Maps V2的Android應用程序,作爲其功能的一部分。
  • 應用程序開始在應用程序啓動時搜索GPS,而不是在需要時

    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 
    

    在我的清單,以及其他一切需要映射到工作。

  • 我的應用程序不會在屏幕上顯示地圖。

現在的問題是,爲什麼我的手機(Galaxy Nexus,以防萬一)在應用程序啓動時在狀態欄右側開始顯示GPS圖標,但不是當我用地圖來到屏幕並開始使用它時?當我不在地圖屏幕上時,我不需要跟蹤我的位置並使用電池電量。

例如什麼是App messenger也會將GPS用於其地圖,但僅當您打開地圖屏幕時纔會顯示該圖標,而不是在啓動的第一個活動上顯示該圖標。

谷歌搜索了幾個小時,但一無所獲。 任何幫助將不勝感激!

編輯:

MapActivity類

private LocationListener mLocationListener = new LocationListener() { 
    @Override 
    public void onLocationChanged(Location location) { 
    } 
    @Override 
    public void onStatusChanged(String provider, int status, Bundle extras) { 
    } 
    @Override 
    public void onProviderEnabled(String provider) { 
    } 
    @Override 
    public void onProviderDisabled(String provider) { 
    } 
}; 

@Override 
public void onCreate(Bundle savedState) { 
    super.onCreate(savedState); 
    setContentView(R.layout.map_activity); 

    startGPS(); 
    initMap(); 
    mMapView = (MapView) findViewById(R.id.map_google_map); 
    mMapView.onCreate(null); 
    mGoogleMap = mMapView.getMap(); 
    if (mGoogleMap != null) { 
     customizeGoogleMap(); 
     loadAndFillMap(); 
    } 
} 

private void startGPS() { 
    mLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
    mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mLocationListener); 
} 

private void initMap() { 
    try { 
     MapsInitializer.initialize(this); 
    } catch (GooglePlayServicesNotAvailableException e) { 
     e.printStackTrace(); 
    } 
} 

private void customizeGoogleMap() { 
    mGoogleMap.getUiSettings().setMyLocationButtonEnabled(true); 
    mGoogleMap.setMyLocationEnabled(true); 
} 

private void loadAndFillMap() { 
    new LoadAndFillMapTask().execute(); 
} 

private class LoadAndFillMapTask extends AsyncTask<Void, Void, Void> { 
    @Override 
    protected Void doInBackground(Void... params) { 
     String address = Session.appData().getSelectedAddress(); 
     mMapLocation = Api.getMapApi().getMapLocation(address); 
     return null; 
    } 
    @Override 
    protected void onPostExecute(Void aVoid) { 
     fillMap(); 
    } 
} 

private void fillMap() { 
    // filling Google Map with markers etc. 
} 

@Override 
public void onDestroy() { 
    super.onDestroy(); 
    if (mMapView != null) { 
     mMapView.onDestroy(); 
    } 
    mLocationManager.removeUpdates(mLocationListener); 
} 
+6

我們可以看到主要活動的一些代碼嗎? – mithrop

+0

@mithrop主要活動包含絕對沒有任何與谷歌地圖相關的東西,我真的沒有看到在那裏發生的事情。此外,該應用程序以啓動畫面開始(此時GPS圖標已顯示在狀態欄中),其中僅包含延遲1秒的主要活動的意圖。 – Makks129

回答

11

我們發現問題是在亂舞SDK,我們用我們的項目過了一會兒......

默認情況下亂舞開始直接從應用開始報告位置。要關閉它,我們使用:

FlurryAgent.setReportLocation(false); 

.../_-

+2

哦,甜美的Jesús,如果不適合你,我永遠不會知道是什麼原因造成的! – Gerstmann

+0

@Gerstmann不客氣:) – Makks129

+0

我開始刪除我應用程序中的所有內容,並開始重新啓用代碼,以發現它是Flurry。然後通過搜索發現你的問題並回復。我希望早些時候發現它 –

0

你必須實現位置取的連續法:用GPS(僅當它是上),那麼無線網絡,然後數據連接。此外,除了FINE_LOCATION,使用下面的太...

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/> 
+0

關於「連續取位」的方法,您能有更具體的瞭解嗎? 同樣來自ACCESS_MOCK_LOCATION上的文檔,您可以看到它用於測試目的。 – Makks129

+0

嘗試關注鏈接 - http://developer.android。com/guide/topics/location/strategies.html 如果你需要一個詳細的代碼,我知道,我會張貼它作爲另一個答案在這裏 –

+0

感謝您的回答,Kunal。 我已經在上面添加了我的地圖類的一些代碼。我嘗試使用您給出的鏈接中描述的方法:請參閱mLocationListener,startGPS方法,onDestroy方法。但是,我的Galaxy Nexus GPS仍然從應用程序啓動開始,而不是在我輸入地圖活動時啓動。 – Makks129

0

我不知道它是否是最好的解決辦法,但我用this approach

在我出發的活動我這樣做:

@Override 
public void onCreate(Bundle savedState) { 
    super.onCreate(savedState); 
    if (GpsUtils.canToggleGps(this)) { 
     GpsUtils.turnGpsOff(this); 
    } 
    //... 
} 

在我MapActivity:狀態欄

@Override 
public void onCreate(Bundle savedState) { 
    super.onCreate(savedState); 
    if (GpsUtils.canToggleGps(this)) { 
     GpsUtils.turnGpsOn(this); 
    } 
    //... 
} 

@Override 
public void onDestroy() { 
    super.onDestroy(); 
    if (GpsUtils.canToggleGps(this)) { 
     GpsUtils.turnGpsOff(this); 
    } 
    //... 
} 

GPS圖標不打擾我了。

相關問題