Android Bluetooth: подключить()/отключить()Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Android Bluetooth: подключить()/отключить()

Сообщение Anonymous »

В настоящее время я разрабатываю приложение, которому необходимо подключаться к устройству, записывать/читать данные и надежно закрывать соединение. В настоящее время у меня есть стабильная запись/чтение. Мое отключение и последующее повторное подключение крайне ненадежны и часто приводят к сбою телефона, а иногда и Eclipse.
ФУНКЦИЯ ПОДКЛЮЧЕНИЯ

Код: Выделить всё

public boolean connect()
{
ConfigData.getInstance();
BluetoothSocket tmp = null;
BluetoothDevice device = ConfigData.m_SharedBluetoothDevice;
Method m;
try {

tmp = device.createRfcommSocketToServiceRecord(MY_UUID);//(BluetoothSocket)
m.invoke(device, 1);
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
ConfigData.m_SharedBluetoothSocket = tmp;
try {
ConfigData.m_SharedBluetoothSocket.connect();
ConfigData.bIsBTConnected = true;
} catch (IOException e) {
try {
closeSocket();
m = device.getClass().getMethod("createRfcommSocket", new Class[] {int.class});
tmp = (BluetoothSocket) m.invoke(device, 1);
} catch (SecurityException e1) {
e1.printStackTrace();
} catch (NoSuchMethodException e1) {
e1.printStackTrace();
} catch (IllegalArgumentException e1) {
e.printStackTrace();
} catch (IllegalAccessException e1) {
e.printStackTrace();
} catch (InvocationTargetException e1) {
e.printStackTrace();
}
ConfigData.m_SharedBluetoothSocket = tmp;
try {
ConfigData.m_SharedBluetoothSocket.connect();
ConfigData.bIsBTConnected = true;
} catch (IOException e1) {
ConfigData.m_BluetoothException += e1.toString();
ConfigData.bIsBTConnected = false;
return false;

}
e.printStackTrace();
return true;
}
return true;
}
Функция отключения

Код: Выделить всё

 public void destroySocket()
{
try {
if(m_InStream != null)
{
m_InStream.close();
m_InStream = null;
}
if(m_OutStream != null)
{
m_OutStream.close();
m_OutStream  = null;
}
if(ConfigData.m_SharedBluetoothSocket != null)
{
ConfigData.m_SharedBluetoothSocket.close();
ConfigData.m_SharedBluetoothSocket = null;
}
if(m_InStream == null && m_OutStream == null && ConfigData.m_SharedBluetoothSocket == null)
{
ConfigData.bIsBTConnected = false;
}
} catch (IOException e1) {
m_InStream = null;
m_OutStream  = null;
ConfigData.m_SharedBluetoothSocket = null;
e1.printStackTrace();
}
}
Итак, отключение прошло успешно и возвращает все значения NULL. Проблема в том, что при повторном подключении он блокируется при второй попытке подключения и либо просто зависает, либо полностью выходит из строя телефона, что приводит к нескольким перезагрузкам.
Есть ли у кого-нибудь здесь какие-нибудь советы?

Подробнее здесь: https://stackoverflow.com/questions/352 ... disconnect
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»