Se connecter à Android Bluetooth prise
Salut, je suis en train de créer une application Android qui se connecte à un Bleu SMiRF dongle Bluetooth qui je veux envoyer des données. J'ai lu sur le développeur de pages et regardé plusieurs exemples différents et pourtant je suis actuellement de la difficulté de créer une connexion à la prise. Le Bluetooth portion de code est à peu près à partir d'un exemple que j'ai pu trouver. Lorsque vous essayez de connecter le dongle Bluetooth à l'application d'une force de fermeture parce qu'il y a erreur je ne suis pas de la manipulation correctement. Toutefois, j'ai aussi essayé d'utiliser l'application pour vous connecter à un autre PC et la connexion n'a établi correctement pour une raison quelconque, même si je suis déjà relié à l'appareil par le biais de l'écran des paramètres Bluetooth avant même d'exécuter l'application. J'ai posté quelques-uns des plus importants de code ci-dessous où je pense que mon problème peut être. Toute aide sera très appréciée, s'il vous plaît laissez-moi savoir si je dois poster du code supplémentaire.
protected void connect(BluetoothDevice device) {
//BluetoothSocket socket = null;
try {
//Create a Socket connection: need the server's UUID number of registered
socket = device.createRfcommSocketToServiceRecord(UUID.fromString("a60f35f0-b93a-11de-8a39-08002009c666"));
socket.connect();
Log.d("EF-BTBee", ">>Client connectted");
InputStream inputStream = socket.getInputStream();
OutputStream outputStream = socket.getOutputStream();
outputStream.write(new byte[] { (byte) 0xa0, 0, 7, 16, 0, 4, 0 });
new Thread() {
public void run() {
while(true)
{
try {
Log.d("EF-BTBee", ">>Send data thread!");
OutputStream outputStream = socket.getOutputStream();
outputStream.write(new byte[] { (byte) 0xa2, 0, 7, 16, 0, 4, 0 });
} catch (IOException e) {
Log.e("EF-BTBee", "", e);
}
}
};
}.start();
} catch (IOException e) {
Log.e("EF-BTBee", "", e);
} finally {
if (socket != null) {
try {
Log.d("EF-BTBee", ">>Client Close");
socket.close();
finish();
return ;
} catch (IOException e) {
Log.e("EF-BTBee", "", e);
}
}
}
}`
J'ai aussi essayé d'utiliser
Method m = device.getClass().getMethod("createRfcommSocket", new Class[] {int.class});
socket = (BluetoothSocket) m.invoke(device, 1);
au lieu de simplement le "socket =" ligne à partir de ci-dessus et toujours pas eu de succès.
Ayant relu (il faut avoir lu ce mal au début), mais il est capable de créer le Bluetooth prise correctement, ayant encore un problème de l'avoir fait se connecter.
OriginalL'auteur user2744785 | 2013-11-15
Vous devez vous connecter pour publier un commentaire.
si l'appareil est déjà jumelé , alors vous pouvez utiliser
pour la MY_UUID utilisation
OriginalL'auteur bourax webmaster
Ont enfin trouvé un travail autour de. Ne sais pas pourquoi cela doit être fait pour fonctionner correctement.
IOException: lecture a échoué, socket peut-fermé - Bluetooth sur Android 4.3
OriginalL'auteur user2744785
En supposant (à vérifier!) l'UUID que vous utilisez est en effet le serveur de l'UUID, votre meilleur
pari serait de tenter d'insécurité mode de communication Bluetooth. Certains appareils simplement
ne prennent pas en charge le mode sécurisé.
De faire dupliquer votre flux de, remplaçant createRfcommSocketToServiceRecord
avec createInsecureRfcommSocketToServicerecord et "createRfcommSocket" avec
"createInsecureRfcommSocket".
Ou encore mieux: utiliser BTWiz qui encapsuler le flux à l'intérieur. BTWiz fournit également une simple API asynchrone pour Bluetooth IO.
Enfin - création de la socket & connect()ion ne doit jamais être effectuée sur le thread de l'INTERFACE utilisateur. Votre
le code n'est pas concluante ici, mais je soupçonne que vous devrez le réparer.
Gilad Haimov
http://www.mobileedge.co.il
OriginalL'auteur Gilad Haimov