2013-10-10 4 views
0

Android Bluetooth позволяет сходить с ума. Я работаю над приложением типа чата, которое будет заполнять устройства Bluetooth (парные, не спаренные и обнаруженные в диапазоне), в ListView.Android bluetooth Включение сходит с ума

как только я включаю Bluetooth, фоновый код

ArrayOfDevices = btAdapter.getBondedDevices(); 
if(ArrayOfDevices.size()>0)//paired dev more than 0 
{ 
    for(BluetoothDevice device: ArrayOfDevices) 
{ 
    listAdapter.add(device.getName()+ "\n" +device.getAddress()); 
} 
//for breadcast recievers and registering them// 
} 

это listadapter заполнена правильно, но она нуждается в Bluetooth уже включен на этот вопрос. Bluetooth кода:

 if(!btAdapter.isEnabled()) 
     { 
      Toast.makeText(getApplicationContext(), "Enablingggggg the bluetooth device", 
        Toast.LENGTH_SHORT).show(); 
      Intent iBlueEnabled = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); 
      startActivityForResult(iBlueEnabled, 1); 
} 
else // 


//some code follows 

Проблема заключается в том, что включение Bluetooth является простым, но проблема возникает тогда, когда у меня есть код, чтобы следовать после включения Bluetooth. этот код запускается до того, как bluetooth включен правильно (так как требуется время). вопрос использования пользовательского адаптера Bluetooth недоступен для меня. Любое решение от экспертов ??? спасибо заранее.

ответ

0

Вы должны выполнить свой код только в том случае, если Bluetooth включен успешно.

переопределить onActivityResult(), а если вы получите RESULT_OK, тогда выполните свой код, чтобы убедиться, что адаптер уже включен.

Редактировать

Использование Semaphore другой альтернативы, вот быстрый пример

final Semaphore semaphore = new Semaphore(0, true); 

Перед запуском кода, с помощью адаптера Bluetooth, если не включен

semaphore.acquire(); 

После адаптер Bluetooth включен или не работает, т.е. в onActivityResult

semaphore.release(); 
+0

спасибо @itech за ответ. – instinct

+0

нет, его не работает. onStart() одновременно запускает код с onActivityResult(). проблема сохраняется. в любом случае, спасибо за ответ :) – instinct

+0

Альтернативное решение - использовать «Семафор», чтобы убедиться, что другой не работает до того, как Bluetooth включен. – iTech

Смежные вопросы