Барлық орналасу қызметтері қосылған болса да Google Location Services getBestProvider нөлді қайтарады

Карталар бағдарламасы дұрыс орынды көрсетсе де, орын қызметтері getBestProvider қоңырауы нөлге оралады. FINE_LOCATION және COARSE_LOCATION рұқсаттары манифестте болады.

public static Location getLocation(Context context) {
    LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
    Criteria criteria = new Criteria();
    Location myLocation = locationManager.getLastKnownLocation(locationManager.getBestProvider(criteria, false));
    return myLocation;
}

Кез-келген көмек өте жоғары бағалануы керек еді, себебі бұл жердегі қызметтермен жұмыс істегенде бірінші рет. Алдын-ала рақмет.

3
Менің ойымша, -ті пайдаланасыз
қосылды автор Analizer, көзі

6 жауаптар

GPS, NETWORK немесе ең жақсы провайдерге қарамастан, барлық жергілікті жұмыс орнында (құрылғымен) кэште орналасу қағидасы бойынша жұмыс істейді.

Бұл тәжірибені көріңіз. Сіздің physical орныңызды өзгертіңіз (айналаңызда, шамамен 200 м қашықтықта жүріңіз) және Google карталарын салыңыз, кенеттен сіздің бағдарламаңыз да дұрыс координаттарын қайтарады. Себебі Google карталары жергілікті кэш жаңартуын бастау әдісін біледі. Мен (бақытымызда) бұл кэш жаңартуды бастаудың жолын таптым.

Мұны жай ғана сіздің getLastKnownLocation-ға дейін және сиқыр болғанға дейін шақырыңыз.

HomeScreen.getLocationManager().requestLocationUpdates(
            LocationManager.NETWORK_PROVIDER, 0, 0, new LocationListener() {
            @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 onLocationChanged(final Location location) {
        }
    });

Немесе LocationClient қолданбасын пайдаланыңыз. Орналасқан жерді жаңарту үшін жаңа API.

4
қосылды
Мен оны сынап көріп, жауапымды тиісті түрде өңдеймін. Рахмет.
қосылды автор Siddharth, көзі
getLastKnownLocation егер CURRENT орынды қаласаңыз, LAST NOW орнын қайтарады, міндетті түрде жаңартуды сұрауыңыз керек! Бір орынды қаласаңыз, requestSingleUpdate пайдаланыңыз. requestLocationUpdates пайдалану 0, 0 көмегімен мерзімді жаңартуларды іске қосады және батареяны төгетін болады! Журнал жолын onLocationChanged дегенге қоя отырып, оны қаншалықты жиі қабылданады.
қосылды автор TWiStErRob, көзі
Бұл шешім болды. Провайдерлерде сұрауLocationUpdates деп атауға тура келді.
қосылды автор Haberdashery12345, көзі

GPS, NETWORK немесе ең жақсы провайдерге қарамастан, барлық жергілікті жұмыс орнында (құрылғымен) кэште орналасу қағидасы бойынша жұмыс істейді.

Бұл тәжірибені көріңіз. Сіздің physical орныңызды өзгертіңіз (айналаңызда, шамамен 200 м қашықтықта жүріңіз) және Google карталарын салыңыз, кенеттен сіздің бағдарламаңыз да дұрыс координаттарын қайтарады. Себебі Google карталары жергілікті кэш жаңартуын бастау әдісін біледі. Мен (бақытымызда) бұл кэш жаңартуды бастаудың жолын таптым.

Мұны жай ғана сіздің getLastKnownLocation-ға дейін және сиқыр болғанға дейін шақырыңыз.

HomeScreen.getLocationManager().requestLocationUpdates(
            LocationManager.NETWORK_PROVIDER, 0, 0, new LocationListener() {
            @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 onLocationChanged(final Location location) {
        }
    });

Немесе LocationClient қолданбасын пайдаланыңыз. Орналасқан жерді жаңарту үшін жаңа API.

4
қосылды
Мен оны сынап көріп, жауапымды тиісті түрде өңдеймін. Рахмет.
қосылды автор Siddharth, көзі
getLastKnownLocation егер CURRENT орынды қаласаңыз, LAST NOW орнын қайтарады, міндетті түрде жаңартуды сұрауыңыз керек! Бір орынды қаласаңыз, requestSingleUpdate пайдаланыңыз. requestLocationUpdates пайдалану 0, 0 көмегімен мерзімді жаңартуларды іске қосады және батареяны төгетін болады! Журнал жолын onLocationChanged дегенге қоя отырып, оны қаншалықты жиі қабылданады.
қосылды автор TWiStErRob, көзі
Бұл шешім болды. Провайдерлерде сұрауLocationUpdates деп атауға тура келді.
қосылды автор Haberdashery12345, көзі

Locationmanager.getBestProvider() бағдарламасының бұл нұсқасын қолдануға тырысыңыз және қазір ол жұмыс істеп тұрғанын көріңіз:

String locationProvider = LocationManager.NETWORK_PROVIDER;
Location lastKnownLocation = locationManager.getLastKnownLocation(locationProvider);

Сонымен қатар, егер сіз getBestProvider() ішіне жалғансаңыз, ол қосылған немесе қосылмағанына қарамастан, үздік Провайдерді қайтарады, ол тек критерийлеріңізге байланысты болады, мысалы, егер сіз қолмен қосылмаған болсаңыз ЖАҺАНДЫҚ ПОЗИЦИЯЛАУ ЖҮЙЕСІ.

You may want to check this link: http://developer.android.com/reference/android/location/LocationManager.html#getBestProvider(android.location.Criteria, boolean)

4
қосылды
Жоғарыда айтылған жауап менің жауаптың бір бөлігі ретінде берілген. Қайсысын таңдайсыз, бұл лауазымға жауап ретінде жауап бере аласыз ба? Рахмет
қосылды автор Emmanuel, көзі
ол әлі жұмыс істемейді?
қосылды автор Emmanuel, көзі
Бұл шешім емес. Мен сіздердің жауабыңыздың бір бөлігі екенін байқадым.
қосылды автор Haberdashery12345, көзі
Siddharth дұрыс шешім қабылдады. Мен GPS, NETWORK және PASSIVE провайдерлеріне қоңырау шалуға тура келді.
қосылды автор Haberdashery12345, көзі

Locationmanager.getBestProvider() бағдарламасының бұл нұсқасын қолдануға тырысыңыз және қазір ол жұмыс істеп тұрғанын көріңіз:

String locationProvider = LocationManager.NETWORK_PROVIDER;
Location lastKnownLocation = locationManager.getLastKnownLocation(locationProvider);

Сонымен қатар, егер сіз getBestProvider() ішіне жалғансаңыз, ол қосылған немесе қосылмағанына қарамастан, үздік Провайдерді қайтарады, ол тек критерийлеріңізге байланысты болады, мысалы, егер сіз қолмен қосылмаған болсаңыз ЖАҺАНДЫҚ ПОЗИЦИЯЛАУ ЖҮЙЕСІ.

You may want to check this link: http://developer.android.com/reference/android/location/LocationManager.html#getBestProvider(android.location.Criteria, boolean)

4
қосылды
Жоғарыда айтылған жауап менің жауаптың бір бөлігі ретінде берілген. Қайсысын таңдайсыз, бұл лауазымға жауап ретінде жауап бере аласыз ба? Рахмет
қосылды автор Emmanuel, көзі
ол әлі жұмыс істемейді?
қосылды автор Emmanuel, көзі
Бұл шешім емес. Мен сіздердің жауабыңыздың бір бөлігі екенін байқадым.
қосылды автор Haberdashery12345, көзі
Siddharth дұрыс шешім қабылдады. Мен GPS, NETWORK және PASSIVE провайдерлеріне қоңырау шалуға тура келді.
қосылды автор Haberdashery12345, көзі

Сіз жаңа орынды api пайдалануды ұсынамын, оны google_play_services_lib ( https://github-да табуға болады. com/chrulri/google-play-services_lib ). Тек сіздің жобаңызға Android кітапханасы жобасы ретінде қосыңыз. Бұл кітапхананың ең үлкен артықшылығы - GPS мен NETWORK материалын өңдеуге тура келмейді, ол автоматты түрде шешілетін болады.

Бұл туралы осында оқыңыз:

https://developer.android.com/google/play-services/location.html

0
қосылды

Сіз жаңа орынды api пайдалануды ұсынамын, оны google_play_services_lib ( https://github-да табуға болады. com/chrulri/google-play-services_lib ). Тек сіздің жобаңызға Android кітапханасы жобасы ретінде қосыңыз. Бұл кітапхананың ең үлкен артықшылығы - GPS мен NETWORK материалын өңдеуге тура келмейді, ол автоматты түрде шешілетін болады.

Бұл туралы осында оқыңыз:

https://developer.android.com/google/play-services/location.html

0
қосылды