Zajmuję się tworzeniem aplikacji dla systemu Android. Ta aplikacja powinna komunikować się z urządzeniem Bluetooth (BT) (wysyłając kilka bajtów). Mam problem z debugowaniem/uruchomieniem tej aplikacji na moim urządzeniu (Samsung Galaxy mini). Kiedy utworzę gniazdo BT i przestanę debugować, telefon się zawiesi i muszę go zrestartować, wyciągając baterię. W przypadku uruchomienia tej aplikacji (z Eclipse) wszystko jest w porządku, ale kiedy próbuję uruchomić to ponownie, telefon się zawiesi i aplikacja nie jest zainstalowana. Jeśli spróbuję odinstalować tę aplikację ręcznie przed drugim uruchomieniem, telefon ponownie zamrozi. Oto problematyczny kod:Zamrożenie gniazda Bluetooth telefonu
private final BluetoothDevice mmDevice;
private UUID uuid;
public ConnectionThread(BluetoothDevice device) {
Log.d(TAG, "create ConnectionThread");
uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
BluetoothSocket tmp = null;
mmDevice = device;
try {
tmp = mmDevice.createRfcommSocketToServiceRecord(uuid);
} catch (IOException e) { }
mmSocket = tmp;
socketConnected = true;
}
To jest konstruktor nici. Po dodaniu komentarza do linii telefon nie jest zamrożony, więc problem z tworzeniem gniazda (brak połączenia). Ponowne uruchamianie telefonu po każdym debugowaniu lub uruchomieniu jest dość denerwujące i muszę jeszcze wykonać wiele pracy.
Jeśli uruchomię tę aplikację z telefonu (odłączono od Eclipse), działa ona bez żadnych problemów. Wszelkie pomysły, gdzie może być problem lub jak to naprawić? Dziękuję Ci.
Brzmi jak błąd oprogramowania, prawda? –
@CodePainters: oprogramowanie układowe lub błąd IDE. Znalazłem ten sam temat: http://stackoverflow.com/questions/4408287/android-bluetooth-socket-freeze-application. Więc jeśli wyłączyłem BT w wywołaniu zwrotnym onDestroy, wszystko jest w porządku. – DanielH
IDE? Mało prawdopodobne. A Android jest pełen błędów i tak ... –