Étape 6: Programmation Android
L’application Android est chargée d’obtenir des données de l’internet et l’envoyer à la carte arduino ATX2.
Le Gestionnaire Bluetooth et l’expéditeur :
package com.example.alisson.atx2 ;
Import android.app.Activity ; Import android.bluetooth.BluetoothDevice ; Import android.bluetooth.BluetoothSocket ; Import android.content.BroadcastReceiver ; Import android.content.Context ; Import android.content.Intent ; Import android.content.IntentFilter ; Import android.os.Bundle ; Import android.view.Menu ; Import android.view.MenuItem ; Import android.bluetooth.BluetoothAdapter ; Import android.view.View ; Import android.widget.ArrayAdapter ; Import android.widget.EditText ; Import android.widget.ListAdapter ; Import android.widget.ListView ; Import android.widget.SimpleCursorAdapter ; Import android.widget.Toast ;
import com.dropbox.sync.android.DbxAccountManager ; import com.dropbox.sync.android.DbxFile ; import com.dropbox.sync.android.DbxFileSystem ; import com.dropbox.sync.android.DbxPath ;
import java.io.IOException ; java.io.InputStream importation ; import java.io.OutputStream ; importation java.util.ArrayList ; java.util.Set d’importation ; import java.util.UUID ;
SerializableAttribute public class MainActivity extends activité {privé BluetoothSocket mmSocket privée BluetoothDevice mmDevice privée InputStream mmInStream ; privé OutputStream mmOutStream ;
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState) ; setContentView(R.layout.activity_main);}
public boolean onCreateOptionsMenu (menu Menu) {/ / gonfler le menu ; Cela ajoute des éléments à la barre d’action s’il est présent. getMenuInflater () .inflate (menu, R.menu.menu_main); return true;}
public boolean onOptionsItemSelected (élément MenuItem) {/ / l’élément de barre de poignée action clique ici. La barre d’action sera / / automatiquement poignée clique sur la page d’Accueil/bouton, si longtemps / / que vous spécifiez une activité parente dans AndroidManifest.xml. int id = item.getItemId() ;
noinspection SimplifiableIfStatement si (id == R.id.action_settings) {return true;}
Return super.onOptionsItemSelected(item) ; }
{} public void checkDevices (vue)
final int REQUEST_ENABLE_BT = 0 ; BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter() ; finale ArrayList mArrayAdapter = new ArrayList() ;
Si (mBluetoothAdapter == null) {/ / périphérique ne prend pas en charge Bluetooth} si (! mBluetoothAdapter.isEnabled()) {intention enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE) ; startActivityForResult (enableBtIntent, REQUEST_ENABLE_BT); //Ativa Bluetooth}
Set pairedDevices = mBluetoothAdapter.getBondedDevices() ; S’il existe des appareils couplés si (pairedDevices.size() > 0) {/ / Loop par le biais de périphériques appariés pour (dispositif de BluetoothDevice : pairedDevices) {/ / ajouter le nom et l’adresse d’un adaptateur de tableau pour montrer dans un ListView mArrayAdapter.add(device.getName() + « \n », device.getAddress()) ;
Contexte contexte = getApplicationContext() ; durée de l’int = Toast.LENGTH_SHORT ; Toast de pain grillé = Toast.makeText (context, (device.getName() + « \n » + device.getAddress()), durée) ; if(Device.GetName().StartsWith("HC")) {ConnectThread ct = new ConnectThread(device) ; ct.run();} / / toast.show() ; } } }
classe privée ConnectThread étend Thread {}
public ConnectThread (dispositif BluetoothDevice) {/ / utiliser un objet temporaire qui est ensuite assigné à mmSocket, / / car mmSocket final BluetoothSocket tmp = null ; mmDevice = périphérique ; UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB") ; Obtenir un BluetoothSocket pour se connecter avec l’essai de BluetoothDevice donné {/ / MY_UUID est la chaîne UUID de l’application, également utilisé par le serveur code tmp = device.createRfcommSocketToServiceRecord(uuid);} catch (IOException e) {} mmSocket = tmp ; }
public void run() {try {/ / connecter le périphérique par l’intermédiaire de la douille. Cela peut bloquer / / jusqu'à ce qu’il réussit ou lève une exception mmSocket.connect() ; Contexte contexte = getApplicationContext() ; durée de l’int = Toast.LENGTH_SHORT ; Toast de pain grillé = Toast.makeText (durée de contexte, ("SUCESSO")) ; Toast.Show() ; ConnectedThread ct = new ConnectedThread(mmSocket) ; CT.Write("5") ; } catch (IOException connectException) {contexte contexte = getApplicationContext() ; int durée = Toast.LENGTH_SHORT ; Toast de pain grillé = Toast.makeText (context, (connectException.toString()), durée) ; Toast.Show() ; Impossible de se connecter ; fermer le socket et sortir à try {mmSocket.close();} catch (IOException closeException) {} return ; }
}
/ ** Annule une connexion en cours et fermer le socket * / public void cancel() {try {mmSocket.close();} catch (IOException e) {}}}
classe privée ConnectedThread étend Thread {}
public ConnectedThread (socket BluetoothSocket) {//mmSocket = socket ; InputStream tmpIn = null ; OutputStream tmpOut = null ; try {tmpIn = socket.getInputStream() ; tmpOut = socket.getOutputStream();} catch (IOException e) {}
mmInStream = tmpIn ; mmOutStream = tmpOut ; }
public void run() {ubyte [] buffer = new byte [1024]; / / tampon de magasin pour les octets int de flux; / / octets retournée par read()
Garder l’écoute de l’InputStream jusqu'à ce qu’une exception se produit pendant le (vrai) {try {/ / lecture de l’InputStream octets = mmInStream.read(buffer) ;
mHandler.obtainMessage (MESSAGE_READ, octets, -1, mettre en mémoire tampon) / / .sendToTarget() ; } catch (IOException e) {break;}} }
/ * Appeler cela de l’activité principale d’envoyer des données au périphérique distant * / public void write (String message) {}
Byte [] msgBuffer = message.getBytes() ;
try {mmOutStream.write(msgBuffer);} catch (IOException e) {String msg = "dans onResume() et qu’une exception s’est produite au cours de l’écriture:" + e.getMessage() ; MSG = msg + ".\n\nCheck qui l’UUID SPP : il existe sur server.\n\n" ; } }
/ * Appeler cela de l’activité principale pour arrêter la connexion * / public void cancel() {try {mmSocket.close();} catch (IOException e) {contexte contexte = getApplicationContext() ; int durée = Toast.LENGTH_SHORT ; Toast de pain grillé = Toast.makeText (context, (e.toString()), durée) ; Toast.Show();} } }
}