android - لا يمكن التطبيق الروبوت الوصول إلى الموقع على المحاكي باستخدام فوسلوكاتيونابي



android-emulator location (1)

لقد واجهت نفس المشكلة على المحاكي. الإصلاح الوحيد الذي اكتشفته هو استخدام PRIORITY_HIGH_ACCURACY.

إكسلاناتيون: هذا هو الخيار الوحيد الذي سيجبر الروبوت على تشغيل رقاقة غس (رقاقة افتراضية في حالة المحاكي). على جهاز حقيقي هذه ليست قضية لأن الهاتف يمكن استخدام استقبال الخلية وواي فاي لمعرفة موقع تقريبي. على المحاكي ليس هناك استقبال الخلية ويتم استخلاص واي فاي كما مجرد اتصال الشبكة. وبالتالي فإن المحاكي يمكن استخدام الكثير جدا فقط لتحديد المواقع للموقع.

إذا كنت حقا لا تريد استخدام PRIORITY_HIGH_ACCURACY في التطبيق الفعلي الخاص بك يمكنك إنشاء (أو العثور على مثال التطبيق) ل فوسلوكاتيونابي مع دقة تعيين PRIORITY_HIGH_ACCURACY. يمكنك تشغيل ذلك قبل تشغيل التطبيق الفعلي (PRIORITY_BALANCED_POWER_ACCURACY) وسيكون هناك آخر موقع معروف متاح.

لدي تطبيق أندرويد يحصل على الموقع:

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

عند تشغيل على الجهاز (غالاكسي S3، الروبوت 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 (يعمل الأوامر، والحفاظ على القراءة لنرى لماذا)

لا يزال لا يمكن الحصول على بلدي التطبيق للحصول على تحديث الموقع. لقد حاولت المدمج في خرائط جوجل مضاهاة ويحصل على تحديثات الموقع تماما، أستطيع أن أرى الموقف الحالي على الخريطة تتغير على الفور عندما أرسل إحداثيات مختلفة من خلال الإصلاح الجغرافي.

ولكن بلدي التطبيق هو غير مدرك تماما من تحديثات الموقع. لقد حاولت الانتظار 2 دقيقة على الأقل (موقع طلب الفاصل الزمني) قبل إرسال تنسيق آخر أيضا. ما الخطأ الذي افعله؟





android-fusedlocation