Stap 6: Android programmering
De androïde toepassing is verantwoordelijk om internetgegevens en stuur het naar ATX2 arduino board.
Bluetooth manager en afzender:
pakket com.example.alisson.atx2;
importeren van android.app.Activity; importeren van android.bluetooth.BluetoothDevice; importeren van android.bluetooth.BluetoothSocket; importeren van android.content.BroadcastReceiver; importeren van android.content.Context; importeren van android.content.Intent; importeren van android.content.IntentFilter; importeren van android.os.Bundle; importeren van android.view.Menu; importeren van android.view.MenuItem; importeren van android.bluetooth.BluetoothAdapter; importeren van android.view.View; importeren van android.widget.ArrayAdapter; importeren van android.widget.EditText; importeren van android.widget.ListAdapter; importeren van android.widget.ListView; importeren van android.widget.SimpleCursorAdapter; importeren van android.widget.Toast;
importeren van com.dropbox.sync.android.DbxAccountManager; importeren van com.dropbox.sync.android.DbxFile; importeren van com.dropbox.sync.android.DbxFileSystem; importeren van com.dropbox.sync.android.DbxPath;
importeren van java.io.IOException; importeren van java.io.InputStream; importeren van java.io.OutputStream; importeren van java.util.ArrayList; importeren van java.util.Set; importeren van java.util.UUID;
openbare klasse MainActivity breidt activiteit {privé BluetoothSocket mmSocket privé BluetoothDevice mmDevice privé inputlijn mmInStream; privé outputlijn mmOutStream;
beschermde nietig onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);}
openbare Booleaanse onCreateOptionsMenu (Menu menu) {/ / opblazen van het menu; dit items toegevoegd aan de action bar als het heden. getMenuInflater () .inflate (R.menu.menu_main, menu); return true;}
openbare Booleaanse onOptionsItemSelected (MenuItem-object) {/ / handvat actie bar-item klikken hier. De action bar zal / / automatisch greep klikken op het huis/omhoog knop, zo lang / / als u een bovenliggende activiteit in AndroidManifest.xml. int id = item.getItemId();
noinspection SimplifiableIfStatement als (id == R.id.action_settings) {terugkeer waar;}
Return super.onOptionsItemSelected(item); }
openbare nietige checkDevices (weergave) {}
definitieve int REQUEST_ENABLE_BT = 0; BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); definitieve ArrayList mArrayAdapter = nieuwe ArrayList();
Als (mBluetoothAdapter == null) {/ / apparaat biedt geen ondersteuning voor Bluetooth} als (! mBluetoothAdapter.isEnabled()) {opzet enableBtIntent = //Ativa Bluetooth, nieuwe Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); startActivityForResult (enableBtIntent, REQUEST_ENABLE_BT)}
Set pairedDevices = mBluetoothAdapter.getBondedDevices(); Als er gepaarde apparaten als (pairedDevices.size() > 0) {/ / gepaarde apparaten voor doorlopen (BluetoothDevice apparaat: pairedDevices) {/ / de naam en het adres toevoegen aan een matrix-adapter om te laten zien in een ListView mArrayAdapter.add(device.getName() + "\n" + device.getAddress());
Context context = getApplicationContext(); int duur = Toast.LENGTH_SHORT; Toast op toast = Toast.makeText (kader (device.getName() + "\n" + device.getAddress()), duur); if(Device.getName().startsWith("HC")) {ConnectThread ct = new ConnectThread(device); ct.run();} / / toast.show(); } } }
privé klasse ConnectThread breidt draad {}
openbare ConnectThread (BluetoothDevice apparaat) {/ / gebruik van een tijdelijk object dat later is toegewezen aan mmSocket, / / omdat mmSocket laatste BluetoothSocket tmp = null; mmDevice = apparaat; UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"); Krijgen van een BluetoothSocket om te verbinden met de gegeven BluetoothDevice proberen {/ / MY_UUID is de app UUID tekenreeks, ook gebruikt door de server code tmp = device.createRfcommSocketToServiceRecord(uuid);} vangst (IOException e) {} mmSocket = tmp; }
openbare nietige run() {probeer {/ / sluit het apparaat via het stopcontact. Dit zal blokkeren / / totdat het is gelukt of een uitzondering mmSocket.connect() gooit; Context context = getApplicationContext(); int duur = Toast.LENGTH_SHORT; Toast op toast = Toast.makeText (context, ("SUCESSO"), duur); Toast.show(); ConnectedThread ct = nieuwe ConnectedThread(mmSocket); CT.write("5"); } vangst (IOException connectException) {Context context = getApplicationContext(); int duur = Toast.LENGTH_SHORT; Toast op toast = Toast.makeText (context, (connectException.toString()), duur); Toast.show(); Onvermogend voor verbinden; Sluit de aansluiting en uitstappen proberen {mmSocket.close();} vangst (IOException closeException) {} terugkeer; }
}
/ ** Zal annuleren van een in-progress-verbinding, en sluiten de aansluiting * / public void cancel() {{mmSocket.close()}; probeer vangst (IOException e) {}}}
privé klasse ConnectedThread breidt draad {}
openbare ConnectedThread (BluetoothSocket socket) {//mmSocket = socket; Inputlijn tmpIn = null; Outputlijn tmpOut = null; Probeer {tmpIn = socket.getInputStream(); tmpOut = socket.getOutputStream();} vangst (IOException e) {}
mmInStream = tmpIn; mmOutStream = tmpOut; }
openbare nietige run() {byte [] buffer = nieuwe byte [1024]; / / buffer winkel voor de stream int bytes; / / bytes opvraagt voor read()
Houden met het luisteren naar de inputlijn totdat een uitzondering terwijl (waar voordoet) {probeer {/ / Lees uit de inputlijn bytes = mmInStream.read(buffer);
mHandler.obtainMessage (MESSAGE_READ, bytes, -1, buffer) / / .sendToTarget(); } vangst (IOException e) {breken;}} }
/ * Dit vanuit de hoofdactiviteit gegevens te sturen naar het externe apparaat oproepen * / openbare void schrijven (koord bericht) {}
byte [] msgBuffer = message.getBytes();
Probeer {mmOutStream.write(msgBuffer);} vangst (IOException e) {String msg = "In onResume() en een uitzondering is opgetreden tijdens het schrijven:" + e.getMessage(); msg msg = + ".\n\nCheck die de SPP UUID: bestaat op server.\n\n"; } }
/ * Noemen dit uit de hoofdactiviteit aan sluiting de verbinding * / public void cancel() {{mmSocket.close()}; probeer vangst (IOException e) {Context context = getApplicationContext(); int duur = Toast.LENGTH_SHORT; Toast op toast = Toast.makeText (context, (e.toString()), duur); Toast.show();} } }
}