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 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151
| protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Android supporte le bluetooth? recherche de l'adaptateur bluetooth
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
if(mBluetoothAdapter == null) {
//Device does not support bluetooth
Context context = getApplicationContext();
CharSequence text = "Device support bluetooth";
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
}
if(!mBluetoothAdapter.isEnabled()) {
Context context = getApplicationContext();
CharSequence text = "BluetoothAdapter is not enable!";
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
//lancer un Intent pour activer le bluetooth
Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableBtIntent, 1);
}
//Discovering devices. Register for broadcasts when a device is discovered.
IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
//Enregistrer le broadcast receiver
registerReceiver(mReceiver, filter);
//lancer la découverte. Si on découvre, on passe dans le BroadcastReceiver
mBluetoothAdapter.startDiscovery(); //lance un intent? Android envoie lintention à tous les BroadCast Receiver abonnées
//Querying paired devices: la requête peut être nulle si aucun appareil n'est appairé
Set<BluetoothDevice> setpairedDevices = mBluetoothAdapter.getBondedDevices();
BluetoothDevice[] pairedDevices = (BluetoothDevice[])setpairedDevices.toArray(new BluetoothDevice[setpairedDevices.size()]);
if (pairedDevices.length > 0) {
// There are paired devices. Get the name and address of each paired device.
for(int i=0;i<pairedDevices.length;i++) {
if (pairedDevices[i].getName().contains("HC-05-AA")) {
mDevice = pairedDevices[i];
}
}
Log.d("BONDED TO", mDevice.getName()+" "+mDevice.getAddress());
}
else Log.d("QUERYING", "NO BONDED DEVICES");
//A ce niveau, on connaît le device avec lequel on va travailler
mConnectThread = new ConnectThread(mDevice);
mConnectThread.start();
}
@Override
protected void onDestroy() {
super.onDestroy();
// Don't forget to unregister the ACTION_FOUND receiver.
unregisterReceiver(mReceiver);
}
private class ConnectThread extends Thread {
private final BluetoothSocket mmSocket;
private final BluetoothDevice mmDevice;
private final UUID MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805f9b34fb");
private String TAG = "Socket";
//constructeur
public ConnectThread(BluetoothDevice device) {
BluetoothSocket tmp = null;
mmDevice = device;
Method m;
try {
m = mDevice.getClass().getMethod("createRfcommSocket", new Class[] {int.class});
tmp = (BluetoothSocket) m.invoke(mDevice, 1);
} catch (SecurityException e) {
Log.e(TAG, "create socket failed", e);
} catch (NoSuchMethodException e) {
Log.e(TAG, "create socket failed", e);
} catch (IllegalArgumentException e) {
Log.e(TAG, "create socket failed", e);
} catch (IllegalAccessException e) {
Log.e(TAG, "create socket failed", e);
} catch (InvocationTargetException e) {
Log.e(TAG, "create socket failed", e);
}
mmSocket = tmp;
}
public void run() {
mBluetoothAdapter.cancelDiscovery();
try {
mmSocket.connect();
} catch (IOException connectException) {
Log.e("connectException", "Run");
connectException.printStackTrace();
try {
mmSocket.close();
} catch (IOException closeException) {
Log.e("closeException", "Run");
closeException.printStackTrace();
}
return;
}
mConnectedThread = new ConnectedThread(mmSocket);
mConnectedThread.start();
}
public void cancel() {
try {
mmSocket.close();
} catch (IOException e) { }
}
}
private class ConnectedThread extends Thread {
private final BluetoothSocket mmSocket;
private final InputStream mmInStream;
private final OutputStream mmOutStream;
public ConnectedThread(BluetoothSocket socket) {
mmSocket = socket;
InputStream tmpIn = null;
OutputStream tmpOut = null;
try {
tmpIn = socket.getInputStream();
tmpOut = socket.getOutputStream();
} catch (IOException e) {
Log.e("ConnectedThread", "Stream");
}
mmInStream = tmpIn;
mmOutStream = tmpOut;
}
public void run() {
//emettre
String cmd = new String("Bluetooth --> ");
write(cmd.getBytes());
}
public void write(byte[] bytes) {
try {
Log.e("Write", bytes.toString());
mmOutStream.write(bytes);
mmOutStream.flush();
} catch (IOException e) { }
}
public void cancel() {
try {
mmSocket.close();
} catch (IOException e) { }
}
} |
Partager