Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 14.01.2018
Сообщений: 102
1

Текущее местоположение

14.03.2018, 17:17. Показов 534. Ответов 3

Author24 — интернет-сервис помощи студентам
Код работает, но определяет местоположение с погрешностью достаточно большой, как можно улучшить код?

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
public class MyCurrentLocation extends Service implements LocationListener {
 
    private final Context context;
 
    boolean isGPSEnabled = false;
    boolean isNetworkEnabled = false;
 
    Location location = null;
    protected LocationManager locationManager;
 
    public MyCurrentLocation(Context context) {
        this.context = context;
    }
 
    public Location getLocation() {
        
        try{
            locationManager=(LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
            isGPSEnabled = locationManager.isProviderEnabled((locationManager.GPS_PROVIDER));
            isNetworkEnabled=locationManager.isProviderEnabled(locationManager.NETWORK_PROVIDER);
 
 
            if(ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED
                    || ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_COARSE_LOCATION)==PackageManager.PERMISSION_GRANTED){
 
                if(isGPSEnabled){
                    if(location==null){
                        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,10000,0,this);
                        location=locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
                        if(locationManager!=null){
                            location=locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
                        }
                    }
                }
                if(location==null){
                    if(isNetworkEnabled){
                        locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,10000,0,this);
                        if(locationManager!=null){
                            location=locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
                        }
                    }
                }
 
            }
 
        } catch (Exception ex){
 
        }
        return location;
    }
 
 
        @Override
        public void onLocationChanged(Location location) {
            this.location=location;
 
        }
 
        @Override
        public void onStatusChanged(String provider, int status, Bundle extras) {
 
        }
 
        @Override
        public void onProviderEnabled(String provider) {
 
        }
 
        @Override
        public void onProviderDisabled(String provider) {
 
        }
 
        @Nullable
        @Override
        public IBinder onBind(Intent intent) {
            return null;
        }
    }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.03.2018, 17:17
Ответы с готовыми решениями:

Местоположение
Добрый вечер. Нужно определить местоположение. Так как у меня эмулятор, который подключен к...

Определение местоположение Genymotion
Не подскажите как правильно тестировать приложения которые используют Google Maps в Genymotion. Я...

Google Maps местоположение
Ситуевина следующая - подключил гугл карты к своему приложению, теперь надо как-то реализовать...

Actionbar своё местоположение
как сделать обьект как Actionbar точнее выпадающ список (список) только чтоб я его мог размещать...

3
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
14.03.2018, 21:22 2
Что подразумевается под "большой" погрешностью?
0
1 / 1 / 0
Регистрация: 14.01.2018
Сообщений: 102
15.03.2018, 17:14  [ТС] 3
Цитата Сообщение от ExFau$t Посмотреть сообщение
Что подразумевается под "большой" погрешностью?
Приблизительно 2-3 км
0
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
15.03.2018, 23:32 4
Там в коде NETWORK_PROVIDER надо поставить в теле else от if(isGPSEnabled), то есть если gps нету. Сейчас, что есть, что нету, в локацию пишутся координаты NETWORK_PROVIDER.
0
15.03.2018, 23:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.03.2018, 23:32
Помогаю со студенческими работами здесь

Отобразить местоположение на карте по координатам
Взял из книжки такой код для отображения местоположения на карте по заданным координатам (например,...

SharedPreferences - местоположение XML файла
В какой директории хранится файл XML в который пишеш едитор (SharedPreferences.Editor ed =...

Включение настроек программно. Местоположение определить по сотовой сети. Wi-Fi
Здравсвуйте! Подскажите как включить програмно "Определение местоположение по безправодной...

GoogleMap2. Синяя точка на карте, указывающая на текущее положение
Скажите, что за синяя точка на карте, которая показывает текущее положение на карте? Если я ее сам...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru