Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Увеличить точность определения местоположения

Всем привет, хотел спросить каким образом можно повысить точность определения местоположения?

И использую LocationManager, с GPS провайдером.

Получается чтото вроде этого



На одном сайте увидел вот такую точность.




Как такого добиться?
Ответ:
Сообщение от ILNAR_93
У гугла есть сервис построения маршрута, даешь ему координаты (можно добавить промежуточные точки) и он строит тебе маршрут. есть в ответе сервиса фишка такая
Мне нужно делать это все в реалтайме

Сообщение от ILNAR_93
это не точность, а какое то подобие точности
Вот мне и нужно такое организовать
Вопрос: GPS увеличить точность

Приветствую.
Решил поработать с геолокацией. Взял , смарт все время лежал в одном месте на столе. Стал сохранять координаты в файл. Начал проверять по карте. Во-первых, координаты все время разные, во-вторых, отличие от реального положения в 20-50 метров. Как же получить точные координаты? Ведь, когда я еду в машине и смотрю по карте свое местоположение на том же смарте - трэк то идет строго по дороге. Значит дело не в самом смарте. Подскажите, может есть какой пример с более точным определением местоположения?
Ответ:
Сообщение от Valakin
тут не в коде дело
В нем, там куча всяких прогнозирующих, и т.п. алгоритмов у нормальных навигаторов, они не отображают сырые данные с датчиков.
Вопрос: Определение местоположение Genymotion

Не подскажите как правильно тестировать приложения которые используют Google Maps в Genymotion. Я установил на устройстве genymotion Google сервисы. Гугл карта отображается но показывает не правильное мое местоположение. Почему?? Получается приложения использующие гугл мэпс и определение локации лучше тестировать на реальном устройстве чем на genymotion?7 А на genymotion девайсе можно как то настоить точное определение местоположения, если да то как??
Ответ: напиши им на email и спроси че так
Вопрос: Вылетает приложение с определением местоположения

Здравствуйте!
Есть простенькое приложение для определения местоположения. При запуске оно выдает ошибку. Не могу понять в чем дело. Кто может помочь? (Тестирую на Android 4.4.2)

Вот код активности:
Код Java(TM) 2 Platform Standard Edition 5.0
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
import android.app.Activity;
import android.content.Context;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
 
public class MainActivity extends Activity {
    private LocationManager mLocationManager;
    private LocationListener mLocationListener;
    private Location mLocation;
    private TextView mLatitudeTextView, mLongitudeTextView;
 
    private static final long MINIMUM_DISTANCE_FOR_UPDATES = 10; // в метрах
    private static final long MINIMUM_TIME_BETWEEN_UPDATES = 2000; // в мс
 
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
 
        setContentView(R.layout.activity_main);
 
        mLatitudeTextView = (TextView) findViewById(R.id.textViewLatitude);
        mLongitudeTextView = (TextView) findViewById(R.id.textViewLongitude);
 
        mLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
 
        Criteria criteria = new Criteria();
        criteria.setAccuracy(Criteria.ACCURACY_COARSE);
        criteria.setPowerRequirement(Criteria.POWER_LOW);
        criteria.setAltitudeRequired(false);
        criteria.setBearingRequired(false);
        criteria.setCostAllowed(true);
        String provider = mLocationManager.getBestProvider(criteria, true);
        mLocation = mLocationManager.getLastKnownLocation(provider);
        mLocationListener = new MyLocationListener();
 
        showCurrentLocation(mLocation);
 
        // Регистрируемся для обновлений
        mLocationManager.requestLocationUpdates(provider,
                MINIMUM_TIME_BETWEEN_UPDATES, MINIMUM_DISTANCE_FOR_UPDATES,
                mLocationListener);
    }
 
    @Override
    public void onPause() {
        super.onPause();
        mLocationManager.removeUpdates(mLocationListener);
    }
 
    public void onClick(View v) {
        showCurrentLocation(mLocation);
    }
 
    protected void showCurrentLocation(Location location) {
        if (location != null) {
            mLatitudeTextView.setText(String.valueOf(location.getLatitude()));
            mLongitudeTextView.setText(String.valueOf(location.getLongitude()));
        }
    }
 
    // Прослушиваем изменения
    private class MyLocationListener implements LocationListener {
 
        public void onLocationChanged(Location location) {
            String message = "Новое местоположение Долгота: " +
            location.getLongitude() + "Широта: " + location.getLatitude();
            Toast.makeText(MainActivity.this, message, Toast.LENGTH_LONG)
                    .show();
            showCurrentLocation(mLocation);
        }
 
        public void onStatusChanged(String s, int i, Bundle b) {
            Toast.makeText(MainActivity.this, "Статус провайдера изменился",
                    Toast.LENGTH_LONG).show();
        }
 
        public void onProviderDisabled(String s) {
            Toast.makeText(MainActivity.this,
                    "Провайдер заблокирован пользователем. GPS выключен",
                    Toast.LENGTH_LONG).show();
        }
 
        public void onProviderEnabled(String s) {
            Toast.makeText(MainActivity.this,
                    "Провайдер включен пользователем. GPS включён",
                    Toast.LENGTH_LONG).show();
        }
    }
}
В манифесте прописал
Код XML
1
2
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
        <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
На всякий случай код разметки:
Код XML
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
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
 
    <Button
        android:id="@+id/buttonUpdate"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="onClick"
        android:text="Обновить данные" />
 
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Широта (Latitude): " />
 
    <TextView
        android:id="@+id/textViewLatitude"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
 
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Долгота (Longitude): " />
 
    <TextView
        android:id="@+id/textViewLongitude"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
 
</LinearLayout>
Ответ: В манифесте переместил разрешения и приложение запустилось Но координаты не хочет показывать.

Добавил в код следующее
Код Java(TM) 2 Platform Standard Edition 5.0
1
2
3
4
if (location == null) {
            mLatitudeTextView.setText("Не работает");
            mLongitudeTextView.setText("Не работает");
        }
И приложение мне именно эти 2 текста и выдало.

Почему же location передается null ?

Добавлено через 3 часа 13 минут
Перезагрузил планшет, и заработало
Вопрос: Разработка мобильного приложения на ОС Андроид с функцией определения местоположения обьектов

Ребята , доброго времени суток, долго мучался с определением темы на диплом в университете.В ключевом итоге остановился на вышесказанной.Преподаватель сказала что моего мозга и хитрости хватит чтобы что-нибудь сваять, так как знания сразу говорю у меня почти нулевые, мне нужно ваше наставление.Что скажете , смогу ли я с почти нулевыми знаниями освоить и что-нибудь сделать, на каких платформах мне стоит начать работать, что изучать, на что опираться?Любая помощь для меня сейчас - это рай.Прошу подойдите адекватно к моему вопросу, заранее спасибо.
Ответ: Понятия не имею, что ты в конце концов придумал делать и на кой тебе бд, поэтому и спросил. По поводу схемы, моё мнение, для приложений мобильных больше подходит сценарий использования uml. Если препод шарит, то грамотная диаграмма uml самое то.
Вопрос: Google Maps местоположение

Ситуевина следующая - подключил гугл карты к своему приложению, теперь надо как-то реализовать кнопку "мое местоположение".. стандартная кнопка не работает, автоматическое местоположение всегда отбивает null ... весь гугль перерыл за 8 часов, так ничего рабочего и не нашел. Помогите с реализацией данной задачи

Код Java(TM) 2 Platform Standard Edition 5.0
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
import android.content.Context;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationManager;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.util.Log;
import android.view.View;
import android.widget.Toast;
 
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.location.LocationListener;
import com.google.android.gms.location.LocationServices;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.*;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.CameraPosition;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
 
import java.util.List;
 
 
public class MapsActivity extends FragmentActivity {
 
 
    final String TAG = "myLogs";
    SupportMapFragment mapFragment;
    GoogleMap map;
    CameraUpdate cameraUpdate;
    LocationManager lm;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(anita.allbelarusmodule.R.layout.activity_map);
 
        createMapView();
 
        Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
        Location location2 = map.getMyLocation();        
        Log.d(TAG, "LastKnownLocation: " + location+ " getMyLocation" + location2);
 
    }
 
  private void createMapView(){
 
        try {
            mapFragment = (SupportMapFragment) getSupportFragmentManager()
                    .findFragmentById(R.id.mapView);
            map = mapFragment.getMap();
            map.setMapType(GoogleMap.MAP_TYPE_NORMAL);
            lm = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
            map.getUiSettings().setZoomControlsEnabled(true); 
            map.getUiSettings().setMyLocationButtonEnabled(true); 
            map.setMyLocationEnabled(true); 
 
        } catch (NullPointerException exception){
            Log.e("mapApp", exception.toString());
        }
    }
 
 
}
Ответ: Вот сырой код, но все рабочее - может кому поможет ^^

Код Java(TM) 2 Platform Standard Edition 5.0
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
package anita.allbelarusmodule.activity;
 
import android.content.Context;
import android.content.Intent;
import android.location.Location;
import android.location.LocationManager;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
 
import android.location.LocationListener;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.*;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.CameraPosition;
import com.google.android.gms.maps.model.LatLng;
 
 
import anita.allbelarusmodule.R;
 
 
public class MapsActivity extends AppCompatActivity {
 
    final String TAG = "myLogs";
 
    Toolbar toolbar;
 
    SupportMapFragment mapFragment;
    GoogleMap map;
    LocationManager lm;
 
    CameraPosition cameraPosition;
    CameraUpdate cameraUpdate;
 
 
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(anita.allbelarusmodule.R.layout.activity_map);
 
        toolbar = (Toolbar) findViewById(R.id.toolbar_actionbar);
        setSupportActionBar(toolbar);
 
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setDisplayShowTitleEnabled(true);
 
        toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });
 
        getSupportActionBar().setTitle("Карты");
 
        createMapView();
    }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_map, menu);
        return true;
    }
 
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
 
        //noinspection SimplifiableIfStatement
        if (id == R.id.geosettings) {
            startActivity(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS));
            return true;
        }
        else if (id == R.id.geosettings) return true;
 
        return super.onOptionsItemSelected(item);
    }
 
    private void createMapView(){
 
        try {
            mapFragment = (SupportMapFragment) getSupportFragmentManager()
                    .findFragmentById(R.id.mapView);
            map = mapFragment.getMap();
            map.setMapType(GoogleMap.MAP_TYPE_NORMAL); //тип карты
            lm = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
            map.getUiSettings().setZoomControlsEnabled(true); //кнопки зума
            map.getUiSettings().setMyLocationButtonEnabled(false); //кнопка определения местоположения
            map.setMyLocationEnabled(true); //определение местоположения
 
        } catch (NullPointerException exception){
            Log.e("mapApp", exception.toString());
        }
    }
 
    @Override
    protected void onResume() {
        super.onResume();
        lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000 * 10, 10, locationListener);
        lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000 * 10, 10,locationListener);
        checkEnabled();
    }
 
    @Override
    protected void onPause() {
        super.onPause();
        lm.removeUpdates(locationListener);
    }
 
    public void SetLoc(Location location) {
        cameraPosition = new CameraPosition.Builder()
                .target(new LatLng(location.getLatitude(), location.getLongitude()))
                .zoom(13)
                .tilt(20) //угол наклона карты
                .build();
        cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition);
        map.animateCamera(cameraUpdate);
    }
 
    private LocationListener locationListener = new LocationListener() {
 
 
        @Override
        public void onLocationChanged(Location location) {
            showLocation(location);
        }
 
        @Override
        public void onProviderDisabled(String provider) {
            checkEnabled();
        }
 
        @Override
        public void onProviderEnabled(String provider) {
            checkEnabled();
            showLocation(lm.getLastKnownLocation(provider));
        }
 
        @Override
        public void onStatusChanged(String provider, int status, Bundle extras) {
            if (provider.equals(LocationManager.GPS_PROVIDER)) {
                Log.d("LocListner","Status GPS_PROVIDER: " + String.valueOf(status));
            } else if (provider.equals(LocationManager.NETWORK_PROVIDER)) {
                Log.d("LocListner","Status NETWORK_PROVIDER: " + String.valueOf(status));
            }
        }
    };
 
    private void showLocation(Location location) {
        if (location == null){
            return;}
        if (location.getProvider().equals(LocationManager.GPS_PROVIDER)) {
            SetLoc(location);
        } else if (location.getProvider().equals(LocationManager.NETWORK_PROVIDER)) {
            SetLoc(location);
        }
    }
 
 
    private void checkEnabled() {
        Log.d("LocListner","Enabled GPS_PROVIDER: "
                + lm.isProviderEnabled(LocationManager.GPS_PROVIDER));
        Log.d("LocListner","Enabled NETWORK_PROVIDER: "
                + lm.isProviderEnabled(LocationManager.NETWORK_PROVIDER));
    }
 
 
 
 
}
Вопрос: Как получить приблизительное местоположение пользователя без использования сервисов Google?

Добрый день,

Никак не могу войти под старым ником, поэтому вновь зарегистрировался.

Возник вопрос о геолокации. Суть в следующем. Каким образом можно получать приблизительное местоположение пользователя приложения без использования сервисов Гугла и без запроса разрешений в манифесте? "Приблизительно" - это в масштабе субъекта федерации. Т.е. меня интересует находится ли пользователь в Москве или во Владивостоке, без детализации.
Ответ: zoleg, ты о чём вообще? ТС хочет:
Сообщение от alexvp1
получать приблизительное местоположение пользователя приложения без использования сервисов Гугла и без запроса разрешений в манифесте
Вопрос: Отобразить местоположение на карте по координатам

Взял из книжки такой код для отображения местоположения на карте по заданным координатам (например, взял координаты Москвы):
Код Java(TM) 2 Platform Standard Edition 5.0
1
2
3
4
                    String geoURI = String.format("geo:%f,%f?z=10", 55.75, 37.62); // использовать другой формат запроса?
                    Uri geo = Uri.parse(geoURI);
                    Intent geoMap = new Intent(Intent.ACTION_VIEW, geo);
                    startActivity(geoMap);
Сначала андроид (как и подобает) предлагает выбрать какую программу использовать (в моем случае это Гугл карты и Яндекс карты). Но местоположение отображает где-то на краю вселенной в океане (при этом метку с координатами подписывает правильно).

В чем может быть дело? Как сделать, чтобы местоположение отображалось правильно?
(У меня есть подозрение, что нужно как-то по другому отправлять запрос (в другом формате))

Добавлено через 8 минут
Пока решил пока проблему так:
Код Java(TM) 2 Platform Standard Edition 5.0
1
2
3
4
5
6
                    String geoURI = String.format("geo:%f;%f?z=10", 55.75, 37.62);
                    geoURI = geoURI.replaceAll(",", ".");
                    geoURI = geoURI.replaceAll(";", ",");
                    Uri geo = Uri.parse(geoURI);
                    Intent geoMap = new Intent(Intent.ACTION_VIEW, geo);
                    startActivity(geoMap);
Т.е. проблема в том, что является разделителем дробной части числа.
Ответ: А с какой целью вы используете google maps в приложение. Для маркеров, наверное, лучше использовать google maps api for android http://developer.android.com/google/...ices/maps.html
Вопрос: Программа для отслеживания местоположения по карте

Доброго времени суток. Помогите пожалуйста написать программу для отслеживания местоположения телефона по карте... очень нужно . зарание спасибо!
Ответ:

Не по теме:

Странные иногда здесь бывают "персонажи"... Зарегистрирован еще летом, а это его ПЕРВОЕ сообщение! И сразу "помогите написать СЛОЖНУЮ программу"... Как боты!
Мне 1.5-2 года назад такой помог! Сильно помог! Одно большое сообщение написал с кучей "тонких" деталей по малоизвестной технологии (двухсимочные телефоны) с сылками(на КИТАЙСКИЙ гит)... ПЕРВОЕ под его ником! И единственное (до сих пор 2е не появилось)!
Админы "балуются"?

Вопрос: Как увеличить скорость бегущей строки андроид?

Добрый день!
Реализована бегущая строка
Код Java(TM) 2 Platform Standard Edition 5.0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<TextView
        android:id="@+id/tvInstructionSetTime"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:ellipsize="marquee"
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:freezesText="true"
        android:marqueeRepeatLimit="marquee_forever"
        android:paddingLeft="25dp"
        android:paddingRight="25dp"
        android:textSize="12sp"
        android:paddingTop="10dp"
        android:scrollHorizontally="true"
        android:singleLine="true"
        android:text="@string/InstructionSetTime" >
    </TextView>
Так как она "бежит" очень медленно, возникает вопрос: как увеличить скорость?
Спасибо!
Ответ: Большое спасибо!
Как приятно получить ответ на вопрос!