Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Novichek_9I
4 / 5 / 2
Регистрация: 31.03.2015
Сообщений: 137
#1

Вылетает приложение с определением местоположения - Программирование Android

20.04.2015, 22:14. Просмотров 759. Ответов 10
Метки нет (Все метки)

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

Вот код активности:
Java
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>
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.04.2015, 22:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вылетает приложение с определением местоположения (Программирование Android):

Вылетает приложение - Программирование Android
Вылетает при работе кода в кнопке sobr! package com.example.stracking; import android.app.Activity; import...

Вылетает приложение - Программирование Android
вылетает не знаю почему, помогите пожалуйста package com.example.stracking; import android.app.Activity; import...

Вылетает приложение от 4.4 и ниже - Программирование Android
Создал проект в Android Studio c Navigation Dravel Acticity выбрал 4.0.(4.4 пробовал) Ничего не добавлял запустил на эмуляторе скинул в...

Подписанное приложение вылетает - Программирование Android
Кто-нибудь сталкивался с таким? Есть рабочее приложение, тестится в эмуляторе и на нескольких реальных устройствах с разными разрешениями и...

Вылетает сетевое приложение - Программирование Android
Есть такой код: //устанавливаем соединение URLConnection conn = null; try { if (p) conn = new URL(url + &quot;?&quot; +...

Вылетает созданное приложение - Программирование Android
TextView t1; TextView fy; TextView fm; TextView fd; TextView sy; TextView sm; TextView sd;

10
androbro
326 / 287 / 61
Регистрация: 17.10.2014
Сообщений: 854
21.04.2015, 08:59 #2
Novichek_9I,
Цитата Сообщение от Novichek_9I Посмотреть сообщение
При запуске оно выдает ошибку
вполне логичный вопрос - какую???
0
Novichek_9I
4 / 5 / 2
Регистрация: 31.03.2015
Сообщений: 137
21.04.2015, 09:32  [ТС] #3
На планшете всплывает окошко, где написано, что в приложении ошибка Я не понимаю, где в логе Android Studio описание ошибки. Если подскажете, буду признателен
0
androbro
326 / 287 / 61
Регистрация: 17.10.2014
Сообщений: 854
21.04.2015, 09:35 #4
Novichek_9I,
Цитата Сообщение от Novichek_9I Посмотреть сообщение
Я не понимаю, где в логе Android Studio описание ошибки. Если подскажете, буду признателен
пользуюсь эклипсом, но рискну предположить что в AS тоже есть LogCat
0
Novichek_9I
4 / 5 / 2
Регистрация: 31.03.2015
Сообщений: 137
21.04.2015, 09:59  [ТС] #5
вот например Caused by из лога : Caused by: java.lang.IllegalArgumentException: invalid provider: null

Могу, конечно, весь лог скинуть... Если это поможет
0
YuraAAA
1577 / 1318 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 2
21.04.2015, 10:21 #6
Эмулятор?

Добавлено через 1 минуту
допишите проверку,
Java
1
2
3
if (provider == null) {
provider = LocationManager.GPS_PROVIDER;
}
0
Novichek_9I
4 / 5 / 2
Регистрация: 31.03.2015
Сообщений: 137
21.04.2015, 10:36  [ТС] #7
Цитата Сообщение от YuraAAA Посмотреть сообщение
Эмулятор?
Нет, тестирую на планшете (Android 4.4.2.)

Цитата Сообщение от YuraAAA Посмотреть сообщение
1
2
3
if (provider == null) {
provider = LocationManager.GPS_PROVIDER;
}
А где конкретно нужно вставить проверку ?
0
YuraAAA
1577 / 1318 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 2
21.04.2015, 10:55 #8
Novichek_9I, после того как присваиваете переменной результат getBestProvider. Кстати, у вас
Цитата Сообщение от Novichek_9I Посмотреть сообщение
getBestProvider(criteria, true);
второй аргумент указывает, что будет выбран только из включённых провайдеров. Они у Вас включены (GPS/A-GPS)?
0
Novichek_9I
4 / 5 / 2
Регистрация: 31.03.2015
Сообщений: 137
21.04.2015, 11:31  [ТС] #9
YuraAAA, проверка не помогла. Да, провайдеры включены. Второй аргумент поменял на false, не помогло. Кстати, на планшете приложения GoogleMap, 2ГИС и другие сразу определяют мой город.

Может быть есть ссылки на другие примеры, где определяется местоположение, и лучше сразу - определяется город пользователя?
0
YuraAAA
1577 / 1318 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 2
21.04.2015, 11:37 #10
Novichek_9I, покажите код с проверкой.
0
Novichek_9I
4 / 5 / 2
Регистрация: 31.03.2015
Сообщений: 137
21.04.2015, 15:03  [ТС] #11
В манифесте переместил разрешения и приложение запустилось Но координаты не хочет показывать.

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

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

Добавлено через 3 часа 13 минут
Перезагрузил планшет, и заработало
0
21.04.2015, 15:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.04.2015, 15:03
Привет! Вот еще темы с ответами:

Парсер html, вылетает приложение - Программирование Android
Читал на хабре статью о парсинге stackoverflow http://habrahabr.ru/post/115127/. Создал проект, сделал все как было написано, но при...

ListView в ListViev, приложение вылетает - Программирование Android
мне нужно поместить один ListView в строку другого, вот код: ListView list = (ListView)findViewById(R.id.listView1); ...

Вылетает приложение во время запуска - Программирование Android
Пишу небольшую игру. Ничего не предвещало беды. Я запустил приложение, а оно мне: &quot;В приложении произошла ошибка&quot;. Совершенно не пойму,...

Приложение вылетает с непонятной ошибкой - Программирование Android
package x.com.geoquiz; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru