win Android ऐप FusedLocationApi का उपयोग करके एमुलेटर पर स्थान तक नहीं पहुंच सकता है



free download bluestacks for windows 8 (1)

मेरे पास एक एंड्रॉइड ऐप है जो स्थान प्राप्त करता है:

private LocationRequest createLocationRequest() {
    LocationRequest mLocationRequest = new LocationRequest();
    mLocationRequest.setInterval(120000);
    mLocationRequest.setFastestInterval(60000);
    mLocationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY);
    return mLocationRequest;
}

private GoogleApiClient getLocationApiClient(){
    return new GoogleApiClient.Builder(App.instance)
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
            .addApi(LocationServices.API)
            .build();
}

...

apiClient = getLocationApiClient();
apiClient.connect();

 @Override
public void onConnected(@Nullable Bundle bundle) {
   ...
   LocationRequest locationRequest = createLocationRequest();
   LocationServices.FusedLocationApi.requestLocationUpdates(apiClient, locationRequest, new LocationListener() {
            @Override
            public void onLocationChanged(Location newLocation) {
                //***THIS IS NEVER CALLED ON EMULATOR***
            }
    });
}

डिवाइस पर चलते समय (गैलेक्सी एस 3, एंड्रॉइड 4.4.4) बिल्कुल भी कोई समस्या नहीं है। इम्यूलेटर पर चलते समय (एंड्रॉइड स्टूडियो डिफॉल्ट क्यूमू, एंड्रॉइड 7.1, x86-64) मुझे अपने ऐप पर स्थान नहीं मिल रहा है onConnected को कहा जाता है, मैं आखिरी स्थान भी पढ़ सकता हूं, हालांकि मुझे कोई स्थान अपडेट नहीं मिलेगा ( requestLocationUpdates समापन कभी नहीं कहा जाता है)।

मैंने:

  • जोड़ा गया <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" /> प्रकट करने के लिए (मोटे और ठीक स्थान के अलावा)।
  • एमुलेटर पर उच्चतम सटीकता, बैटरी की बचत, डिवाइस पर बदलाव करने की कोशिश की
  • एम्यूलेटर जीयूआई से सेटिंग स्थान की कोशिश की
  • मॉनिटर एमुलेटर की "एंड्रॉइड एडीबी स्थान का उपयोग करें" ऑप्शन ऑन एंड ऑफ़
  • adb -s emulator-5555 emu geo fix 12.34 56.78 (कमांड काम करता है, क्यों यह देखने के लिए पढ़ते रहें)

मैं अभी भी एक स्थान अपडेट प्राप्त करने के लिए अपना ऐप नहीं ले सकता। मैंने एम्यूलेटर के अंतर्निहित Google नक्शे की कोशिश की है और इसे स्थान अपडेट पूरी तरह से प्राप्त हो गया है, जब मैं भौगोलिक सुधार के माध्यम से विभिन्न निर्देशांक भेजता हूं, तो मैप पर वर्तमान स्थिति को तुरंत बदल सकते हैं।

लेकिन मेरा ऐप पूरी तरह से स्थान अपडेट से अनजान है I मैंने एक और समन्वय भी भेजने से पहले कम से कम 2 मिनट (मेरा स्थान अनुरोध अंतराल) प्रतीक्षा करने की कोशिश की है मैं क्या गलत कर रहा हूं?


मैं एमुलेटर पर एक ही समस्या में चला गया है। मैंने पाया है कि केवल एक ही विकल्प PRIORITY_HIGH_ACCURACY का उपयोग करना है।

स्पष्टीकरण: यह एकमात्र विकल्प है जो एंड्रॉइड को जीपीएस चिप (एमुलेटर के मामले में वर्चुअल चिप) को चालू करने के लिए बाध्य करेगा। वास्तविक डिवाइस पर यह कोई समस्या नहीं है क्योंकि फोन अनुमानित स्थान का पता लगाने के लिए सेल रिसेप्शन और वाईफ़ाई का उपयोग कर सकता है। एमुलेटर पर कोई सेल रिसेप्शन नहीं है और वाईफ़ाई को केवल एक नेटवर्क कनेक्शन के रूप में समझाया गया है। तो एमुलेटर बहुत अधिक स्थान के लिए केवल जीपीएस का उपयोग कर सकते हैं।

यदि आप वास्तव में PRIORITY_HIGH_ACCURACY का उपयोग अपने वास्तविक अनुप्रयोग में नहीं करना चाहते हैं तो आप FUNDLocationApi के लिए PRIORITY_HIGH_ACCURACY पर सेट सटीकता के साथ (या उदाहरण एप ढूंढ सकते हैं) अपने वास्तविक ऐप (PRIORITY_BALANCED_POWER_ACCURACY) को चलाने से पहले चलाएं और वहां एक अंतिम ज्ञात स्थान उपलब्ध होगा





android-fusedlocation