• 我有一个Android应用,其中包含Google Maps V2作为功能的一部分。
  • 我有
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    

    在我的清单中,以及地图正常工作所需的其他一切。
  • 我的应用程序未在屏幕上显示地图。

  • 现在的问题是,为什么我的手机(Galaxy Nexus,以防万一)在应用启动时立即在状态栏中显示GPS图标,但是当我进入带有地图的屏幕并开始使用它时却不显示?当我不在地图屏幕上时,无需跟踪位置并使用电池电量。

    例如,What's App Messenger还在其地图上使用GPS,但是仅当您打开地图屏幕时才显示该图标,而不会在启动的第一个活动上显示该图标。

    Google搜索了几个小时,但什么也没发现。
    任何帮助将不胜感激!

    编辑:

    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);
    }
    

    最佳答案

    一段时间后,我们发现问题出在我们在项目中使用的Flurry SDK中...

    默认情况下,Flurry从应用程序开始就开始报告位置。要关闭它,我们使用了:

    FlurryAgent.setReportLocation(false);
    

    ... / _-

    07-26 09:33
    查看更多