Как отправлять / получать данные через Bluetooth Android API - PullRequest
0 голосов
/ 10 февраля 2019

У меня есть проект на NativeScript, и я получаю доступ к API-интерфейсу Bluetooth android через JavaScript, как в этом примере:

android.bluetooth.BluetoothAdapter.getDefaultAdapter();  

Я могу найти сопряженные устройства и подключиться к ним.Я хотел получить пример того, как переслать данные на устройство и получить возврат этого устройства.

Я видел что-то в документах на android о: getOutputStream ()
и getInputStream ()

, но я не знаю, как использовать это через JavaScript.

Я хочу отправить команду на устройство Elm327 OBD2 и получить данные с этого устройства.

Пример собственного кода:

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();
    }
  }
}
...