2014-04-06 31 views
24

Desidero inviare dati di stringa semplici come "a" da un dispositivo Android a un altro tramite bluetooth. Ho guardato il codice bluetooth di esempio in SDK Android ma è così complesso per me. Non riesco a capire come posso inviare solo dati specifici quando premo un pulsante. Come posso risolvere questo problema?Codice bluetooth di esempio per Android per inviare una semplice stringa via bluetooth

+0

È possibile fare riferimento [qui] anche (https://stackoverflow.com/questions/13450406/how-to-receive-serial-data-using-android-bluetooth) –

risposta

34
private OutputStream outputStream; 
private InputStream inStream; 

private void init() throws IOException { 
    BluetoothAdapter blueAdapter = BluetoothAdapter.getDefaultAdapter(); 
    if (blueAdapter != null) { 
     if (blueAdapter.isEnabled()) { 
      Set<BluetoothDevice> bondedDevices = blueAdapter.getBondedDevices(); 

      if(bondedDevices.size() > 0) { 
       Object[] devices = (Object []) bondedDevices.toArray(); 
       BluetoothDevice device = (BluetoothDevice) devices[position]; 
       ParcelUuid[] uuids = device.getUuids(); 
       BluetoothSocket socket = device.createRfcommSocketToServiceRecord(uuids[0].getUuid()); 
       socket.connect(); 
       outputStream = socket.getOutputStream(); 
       inStream = socket.getInputStream(); 
      } 

      Log.e("error", "No appropriate paired devices."); 
     } else { 
      Log.e("error", "Bluetooth is disabled."); 
     } 
    } 
} 

public void write(String s) throws IOException { 
    outputStream.write(s.getBytes()); 
} 

public void run() { 
    final int BUFFER_SIZE = 1024; 
    byte[] buffer = new byte[BUFFER_SIZE]; 
    int bytes = 0; 
    int b = BUFFER_SIZE; 

    while (true) { 
     try { 
      bytes = inStream.read(buffer, bytes, BUFFER_SIZE - bytes); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 
+2

Grazie per la vostra relpy. Oltre a questo, come posso ricevere questo messaggio da un altro dispositivo? – user3374956

+0

@ user3374956 in generale è necessario leggere i dati da 'InputStream'. Come ricevere i dati dipende dal mittente. Ho aggiornato il codice. – eleven

+1

permisssions richiesto sono? – Prasad