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

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

Войти
Регистрация
Восстановить пароль
 
AlexRu18
5 / 5 / 2
Регистрация: 29.01.2015
Сообщений: 162
#1

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

15.02.2016, 13:04. Просмотров 348. Ответов 11
Метки нет (Все метки)

При выключенном Bluetooth, запуская приложение у меня включается блютуз, но выдаёт ошибку создания потока:
XML
1
2
3
02-15 13:31:26.111 30855-31205/com.alexru18.bluetoothchat E/AndroidRuntime: FATAL EXCEPTION: Thread-2439
                                                                            java.lang.NullPointerException
                                                                                at com.alexru18.bluetoothchat.ServerThread.run(ServerThread.java:36)
Думал дело в том, что блютуз запускается не сразу, а через несколько мгновений и поставил delay, но не помогло:
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
public void run() {
 
        BluetoothSocket socket = null;
 
        Log.d("ServerThread", "Started");
 
        while (true) {
            try {
                socket = bluetoothServerSocket.accept();  //(ServerThread.java:36)
            } catch (IOException e) {
                Log.d("ServerThread", "Stop: " + e.getLocalizedMessage());
                break;
            }
            try {
                sleep(5000);
                if (socket != null) {
                    communicatorService.createCommunicatorThread(socket).startCommunication();
                }
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
 
        }
    }
В чём может быть проблема?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.02.2016, 13:04
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Вылетает при создании потока (Программирование Android):

Вылетает при прокрутке - Программирование Android
Доброе утро. Тут небольшая проблема возникла. У меня в ListView формируется список категорий, их порядка 1000 а может и больше,...

Вылетает приложение при запуске - Программирование Android
Здравствуйте. Столкнулся со следующей проблемой. В приложении при запуске подключаются сразу несколько фрагментов, в каждом из которых...

Программа вылетает при запуске. OutOfMemryError - Программирование Android
Здравствуйте, уважаемые разработчики! Моя программа вылетает сразу при запуске. Вот код ошибки: ava.lang.OutOfMemoryError: Failed to...

Приложение вылетает при старте на 4.1, на 4.4 - работает - Программирование Android
Здравствуйте, Я написал приложение для android в eclipse 4.4.2. На телефоне с android 4.4.2 приложение отлично работает. На телефоне...

Вылетает приложении при загрузке шрифта - Программирование Android
Хочу присвоить тексту свой шрифт, например, кладу в assets/fonts/f300.ttf далее код textView1 = (TextView)...

Вылетает приложение при нажатии на кнопку - Программирование Android
Здравствуйте, столкнулся с проблемой, что при нажатии на кнопку приложение вылетает. Программирую в Android Studio, кто нибудь сталкивался...

11
Pablito
2614 / 2097 / 651
Регистрация: 12.05.2014
Сообщений: 7,346
Завершенные тесты: 1
15.02.2016, 13:20 #2
наверное стоило показать больше кода что бы было понятно как, где и после чего инициализируется bluetoothServerSocket
0
AlexRu18
5 / 5 / 2
Регистрация: 29.01.2015
Сообщений: 162
15.02.2016, 20:24  [ТС] #3
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
import java.io.IOException;
import java.util.UUID;
 
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothServerSocket;
import android.bluetooth.BluetoothSocket;
import android.util.Log;
 
public class ServerThread extends Thread {
 
    private final BluetoothServerSocket bluetoothServerSocket;
    private final CommunicatorService communicatorService;
 
    public ServerThread(CommunicatorService communicatorService) {
        this.communicatorService = communicatorService;
        final BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
        BluetoothServerSocket tmp = null;
        try {
            tmp = bluetoothAdapter.listenUsingRfcommWithServiceRecord("BluetoothApp", UUID.fromString(MainActivity.UUID));
        } catch (IOException e) {
            Log.d("ServerThread", e.getLocalizedMessage());
        }
        bluetoothServerSocket = tmp;
    }
 
    public void run() {
 
        BluetoothSocket socket = null;
 
        Log.d("ServerThread", "Started");
 
        while (true) {
            try {
                socket = bluetoothServerSocket.accept();
            } catch (IOException e) {
                Log.d("ServerThread", "Stop: " + e.getLocalizedMessage());
                break;
            }
            try {
                sleep(5000);
                if (socket != null) {
                    communicatorService.createCommunicatorThread(socket).startCommunication();
                }
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
 
        }
    }
 
    public void cancel() {
        try {
            bluetoothServerSocket.close();
        } catch (IOException e) {
            Log.d("ServerThread", e.getLocalizedMessage());
        }
    }
}
0
Bend3r
149 / 136 / 18
Регистрация: 29.07.2012
Сообщений: 709
15.02.2016, 23:56 #4
Не ужели так трудно пробежаться отладчиком по коду, при этом смотря в окно переменных. После первого прохода все сразу станет ясно. Практика со sleep плохая. Попробуйте посмотреть если ли какая нибудь функция которая возвращает состояние блютуса, если есть то по этой переменный и ориентируйтесь.
0
AlexRu18
5 / 5 / 2
Регистрация: 29.01.2015
Сообщений: 162
16.02.2016, 00:08  [ТС] #5
Я начинающий в этом деле, не могли бы вы уточнить где я могу увидеть отладчик и окно переменных? Такой функции нет
0
Pablito
2614 / 2097 / 651
Регистрация: 12.05.2014
Сообщений: 7,346
Завершенные тесты: 1
16.02.2016, 11:50 #6
Java
1
final BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
после этой строчки вывести в лог и посмотреть чему равна переменная bluetoothAdapter
0
AlexRu18
5 / 5 / 2
Регистрация: 29.01.2015
Сообщений: 162
16.02.2016, 18:28  [ТС] #7
XML
1
2
3
4
5
6
7
8
9
10
11
02-16 19:28:05.571 11170-11170/com.alexru18.bluetoothchat E/Trace: error opening trace file: No such file or directory (2)
02-16 19:28:05.571 11170-11170/com.alexru18.bluetoothchat D/ActivityThread: setTargetHeapUtilization:0.25
02-16 19:28:05.571 11170-11170/com.alexru18.bluetoothchat D/ActivityThread: setTargetHeapIdealFree:8388608
02-16 19:28:05.571 11170-11170/com.alexru18.bluetoothchat D/ActivityThread: setTargetHeapConcurrentStart:2097152
02-16 19:28:05.971 11170-11170/com.alexru18.bluetoothchat D/ServerThread: bluetoothAdapter =android.bluetooth.BluetoothAdapter@41569c30
02-16 19:28:05.981 11170-11170/com.alexru18.bluetoothchat D/ServerThread: Not able to register SDP record for BluetoothApp
02-16 19:28:05.981 11170-11197/com.alexru18.bluetoothchat D/ServerThread: Started
02-16 19:28:05.981 11170-11197/com.alexru18.bluetoothchat W/dalvikvm: threadid=11: thread exiting with uncaught exception (group=0x41141300)
02-16 19:28:05.981 11170-11197/com.alexru18.bluetoothchat E/AndroidRuntime: FATAL EXCEPTION: Thread-4581
                                                                            java.lang.NullPointerException
                                                                                at com.alexru18.bluetoothchat.ServerThread.run(ServerThread.java:38)
И дальше креш. И ещё забыл дописать что когда перед включением приложения блютуз активен, то всё проходит нормально
0
Pablito
2614 / 2097 / 651
Регистрация: 12.05.2014
Сообщений: 7,346
Завершенные тесты: 1
16.02.2016, 19:00 #8
ну тогда наверное надо проверять включен блютуз или нет ДО того как запускается ServerThread
0
AlexRu18
5 / 5 / 2
Регистрация: 29.01.2015
Сообщений: 162
16.02.2016, 19:17  [ТС] #9
Именно. В самом самом начале кода, в onStart() я запускаю mBluetoothAdapter.enable() и всё должно быть пучком, не так-ли?
0
xaat
43 / 16 / 6
Регистрация: 05.12.2015
Сообщений: 65
16.02.2016, 19:21 #10
Разрешения в манифесте прописаны?
0
AlexRu18
5 / 5 / 2
Регистрация: 29.01.2015
Сообщений: 162
16.02.2016, 19:37  [ТС] #11
Конечно.

<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
0
Pablito
2614 / 2097 / 651
Регистрация: 12.05.2014
Сообщений: 7,346
Завершенные тесты: 1
16.02.2016, 19:38 #12
лично я бы создал BroadcastReceiver который реагировал бы на вкл/выкл блютуза, а уже из того ресивера либо интентами через активити либо еще как-то включал-останавливал поток который слушает сокет
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    private final BroadcastReceiver btWatcher = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();
            if (action.equals(BluetoothAdapter.ACTION_STATE_CHANGED)) {
                int state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothAdapter.ERROR);
                switch (state) {
                    case BluetoothAdapter.STATE_OFF:
                        break;
                    case BluetoothAdapter.STATE_TURNING_OFF:
                        break;
                    case BluetoothAdapter.STATE_ON:
                        break;
                    case BluetoothAdapter.STATE_TURNING_ON:
                        break;
                }
            }
        }
    };
1
16.02.2016, 19:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.02.2016, 19:38
Привет! Вот еще темы с ответами:

При повороте на 90 градусов вылетает программа - Программирование Android
Поворачиваю телефон на 90 градусов и программа сворачивается... Другие программы при повороте поворачиваются на 90 градусов, как и должно...

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

Программа вылетает при переходе на ListActivity - Программирование Android
Здравствуйте, уважаемые программисты! Не могли бы вы мне помочь? Моя программа просто вылетает при переходе на ListActivity. Ниже есть...

Вылетает приложение при возникновении ошибки - Программирование Android
Доброго всем времени суток! Вот есть приложение по работе с MySQL. Тему эту мы разобрали, и вроде все прекрасно. Одно маленькое &quot;но&quot; ...


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

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

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