2013-06-04 8 views
6
  • मेरे पास एक एंड्रॉइड ऐप है जिसमें कार्यक्षमता के हिस्से के रूप में Google मानचित्र V2 है।
  • मैं अपने प्रकट मेंऐप ऐप स्टार्ट पर जीपीएस की तलाश शुरू कर देता है, जब आवश्यक नहीं

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

    है, और सब कुछ किसी और नक्शे काम करने के लिए की जरूरत है।

  • मेरा ऐप नक्शे के साथ स्क्रीन पर नहीं शुरू होता है।

अब सवाल यह है कि ऐप शुरू होने पर मेरा फोन (गैलेक्सी नेक्सस, बस मामले में) स्थिति बार में जीपीएस आइकन दिखाता है, लेकिन जब मैं नक्शे के साथ स्क्रीन पर जाता हूं और इसके साथ काम करना शुरू करता हूं ? जब मैं मानचित्र स्क्रीन पर नहीं हूं तो मुझे अपने स्थान को ट्रैक करने और बैटरी पावर का उपयोग करने की आवश्यकता नहीं है।

उदाहरण के लिए ऐप मैसेंजर अपने मानचित्र के लिए जीपीएस का भी उपयोग करता है लेकिन आइकन केवल तब दिखाया जाता है जब आप मानचित्र स्क्रीन खोलते हैं, लॉन्च की गई पहली गतिविधि पर सही नहीं।

कुछ घंटों के लिए गुगल हो गया लेकिन कुछ भी नहीं मिला। किसी भी मदद की सराहना की जाएगी!

संपादित:

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 मुख्य गतिविधि में Google मानचित्र से बिल्कुल कुछ भी शामिल नहीं है, मैं ईमानदारी से यह दिखाने में कोई बिंदु नहीं देख रहा कि वहां क्या हो रहा है। इसके अलावा ऐप स्प्लैश स्क्रीन से शुरू होता है (उस बिंदु पर जीपीएस आइकन पहले ही स्टेटस बार में प्रदर्शित होता है) जिसमें केवल 1 सेकंड के लिए देरी की मुख्य गतिविधि का इरादा होता है। – Makks129

उत्तर

11

थोड़ी देर हमें पता चला कि समस्या घबराहट एसडीके में था हम हमारे परियोजना में उपयोग कर रहे थे के बाद ...

डिफ़ॉल्ट घबराहट तक सही एप्लिकेशन शुरू से ही स्थान की रिपोर्ट शुरू होता है। इसे बंद करने हम प्रयोग किया है:

FlurryAgent.setReportLocation(false); 

.../_-

+2

ओह मीठे जेसुस, मैं कभी नहीं पाया होगा कि यह क्या कारण था अगर यह आपके लिए नहीं था! – Gerstmann

+0

@Gerstmann आपका स्वागत है :) – Makks129

+0

मैंने अपने ऐप में सब कुछ हटाना शुरू कर दिया और यह पता लगाने के लिए कोड के बिट-बिट-बिट को फिर से सक्षम करना शुरू कर दिया कि यह फ़्लोरी था। फिर एक खोज के साथ आपका प्रश्न और उत्तर आया। काश मैं इसे पहले पाया था –

0

आप स्थान में लाने के के लगातार विधि को लागू करना होगा: GPS का उपयोग करना (केवल यदि उस पर है), तो वाईफ़ाई, और उसके बाद डेटा कनेक्शन इसके अलावा, अलग FINE_LOCATION से, निम्नलिखित too--

<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।कॉम/गाइड/विषय/स्थान/रणनीतियों.html यदि आपको इसके लिए एक विस्तृत कोड की आवश्यकता है, तो मुझे पता है और मैं इसे एक और उत्तर के रूप में पोस्ट करूंगा –

+0

आपके उत्तर, कुणाल के लिए धन्यवाद। मैंने उपरोक्त मेरे मानचित्र वर्ग का कुछ कोड जोड़ा है। मैंने आपके द्वारा दिए गए लिंक में वर्णित एक दृष्टिकोण का उपयोग करने की कोशिश की: mLocationListener, startGPS विधि, onDestroy विधि देखें। हालांकि मेरे गैलेक्सी नेक्सस जीपीएस पर अभी भी ऐप शुरू से ही शुरू होता है, न कि जब मैं मानचित्र गतिविधि दर्ज करता हूं। – 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 आइकन मुझे अब और परेशान नहीं करता है।

संबंधित मुद्दे