Example usage for android.bluetooth BluetoothDevice getAddress

List of usage examples for android.bluetooth BluetoothDevice getAddress

Introduction

In this page you can find the example usage for android.bluetooth BluetoothDevice getAddress.

Prototype

public String getAddress() 

Source Link

Document

Returns the hardware address of this BluetoothDevice.

Usage

From source file:nodomain.freeyourgadget.gadgetbridge.devices.pebble.PebblePairingActivity.java

private GBDevice getMatchingParentDeviceFromDB(BluetoothDevice btDevice) {
    String expectedSuffix = btDevice.getName();
    expectedSuffix = expectedSuffix.replace("Pebble-LE ", "");
    expectedSuffix = expectedSuffix.replace("Pebble Time LE ", "");
    expectedSuffix = expectedSuffix.substring(0, 2) + ":" + expectedSuffix.substring(2);
    LOG.info("will try to find a Pebble with BT address suffix " + expectedSuffix);
    GBDevice gbDevice = null;/*ww  w . j  a  v a  2  s .com*/
    try (DBHandler dbHandler = GBApplication.acquireDB()) {
        DaoSession session = dbHandler.getDaoSession();
        DeviceDao deviceDao = session.getDeviceDao();
        Query<Device> query = deviceDao.queryBuilder().where(DeviceDao.Properties.Type.eq(1),
                DeviceDao.Properties.Identifier.like("%" + expectedSuffix)).build();
        List<Device> devices = query.list();
        if (devices.size() == 0) {
            GB.toast("Please pair your non-LE Pebble before pairing the LE one", Toast.LENGTH_SHORT, GB.INFO);
            returnToPairingActivity();
            return null;
        } else if (devices.size() > 1) {
            GB.toast("Can not match this Pebble LE to a unique device", Toast.LENGTH_SHORT, GB.INFO);
            returnToPairingActivity();
            return null;
        }
        DeviceHelper deviceHelper = DeviceHelper.getInstance();
        gbDevice = deviceHelper.toGBDevice(devices.get(0));
        gbDevice.setVolatileAddress(btDevice.getAddress());
    } catch (Exception e) {
        GB.toast("Error retrieving devices from database", Toast.LENGTH_SHORT, GB.ERROR);
        returnToPairingActivity();
        return null;
    }
    return gbDevice;
}

From source file:activeng.pt.activenglab.BluetoothChatService.java

/**
 * Start the ConnectedThread to begin managing a Bluetooth connection
 *
 * @param socket The BluetoothSocket on which the connection was made
 * @param device The BluetoothDevice that has been connected
 *///ww  w . j  av a2  s  . co m
public synchronized void connected(BluetoothSocket socket, BluetoothDevice device, final String socketType) {
    Log.d(TAG, "connected, Socket Type:" + socketType);

    // Cancel the thread that completed the connection
    if (mConnectThread != null) {
        mConnectThread.cancel();
        mConnectThread = null;
    }

    // Cancel any thread currently running a connection
    if (mConnectedThread != null) {
        mConnectedThread.cancel();
        mConnectedThread = null;
    }

    // Cancel the accept thread because we only want to connect to one device
    if (mSecureAcceptThread != null) {
        mSecureAcceptThread.cancel();
        mSecureAcceptThread = null;
    }
    if (mInsecureAcceptThread != null) {
        mInsecureAcceptThread.cancel();
        mInsecureAcceptThread = null;
    }

    // Start the thread to manage the connection and perform transmissions
    mConnectedThread = new ConnectedThread(socket, socketType);
    mConnectedThread.start();

    deviceName = device.getName();
    deviceAddress = device.getAddress();

    // Send the name of the connected device back to the UI Activity

    //Message msg = mHandler.obtainMessage(Constants.MESSAGE_DEVICE_NAME);
    //Bundle bundle = new Bundle();
    //bundle.putString(Constants.DEVICE_NAME, device.getName());
    //bundle.putString(Constants.DEVICE_ADRESS, device.getAddress());
    //msg.setData(bundle);
    //mHandler.sendMessage(msg);

    //Intent intent = new Intent(Constants.MESSAGE_BT_NAME).putExtra(Intent.EXTRA_TEXT, device.getName());
    //mContext.sendBroadcast(intent);

    Log.d("ActivEng", "BluetoothChatService BroadcastReceiver versus LocalBroadcastReceiver");
    //mContext.getApplicationContext().registerReceiver(this.connectionUpdates, new IntentFilter(Constants.MESSAGE_TO_ARDUINO));
    //
    //LocalBroadcastManager manager = LocalBroadcastManager.getInstance(mContext);
    //LocalBroadcastManager.getInstance(mContext.getApplicationContext()).registerReceiver(this.connectionUpdates,
    //        new IntentFilter(Constants.MESSAGE_TO_ARDUINO));
    LocalBroadcastManager manager = LocalBroadcastManager.getInstance(mContext);
    IntentFilter filter = new IntentFilter(Constants.MESSAGE_TO_ARDUINO);
    manager.registerReceiver(this.connectionUpdates, filter);
    registered = true;
    setState(Constants.STATE_CONNECTED);
}

From source file:com.nbplus.iotapp.bluetooth.BluetoothLeService.java

/**
 * Initializes a reference to the local Bluetooth adapter.
 *
 * @return Return true if the initialization is successful.
 *//*from   w w  w .  j av  a 2 s. c  o  m*/
@SuppressLint("NewApi")
public IoTResultCodes initialize() {

    // Use this check to determine whether BLE is supported on the device.  Then you can
    // selectively disable BLE-related features.
    if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE)) {
        Toast.makeText(this, R.string.ble_not_supported, Toast.LENGTH_SHORT).show();
        //finish();
        return IoTResultCodes.BLE_NOT_SUPPORTED;
    }

    // Initializes a Bluetooth adapter.  For API level 18 and above, get a reference to
    // BluetoothAdapter through BluetoothManager.
    if (mBluetoothManager == null) {
        mBluetoothManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);
        if (mBluetoothManager == null) {
            Toast.makeText(this, R.string.error_bluetooth_not_supported, Toast.LENGTH_SHORT).show();
            Log.e(TAG, "Unable to initialize BluetoothManager.");
            return IoTResultCodes.BLUETOOTH_NOT_SUPPORTED;
        }
    }
    mBluetoothAdapter = mBluetoothManager.getAdapter();

    // Checks if Bluetooth is supported on the device.
    if (mBluetoothAdapter == null) {
        Toast.makeText(this, R.string.error_bluetooth_not_supported, Toast.LENGTH_SHORT).show();
        Log.e(TAG, "Unable to obtain a BluetoothAdapter.");
        //finish();
        return IoTResultCodes.BLUETOOTH_NOT_SUPPORTED;
    }
    // Ensures Bluetooth is enabled on the device.  If Bluetooth is not currently enabled,
    // fire an intent to display a dialog asking the user to grant permission to enable it.
    if (!mBluetoothAdapter.isEnabled()) {
        return IoTResultCodes.BLUETOOTH_NOT_ENABLED;
    }

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        mLeScanLollipopCallback = new ScanCallback() {
            @Override
            public void onScanResult(int callbackType, ScanResult result) {
                //super.onScanResult(callbackType, result);

                try {
                    BluetoothDevice device = result.getDevice();
                    byte[] scanRecord = result.getScanRecord().getBytes();
                    final HashMap<Integer, AdRecord> adRecords = AdRecord.parseScanRecord(scanRecord);

                    /**
                     * UUID  ? .
                     */
                    ArrayList<String> scannedUuids = DataParser.getUuids(adRecords);
                    if (scannedUuids == null || scannedUuids.size() == 0) {
                        Log.e(TAG, ">>> xx device name " + device.getAddress() + " has no uuid advertisement");
                        return;
                    }

                    IoTDevice iotDevice = new IoTDevice();
                    iotDevice.setDeviceId(device.getAddress());
                    iotDevice.setDeviceName(device.getName());
                    iotDevice.setDeviceType(IoTDevice.DEVICE_TYPE_STRING_BT);

                    iotDevice.setUuids(scannedUuids);
                    iotDevice.setUuidLen(DataParser.getUuidLength(adRecords));

                    iotDevice.setAdRecordHashMap(adRecords);
                    mTempScanedList.put(iotDevice.getDeviceId(), iotDevice);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }

            @Override
            public void onBatchScanResults(List<ScanResult> results) {
                //super.onBatchScanResults(results);
                Log.d(TAG, "mScanCallback.. onBatchScanResults");
            }

            @Override
            public void onScanFailed(int errorCode) {
                //super.onScanFailed(errorCode);
                Log.d(TAG, "mScanCallback.. onScanFailed");
            }
        };
    } else {
        mLeScanKitkatCallback = new BluetoothAdapter.LeScanCallback() {

            @Override
            public void onLeScan(final BluetoothDevice device, int rssi, byte[] scanRecord) {
                Log.d(TAG, ">> mLeScanKitkatCallback..");

                try {
                    final HashMap<Integer, AdRecord> adRecords = AdRecord.parseScanRecord(scanRecord);
                    /**
                     * UUID  ? .
                     */
                    ArrayList<String> scannedUuids = DataParser.getUuids(adRecords);
                    if (scannedUuids == null || scannedUuids.size() == 0) {
                        Log.e(TAG, ">>> xx device name " + device.getAddress() + " has no uuid advertisement");
                        return;
                    }

                    IoTDevice iotDevice = new IoTDevice();
                    iotDevice.setDeviceId(device.getAddress());
                    iotDevice.setDeviceName(device.getName());
                    iotDevice.setDeviceType(IoTDevice.DEVICE_TYPE_STRING_BT);

                    iotDevice.setUuids(scannedUuids);
                    iotDevice.setUuidLen(DataParser.getUuidLength(adRecords));

                    iotDevice.setAdRecordHashMap(adRecords);
                    mTempScanedList.put(iotDevice.getDeviceId(), iotDevice);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        };
    }

    return IoTResultCodes.SUCCESS;
}

From source file:org.thecongers.mcluster.MainActivity.java

private boolean iTPMSConnect() {
    btAdapter = BluetoothAdapter.getDefaultAdapter();
    checkBTState();//from   w ww  .j  a  v a  2 s  .  co m
    if (btAdapter != null) {
        Set<BluetoothDevice> pairedDevices = btAdapter.getBondedDevices();
        // If there are paired devices
        if (pairedDevices.size() > 0) {
            // Loop through paired devices
            for (BluetoothDevice device : pairedDevices) {
                if (device.getName().contains("iTPMS")) {
                    address = device.getAddress();
                    Log.d(TAG, "Paired iTPMS found: " + device.getName() + " " + device.getAddress());
                }
            }
            if (address == null) {
                Toast.makeText(MainActivity.this, getResources().getString(R.string.toast_noPairedTPMS),
                        Toast.LENGTH_LONG).show();
                return false;
            }
        }
        if (address != null) {
            // Set up a pointer to the remote node using it's address.
            BluetoothDevice device = btAdapter.getRemoteDevice(address);
            iTPMSConnectThread = new iTPMSConnectThread(device);
            iTPMSConnectThread.start();
        } else {
            Toast.makeText(MainActivity.this, getResources().getString(R.string.toast_noPairedTPMS),
                    Toast.LENGTH_LONG).show();
            return false;
        }
        return true;
    }
    Log.d(TAG, "Bluetooth not supported");
    return false;
}

From source file:org.thecongers.mcluster.MainActivity.java

private boolean canBusConnect() {
    btAdapter = BluetoothAdapter.getDefaultAdapter();
    checkBTState();/*from   w  w w  .j a va  2s . c  om*/
    if (btAdapter != null) {
        Set<BluetoothDevice> pairedDevices = btAdapter.getBondedDevices();
        // If there are paired devices
        if (pairedDevices.size() > 0) {
            // Loop through paired devices
            for (BluetoothDevice device : pairedDevices) {
                if (device.getName().contains("CANBusGateway")) {
                    address = device.getAddress();
                    Log.d(TAG, "Paired CANBusGateway found: " + device.getName() + " " + device.getAddress());
                }
            }
            if (address == null) {
                Toast.makeText(MainActivity.this, getResources().getString(R.string.toast_noPaired),
                        Toast.LENGTH_LONG).show();
                return false;
            }
        }
        if (address != null) {
            // Set up a pointer to the remote node using it's address.
            BluetoothDevice device = btAdapter.getRemoteDevice(address);
            canBusConnectThread = new canBusConnectThread(device);
            canBusConnectThread.start();
        } else {
            Toast.makeText(MainActivity.this, getResources().getString(R.string.toast_noPaired),
                    Toast.LENGTH_LONG).show();
            return false;
        }
        return true;
    }
    Log.d(TAG, "Bluetooth not supported");
    return false;
}

From source file:com.adafruit.bluefruit.le.connect.app.MainActivity.java

private void connect(BluetoothDevice device) {
    boolean isConnecting = mBleManager.connect(this, device.getAddress());
    if (isConnecting) {
        showConnectionStatus(true);/*from   ww w . ja  v  a  2  s .  c  om*/
    }
}

From source file:com.zologic.tardis.app.MainActivity.java

private void startScan(final UUID[] servicesToScan, final String deviceNameToScanFor) {
    Log.d(TAG, "startScan");

    // Stop current scanning (if needed)
    stopScanning();/*from  ww w . j  av a2s  .  c om*/

    // Configure scanning
    BluetoothAdapter bluetoothAdapter = BleUtils.getBluetoothAdapter(getApplicationContext());
    if (BleUtils.getBleStatus(this) != BleUtils.STATUS_BLE_ENABLED) {
        Log.w(TAG, "startScan: BluetoothAdapter not initialized or unspecified address.");
    } else {
        mScanner = new BleDevicesScanner(bluetoothAdapter, servicesToScan,
                new BluetoothAdapter.LeScanCallback() {
                    @Override
                    public void onLeScan(final BluetoothDevice device, final int rssi, byte[] scanRecord) {
                        final String deviceName = device.getName();
                        //Log.d(TAG, "Discovered device: " + (deviceName != null ? deviceName : "<unknown>"));

                        BluetoothDeviceData previouslyScannedDeviceData = null;
                        if (deviceNameToScanFor == null
                                || (deviceName != null && deviceName.equalsIgnoreCase(deviceNameToScanFor))) { // Workaround for bug in service discovery. Discovery filtered by service uuid is not working on Android 4.3, 4.4
                            if (mScannedDevices == null)
                                mScannedDevices = new ArrayList<>(); // Safeguard

                            // Check that the device was not previously found
                            for (BluetoothDeviceData deviceData : mScannedDevices) {
                                if (deviceData.device.getAddress().equals(device.getAddress())) {
                                    previouslyScannedDeviceData = deviceData;
                                    break;
                                }
                            }

                            BluetoothDeviceData deviceData;
                            if (previouslyScannedDeviceData == null) {
                                // Add it to the mScannedDevice list
                                deviceData = new BluetoothDeviceData();
                                mScannedDevices.add(deviceData);
                            } else {
                                deviceData = previouslyScannedDeviceData;
                            }

                            deviceData.device = device;
                            deviceData.rssi = rssi;
                            deviceData.scanRecord = scanRecord;
                            decodeScanRecords(deviceData);

                            // Update device data
                            long currentMillis = SystemClock.uptimeMillis();
                            if (previouslyScannedDeviceData == null
                                    || currentMillis - mLastUpdateMillis > kMinDelayToUpdateUI) { // Avoid updating when not a new device has been found and the time from the last update is really short to avoid updating UI so fast that it will become unresponsive
                                mLastUpdateMillis = currentMillis;

                                runOnUiThread(new Runnable() {
                                    @Override
                                    public void run() {
                                        updateUI();
                                    }
                                });
                            }
                        }
                    }
                });

        // Start scanning
        mScanner.start();
    }

    // Update UI
    updateUI();
}

From source file:com.cs4644.vt.theonering.MainActivity.java

private void startScan(final UUID[] servicesToScan, final String deviceNameToScanFor) {
    Log.d(TAG, "startScan");

    // Stop current scanning (if needed)
    stopScanning();/*from w ww  .  j a v  a 2s . co  m*/

    // Configure scanning
    BluetoothAdapter bluetoothAdapter = BleUtils.getBluetoothAdapter(getApplicationContext());
    if (BleUtils.getBleStatus(this) != BleUtils.STATUS_BLE_ENABLED) {
        Log.w(TAG, "startScan: BluetoothAdapter not initialized or unspecified address.");
    } else {
        mScanner = new BleDevicesScanner(bluetoothAdapter, servicesToScan,
                new BluetoothAdapter.LeScanCallback() {
                    @Override
                    public void onLeScan(final BluetoothDevice device, final int rssi, byte[] scanRecord) {
                        final String deviceName = device.getName();
                        Log.d(TAG, "Discovered device: " + (deviceName != null ? deviceName : "<unknown>"));

                        BluetoothDeviceData previouslyScannedDeviceData = null;
                        if (deviceNameToScanFor == null
                                || (deviceName != null && deviceName.equalsIgnoreCase(deviceNameToScanFor))) { // Workaround for bug in service discovery. Discovery filtered by service uuid is not working on Android 4.3, 4.4
                            if (mScannedDevices == null)
                                mScannedDevices = new ArrayList<>(); // Safeguard

                            // Check that the device was not previously found
                            for (BluetoothDeviceData deviceData : mScannedDevices) {
                                if (deviceData.device.getAddress().equals(device.getAddress())) {
                                    previouslyScannedDeviceData = deviceData;
                                    break;
                                }
                            }

                            BluetoothDeviceData deviceData;
                            if (previouslyScannedDeviceData == null) {
                                // Add it to the mScannedDevice list
                                deviceData = new BluetoothDeviceData();
                                mScannedDevices.add(deviceData);
                            } else {
                                deviceData = previouslyScannedDeviceData;
                            }

                            deviceData.device = device;
                            deviceData.rssi = rssi;
                            deviceData.scanRecord = scanRecord;
                            decodeScanRecords(deviceData);

                            // Update device data
                            long currentMillis = SystemClock.uptimeMillis();
                            if (previouslyScannedDeviceData == null
                                    || currentMillis - mLastUpdateMillis > kMinDelayToUpdateUI) { // Avoid updating when not a new device has been found and the time from the last update is really short to avoid updating UI so fast that it will become unresponsive
                                mLastUpdateMillis = currentMillis;

                                runOnUiThread(new Runnable() {
                                    @Override
                                    public void run() {
                                        updateUI();
                                    }
                                });
                            }
                        }
                    }
                });

        // Start scanning
        mScanner.start();
    }

    // Update UI
    updateUI();
}

From source file:com.adafruit.bluefruit.le.connect.app.MainActivity.java

private void startScan(final UUID[] servicesToScan) {
    Log.d(TAG, "startScan");

    // Stop current scanning (if needed)
    stopScanning();/*from  www. java 2 s  .c o m*/

    // Configure scanning
    BluetoothAdapter bluetoothAdapter = BleUtils.getBluetoothAdapter(getApplicationContext());
    if (BleUtils.getBleStatus(this) != BleUtils.STATUS_BLE_ENABLED) {
        Log.w(TAG, "startScan: BluetoothAdapter not initialized or unspecified address.");
    } else {
        mScanner = new BleDevicesScanner(bluetoothAdapter, servicesToScan,
                new BluetoothAdapter.LeScanCallback() {
                    @Override
                    public void onLeScan(final BluetoothDevice device, final int rssi, byte[] scanRecord) {
                        //final String deviceName = device.getName();
                        //Log.d(TAG, "Discovered device: " + (deviceName != null ? deviceName : "<unknown>"));

                        BluetoothDeviceData previouslyScannedDeviceData = null;
                        if (mScannedDevices == null)
                            mScannedDevices = new ArrayList<>(); // Safeguard

                        // Check that the device was not previously found
                        for (BluetoothDeviceData deviceData : mScannedDevices) {
                            if (deviceData.device.getAddress().equals(device.getAddress())) {
                                previouslyScannedDeviceData = deviceData;
                                break;
                            }
                        }

                        BluetoothDeviceData deviceData;
                        if (previouslyScannedDeviceData == null) {
                            // Add it to the mScannedDevice list
                            deviceData = new BluetoothDeviceData();
                            mScannedDevices.add(deviceData);
                        } else {
                            deviceData = previouslyScannedDeviceData;
                        }

                        deviceData.device = device;
                        deviceData.rssi = rssi;
                        deviceData.scanRecord = scanRecord;
                        decodeScanRecords(deviceData);

                        // Update device data
                        long currentMillis = SystemClock.uptimeMillis();
                        if (previouslyScannedDeviceData == null
                                || currentMillis - mLastUpdateMillis > kMinDelayToUpdateUI) { // Avoid updating when not a new device has been found and the time from the last update is really short to avoid updating UI so fast that it will become unresponsive
                            mLastUpdateMillis = currentMillis;

                            runOnUiThread(new Runnable() {
                                @Override
                                public void run() {
                                    updateUI();
                                }
                            });
                        }

                    }
                });

        // Start scanning
        mScanner.start();
    }

    // Update UI
    updateUI();
}

From source file:com.megster.cordova.BluetoothPlugin.java

/**
 * Execute a bluetooth function/*from   w  w w  .  j  a  va2 s  .  co m*/
 */
@SuppressWarnings({ "null", "deprecation" })
@Override
public PluginResult execute(String action, JSONArray args, String callbackId) {
    PluginResult pluginResult = null;

    //Log.d("BluetoothPlugin", "Action: " + action);

    // Check if bluetooth is supported at all
    if (m_bluetoothAdapter == null) {
        pluginResult = new PluginResult(PluginResult.Status.ILLEGAL_ACCESS_EXCEPTION,
                "No bluetooth adapter found");
    } else {
        if (ACTION_ENABLE.equals(action)) {
            // Check if bluetooth isn't disabled already
            if (!m_bluetoothAdapter.isEnabled()) {
                m_stateChanging = true;
                ctx.startActivityForResult(this, new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE), 1);
                while (m_stateChanging) {
                }
                ;

            }

            // Check if bluetooth is enabled now
            if (m_bluetoothAdapter.isEnabled()) {
                //start();
                pluginResult = new PluginResult(PluginResult.Status.OK, "OK");
            } else {
                pluginResult = new PluginResult(PluginResult.Status.ERROR, "Bluetooth not enabled");
            }
        }
        // Want to disable bluetooth?
        else if (ACTION_DISABLE.equals(action)) {
            if (!m_bluetoothAdapter.disable() && m_bluetoothAdapter.isEnabled()) {
                pluginResult = new PluginResult(PluginResult.Status.ERROR, "Unable to disable bluetooth");
            } else {
                pluginResult = new PluginResult(PluginResult.Status.OK, "OK");
            }

        } else if (ACTION_DISCOVERDEVICES.equals(action)) {
            m_discoveredDevices = new JSONArray();

            if (!m_bluetoothAdapter.startDiscovery()) {
                pluginResult = new PluginResult(PluginResult.Status.ERROR, "Unable to start discovery");
            } else {
                m_discovering = true;

                // Wait for discovery to finish
                while (m_discovering) {
                }

                Log.d("BluetoothPlugin", "DiscoveredDevices: " + m_discoveredDevices.length());

                pluginResult = new PluginResult(PluginResult.Status.OK, m_discoveredDevices);
            }
        }
        // Want to list UUIDs of a certain device
        else if (ACTION_GETUUIDS.equals(action)) {

            try {
                String address = args.getString(0);
                Log.d("BluetoothPlugin", "Listing UUIDs for: " + address);

                // Fetch UUIDs from bluetooth device
                BluetoothDevice bluetoothDevice = m_bluetoothAdapter.getRemoteDevice(address);
                Method m = bluetoothDevice.getClass().getMethod("fetchUuidsWithSdp");
                Log.d("BluetoothPlugin", "Method: " + m);
                m.invoke(bluetoothDevice);

                m_gettingUuids = true;

                while (m_gettingUuids) {
                }

                pluginResult = new PluginResult(PluginResult.Status.OK, m_gotUUIDs);

            } catch (Exception e) {
                Log.e("BluetoothPlugin", e.toString() + " / " + e.getMessage());

                pluginResult = new PluginResult(PluginResult.Status.JSON_EXCEPTION, e.getMessage());
            }
        } else if (ACTION_GETBONDEDDEVICES.equals(action)) {
            JSONArray bondedDevices = new JSONArray();
            Log.d("BluetoothPlugin", "Getting Bonded List...");
            Set<BluetoothDevice> bondSet = m_bluetoothAdapter.getBondedDevices();
            for (Iterator<BluetoothDevice> it = bondSet.iterator(); it.hasNext();) {
                BluetoothDevice bluetoothDevice = (BluetoothDevice) it.next();
                JSONObject deviceInfo = new JSONObject();
                try {
                    deviceInfo.put("name", bluetoothDevice.getName());
                    deviceInfo.put("address", bluetoothDevice.getAddress());
                    deviceInfo.put("isBonded", true);
                } catch (JSONException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

                bondedDevices.put(deviceInfo);
                pluginResult = new PluginResult(PluginResult.Status.OK, bondedDevices);
            }
        }
        // Connect to a given device & uuid endpoint
        else if (ACTION_CONNECT.equals(action)) {
            try {
                String address = args.getString(0);
                UUID uuid = UUID.fromString(args.getString(1));
                //UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805f9b34fb");

                Log.d("BluetoothPlugin", "Connecting...");

                BluetoothDevice bluetoothDevice = m_bluetoothAdapter.getRemoteDevice(address);
                BluetoothSocket bluetoothSocket = bluetoothDevice.createRfcommSocketToServiceRecord(uuid);

                bluetoothSocket.connect();

                m_bluetoothSockets.add(bluetoothSocket);
                int socketId = m_bluetoothSockets.indexOf(bluetoothSocket);

                pluginResult = new PluginResult(PluginResult.Status.OK, socketId);
            } catch (Exception e) {
                Log.e("BluetoothPlugin", e.toString() + " / " + e.getMessage());

                pluginResult = new PluginResult(PluginResult.Status.JSON_EXCEPTION, e.getMessage());
            }
        } else if (ACTION_READ.equals(action)) {
            try {
                int socketId = args.getInt(0);

                //Log.d( "BluetoothPlugin", "Get Data..." );

                BluetoothSocket bluetoothSocket = m_bluetoothSockets.get(socketId);
                InputStream inputStream = bluetoothSocket.getInputStream();
                Calendar cal = Calendar.getInstance();

                Date startTime = cal.getTime();
                byte[] buffer = new byte[1024];
                //               char [] buffer = new char[1024];
                String recvdString = "";
                int i = 0;
                int k = 0;
                int byteCnt = 0;
                boolean j = true;
                char buf = 0;
                boolean timeOut = false;
                while (j) {
                    Calendar newCal = Calendar.getInstance();
                    Date endTime = newCal.getTime();

                    if ((endTime.getTime() - startTime.getTime()) < 60000) {

                        if (inputStream.available() > 0) {
                            //   Log.d( "BluetoothPlugin", "Time Increment: " + format.format(endTime));

                            i += inputStream.read(buffer, k, inputStream.available());
                            k = i;
                            Log.d("BluetoothPlugin", "i=" + i);
                            buf = (char) (buffer[i - 1] & 0xFF);
                            Log.d("BluetoothPlugin", "buf=" + Integer.toHexString(buffer[i - 1] & 0xFF));
                            if ((buf == '#') || (buf == 0x0A) || (buf == (char) 0xBB) || (buf == (char) 0xAA)) {
                                //if (timeOut == true) Log.d( "BluetoothPlugin", "Time Out");
                                j = false;
                            }
                        }

                    } else {
                        timeOut = true;
                        j = false;
                    }
                    /*
                                       buffer[i]=  (char) inputStream.read();
                            
                                         if ((buffer[i] == '#') || (buffer[i]==0x0A))
                                         {
                                            j=false;
                                         }
                                            i++;
                    */
                }
                if (timeOut) {
                    Log.d("BluetoothPlugin", "Time Out");
                    recvdString = "Timeout";
                } else {
                    byteCnt = i;

                    recvdString = new String(buffer, 0, i);//.toString();//"KBytes" + byteCnt;
                    i = 0;
                    String stringByteCnt = String.valueOf(byteCnt);

                }

                //buffer = b.toString();
                Log.d("BluetoothPlugin", "String: " + recvdString);
                pluginResult = new PluginResult(PluginResult.Status.OK, recvdString);
            } catch (Exception e) {
                Log.e("BluetoothPlugin", e.toString() + " / " + e.getMessage());

                pluginResult = new PluginResult(PluginResult.Status.JSON_EXCEPTION, e.getMessage());
            }
        } else if (ACTION_READ2.equals(action)) {
            try {

                int socketId = args.getInt(0);
                Calendar cal = Calendar.getInstance();

                Date startTime = cal.getTime();

                //Log.d( "BluetoothPlugin", "Get Data..." );

                BluetoothSocket bluetoothSocket = m_bluetoothSockets.get(socketId);
                InputStream inputStream = bluetoothSocket.getInputStream();
                //               DataInputStream dataInputStream = new DataInputStream(inputStream);

                //char[] buffer = new char[15000];
                byte[] buf = new byte[55000];
                //byte[] buffer2 = new byte[128];
                String recvdString = "";
                int i = 0;
                int k = 0;
                int byteCnt = 0;
                boolean j = true;
                SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
                Log.d("BluetoothPlugin", "StartTime: " + format.format(startTime));
                boolean timeOut = false;
                while (j) {
                    Calendar newCal = Calendar.getInstance();
                    Date endTime = newCal.getTime();

                    if ((endTime.getTime() - startTime.getTime()) < 12000) {

                        if (inputStream.available() > 0) {
                            //   Log.d( "BluetoothPlugin", "Time Increment: " + format.format(endTime));
                            i += inputStream.read(buf, k, inputStream.available());
                            k = i;
                            Log.d("BluetoothPlugin", "i=" + i);
                        }
                        //Log.d( "BluetoothPlugin", "i="+dataInputStream);
                        //inputStream.close();
                        if (i > 51180) {
                            //Log.d( "BluetoothPlugin", "i="+i);
                            j = false;
                            //i++;
                        }
                    } else {
                        j = false;
                        timeOut = true;
                        Log.d("BluetoothPlugin", "ECG Read TimeOut");
                    }

                }
                if (timeOut) {
                    recvdString = "Aborted";
                } else {
                    File ecgPath = Environment.getExternalStorageDirectory();
                    File ecg = new File(ecgPath, "/prago/ecg.txt");
                    FileWriter fos = new FileWriter(ecg, false);

                    String stringBuf = new String("");
                    //long byteCnt
                    byteCnt = (i - 1) / 3;
                    long[] buf2 = new long[byteCnt];

                    for (k = 0; k < byteCnt; k++) {

                        int firstByte = 0;
                        int secondByte = 0;
                        int thirdByte = 0;
                        int fourthByte = 0;
                        int index = k * 3;
                        firstByte = (0x000000FF & ((int) buf[index + 1]));
                        secondByte = (0x000000FF & ((int) buf[index + 2]));
                        thirdByte = (0x000000FF & ((int) buf[index + 3]));
                        buf2[k] = ((long) (firstByte << 16 | secondByte << 8 | thirdByte)) & 0xFFFFFFFFL;

                        stringBuf = buf2[k] + ",";
                        fos.write(stringBuf);
                    }

                    fos.flush();
                    fos.close();
                    byteCnt = i;

                    recvdString = ecg.getPath();
                }
                i = 0;

                pluginResult = new PluginResult(PluginResult.Status.OK, recvdString);
            } catch (Exception e) {
                Log.e("BluetoothPlugin", e.toString() + " / " + e.getMessage());

                pluginResult = new PluginResult(PluginResult.Status.JSON_EXCEPTION, e.getMessage());
            }
        }

        else if (ACTION_READ3.equals(action)) {
            try {
                int socketId = args.getInt(0);

                Log.d("BluetoothPlugin", "Get Steth Data...");

                BluetoothSocket bluetoothSocket = m_bluetoothSockets.get(socketId);
                //bluetoothSocket.close();
                //bluetoothSocket = m_bluetoothSockets.get(socketId);
                //bluetoothSocket.connect();
                InputStream inputStream = bluetoothSocket.getInputStream();
                //inputStream.reset();
                //int server_port = 9999;
                //DatagramSocket s = new DatagramSocket();
                //InetAddress local = InetAddress.getByName("192.168.2.7");
                //s.connect(local,server_port);
                //int msg_length=messageStr.length();
                //byte[] message = messageStr.getBytes();

                //char[] buffer = new char[15000];
                //byte [] buf = new byte[10000];
                //byte[] buffer2 = new byte[128];
                //               String recvdString;
                Calendar cal = Calendar.getInstance();
                //byte [] buf = new byte[245000];
                Date startTime = cal.getTime();
                String recvdString = "";
                int i = 0;
                int endofFileDetect = 0;
                byte[] firstChar = new byte[1];
                int writetoFile = 0;
                int k = 0;
                long finalbytes = 0;
                boolean startdetect = false;
                int byteCnt = 0;
                boolean j = true;
                boolean ecgRec = false;
                byte[] buf = new byte[10000];
                firstChar[0] = 0x52;
                File stethPath = Environment.getExternalStorageDirectory();
                File steth = new File(stethPath, "/prago/steth.wav");
                FileOutputStream fos = new FileOutputStream(steth);
                while (j) {
                    Calendar newCal = Calendar.getInstance();
                    Date endTime = newCal.getTime();
                    if ((endTime.getTime() - startTime.getTime()) < 90000) {
                        if (inputStream.available() > 0) {
                            //Log.d( "BluetoothPlugin", "inputStream.available="+inputStream.available());
                            //byte [] buf = new byte[inputStream.available()];
                            k = inputStream.read(buf, 0, inputStream.available());
                            //Log.d( "BluetoothPlugin", "buf[0]="+buf[0]);
                            if ((writetoFile == 0)) {
                                if ((buf[0] & 0xFF) == 0x52) {
                                    if (k > 1) {
                                        if ((buf[1] & 0xFF) == 0x49) {
                                            writetoFile = 1;
                                            i = 0;
                                        }

                                    } else {
                                        startdetect = true;
                                    }

                                } else if (((buf[0] & 0xFF) == 0x49) && startdetect == true) {
                                    fos.write(firstChar, 0, 1);
                                    writetoFile = 1;
                                    i = 0;
                                } else {
                                    startdetect = false;
                                }
                            }
                            if (writetoFile == 1) {

                                i += k;
                                //Log.d( "BluetoothPlugin", "i="+i);
                                //Log.d( "BluetoothPlugin", "k="+k);
                                fos.write(buf, 0, k);
                                //if (k>1)Log.d( "BluetoothPlugin", "buf[k-2]="+Integer.toHexString(buf[k-2]&0xFF));
                                //Log.d( "BluetoothPlugin", "buf[k-1]="+Integer.toHexString(buf[k-1]&0xFF));
                                if ((k > 1) && ((buf[k - 2] & 0xFF) == 0xAA) && ((buf[k - 1] & 0xFF) == 0xBB)) {
                                    endofFileDetect = 2;
                                    //   Log.d( "BluetoothPlugin", "EoF Detected Multibyte");

                                } else if ((k == 1) && ((buf[0] & 0xFF) == 0xAA)) {
                                    endofFileDetect = 1;
                                    //   Log.d( "BluetoothPlugin", "EoF Detected Firstbyte");
                                } else if (((buf[0] & 0xFF) == 0xBB) && (endofFileDetect == 1)) {
                                    endofFileDetect += 1;
                                    //      Log.d( "BluetoothPlugin", "EoF Detected Sectbyte");
                                } else {
                                    endofFileDetect = 0;
                                }

                                if (endofFileDetect == 2) {
                                    Log.d("BluetoothPlugin", "File Write Complete");
                                    //Log.d( "BluetoothPlugin", "i="+i);
                                    fos.flush();
                                    fos.close();
                                    j = false;
                                    //i++;
                                    recvdString = steth.getPath();

                                }

                            }
                            //   DatagramPacket p = new DatagramPacket(buf, k,local,server_port);
                            //   s.send(p);//               DataInputStream dataInputStream = new DataInputStream(inputStream);
                        }
                        //Log.d( "BluetoothPlugin", "i="+dataInputStream);
                        //inputStream.close();

                    } else {
                        j = false;
                        //timeOut=true;
                        Log.d("BluetoothPlugin", "Steth Read TimeOut");
                        //bluetoothSocket.close();
                        // recvdString= "Aborted";
                        fos.flush();
                        fos.close();
                        recvdString = steth.getPath();
                    }

                }
                pluginResult = new PluginResult(PluginResult.Status.OK, recvdString);
            } catch (Exception e) {

                Log.e("BluetoothPlugin", e.toString() + " / " + e.getMessage());

                pluginResult = new PluginResult(PluginResult.Status.JSON_EXCEPTION, e.getMessage());
            }
        }

        //--change--//

        else if (ACTION_READ5.equals(action)) {
            try {
                int socketId = args.getInt(0);

                Log.d("BluetoothPlugin", "Transfer Steth Data...");

                BluetoothSocket bluetoothSocket = m_bluetoothSockets.get(socketId);
                //bluetoothSocket.close();
                //bluetoothSocket = m_bluetoothSockets.get(socketId);
                //bluetoothSocket.connect();
                InputStream inputStream = bluetoothSocket.getInputStream();
                //inputStream.reset();
                //int server_port = 9999;
                //DatagramSocket s = new DatagramSocket();
                //InetAddress local = InetAddress.getByName("192.168.2.7");
                //s.connect(local,server_port);
                //int msg_length=messageStr.length();
                //byte[] message = messageStr.getBytes();

                //char[] buffer = new char[15000];
                //byte [] buf = new byte[10000];
                //byte[] buffer2 = new byte[128];
                //String recvdString;
                Calendar cal = Calendar.getInstance();
                //byte [] buf = new byte[245000];
                Date startTime = cal.getTime();
                String recvdString = "";
                int i = 0;
                int endofFileDetect = 0;
                byte[] firstChar = new byte[1];
                int writetoFile = 0;
                int k = 0;
                long finalbytes = 0;
                boolean startdetect = false;
                int byteCnt = 0;
                boolean j = true;
                boolean ecgRec = false;
                byte[] buf = new byte[10000];
                firstChar[0] = 0x52;
                File stethPath = Environment.getExternalStorageDirectory();
                File steth = new File(stethPath, "/prago/steth.wav");
                FileOutputStream fos = new FileOutputStream(steth);
                while (j) {
                    Calendar newCal = Calendar.getInstance();
                    Date endTime = newCal.getTime();
                    if ((endTime.getTime() - startTime.getTime()) < 5000) {
                        if (inputStream.available() > 0) {
                            //                        Log.d( "BluetoothPlugin", "inputStream.available="+inputStream.available());
                            cal = Calendar.getInstance();
                            startTime = cal.getTime();
                            //byte [] buf = new byte[inputStream.available()];
                            k = inputStream.read(buf, 0, inputStream.available());
                            //Log.d( "BluetoothPlugin", "buf[0]="+buf[0]);
                            if ((writetoFile == 0)) {
                                if ((buf[0] & 0xFF) == 0x52) {
                                    if (k > 1) {
                                        if ((buf[1] & 0xFF) == 0x49) {
                                            writetoFile = 1;
                                            i = 0;
                                        }

                                    } else {
                                        startdetect = true;
                                    }

                                } else if (((buf[0] & 0xFF) == 0x49) && startdetect == true) {
                                    fos.write(firstChar, 0, 1);
                                    writetoFile = 1;
                                    i = 0;
                                } else {
                                    startdetect = false;
                                }
                            }
                            if (writetoFile == 1) {

                                i += k;
                                //Log.d( "BluetoothPlugin", "i="+i);
                                //Log.d( "BluetoothPlugin", "k="+k);
                                fos.write(buf, 0, k);
                                //if (k>1)Log.d( "BluetoothPlugin", "buf[k-2]="+Integer.toHexString(buf[k-2]&0xFF));
                                //Log.d( "BluetoothPlugin", "buf[k-1]="+Integer.toHexString(buf[k-1]&0xFF));
                                if ((k > 1) && ((buf[k - 2] & 0xFF) == 0xAA) && ((buf[k - 1] & 0xFF) == 0xBB)) {
                                    endofFileDetect = 2;
                                    //   Log.d( "BluetoothPlugin", "EoF Detected Multibyte");

                                } else if ((k == 1) && ((buf[0] & 0xFF) == 0xAA)) {
                                    endofFileDetect = 1;
                                    //   Log.d( "BluetoothPlugin", "EoF Detected Firstbyte");
                                } else if (((buf[0] & 0xFF) == 0xBB) && (endofFileDetect == 1)) {
                                    endofFileDetect += 1;
                                    //      Log.d( "BluetoothPlugin", "EoF Detected Sectbyte");
                                } else {
                                    endofFileDetect = 0;
                                }

                                if (endofFileDetect == 2) {
                                    Log.d("BluetoothPlugin", "File Write Complete");
                                    //Log.d( "BluetoothPlugin", "i="+i);
                                    fos.flush();
                                    fos.close();
                                    j = false;
                                    //i++;
                                    recvdString = steth.getPath();

                                }

                            }
                            //   DatagramPacket p = new DatagramPacket(buf, k,local,server_port);
                            //   s.send(p);//               DataInputStream dataInputStream = new DataInputStream(inputStream);
                        }
                        //Log.d( "BluetoothPlugin", "i="+dataInputStream);
                        //inputStream.close();

                    } else {
                        j = false;
                        //timeOut=true;
                        Log.d("BluetoothPlugin", "Steth Read TimeOut");
                        //bluetoothSocket.close();
                        // recvdString= "Aborted";
                        fos.flush();
                        fos.close();
                        recvdString = steth.getPath();
                    }

                }
                pluginResult = new PluginResult(PluginResult.Status.OK, recvdString);
            } catch (Exception e) {

                Log.e("BluetoothPlugin", e.toString() + " / " + e.getMessage());

                pluginResult = new PluginResult(PluginResult.Status.JSON_EXCEPTION, e.getMessage());
            }
        }

        //--change--//

        else if (ACTION_READ4.equals(action)) {
            try {
                start();

                //         int socketId = args.getInt(0);
                Log.d("BluetoothPlugin", "Make Discoverable");
                BluetoothAdapter mBluetoothAdapter = null;
                ctx.startActivityForResult(this, new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE), 1);
                m_discoverable = true;
                Calendar cal = Calendar.getInstance();

                Date startTime = cal.getTime();
                Calendar newCal = Calendar.getInstance();
                String recvdString = "";
                Date endTime = newCal.getTime();
                while (m_discoverable && ((endTime.getTime() - startTime.getTime()) < 32000)) {
                    newCal = Calendar.getInstance();
                    endTime = newCal.getTime();
                }
                if (m_discoverable) {
                    recvdString = "No Device";
                } else {
                    Log.d("BluetoothPlugin", "Connected with Remote Device");

                    BluetoothSocket bluetoothSocket = bluetoothListenSocket;
                    InputStream inputStream = bluetoothSocket.getInputStream();

                    int i = 0;
                    int k = 0;
                    boolean j = true;
                    boolean measurementComplete = false;
                    //               boolean measurementOngoing = false;
                    boolean measurementStart = false;
                    float decweight = 0;
                    int[] buf = new int[100];
                    while (!measurementComplete) {
                        buf[i] = inputStream.read();

                        if ((i > 5) && (buf[i] == 0x02) && (buf[i - 6] == 0x93) && (buf[i - 1] == 0x00)
                                && !measurementStart) {
                            measurementStart = true;
                        }
                        if (measurementStart && (buf[i - 1] == 0x04) && (buf[i - 7] == 0x93)
                                && (buf[i - 2] == 0x0)) {
                            measurementComplete = true;
                            measurementStart = false;
                            //                           measurementOngoing = false;
                            decweight = (buf[i - 10] << 8) + buf[i - 9];
                        }
                        i++;

                        Log.d("BluetoothPlugin", "i=" + i);
                    }

                    //   String recvdString= new String(buf,0,i,"ISO-8859-1");;//new String(buf,0,i,"ISO-8859-1");//.toString();//"KBytes" + byteCnt;
                    float weight = decweight / 100;
                    //weight += decweight/100;
                    recvdString = "" + weight;
                    bluetoothSocket.close();
                    Log.d("BluetoothPlugin", "Disconnected with Remote Device");
                }
                pluginResult = new PluginResult(PluginResult.Status.OK, recvdString);

            } catch (Exception e) {
                Log.e("BluetoothPlugin", e.toString() + " / " + e.getMessage());

                pluginResult = new PluginResult(PluginResult.Status.JSON_EXCEPTION, e.getMessage());
            }
        } else if (ACTION_WRITE.equals(action)) {
            try {

                int socketId = args.getInt(0);
                byte[] value = { 0x11, 0x0d, 0x44, 0x4d, 0x50 };
                //               byte[] value =    {(byte)0x11,(byte)0x0D, (byte)0x0A, (byte)0x44, (byte)0x4D, (byte)0x46};

                String string = new String(value);
                char sendCmd = 'g';
                byte sendCmdByte = (byte) sendCmd;//.getBytes("UTF-16LE");
                byte[] data = args.getString(1).getBytes("UTF-8");

                if (data[0] == sendCmdByte) {
                    data = value;
                    Log.d("BluetoothPlugin", "Sending Onetouch Ultra2 Commands...");
                } else if (data[0] == 'e') {
                    data = args.getString(1).getBytes("UTF-8");
                    //Log.d( "BluetoothPlugin", "Sending +tronic Commands..." + args.getString(1));
                } else {
                    data = args.getString(1).getBytes("UTF-16LE");
                    //Log.d( "BluetoothPlugin", "Sending +tronic Commands..." + args.getString(1));
                }
                //Log.d( "BluetoothPlugin", "Write Data..." + string );

                BluetoothSocket bluetoothSocket = m_bluetoothSockets.get(socketId);
                OutputStream outputStream = bluetoothSocket.getOutputStream();

                outputStream.write(data);
                outputStream.flush();
                //outputStream.close();
                //Log.d( "BluetoothPlugin", "Buffer: " + String.valueOf(buffer) );
                pluginResult = new PluginResult(PluginResult.Status.OK, "Success");
            } catch (Exception e) {
                Log.e("BluetoothPlugin", e.toString() + " / " + e.getMessage());

                pluginResult = new PluginResult(PluginResult.Status.JSON_EXCEPTION, e.getMessage());
            }
        } else if (ACTION_DISCONNECT.equals(action)) {
            try {
                int socketId = args.getInt(0);

                // Fetch socket & close it
                BluetoothSocket bluetoothSocket = m_bluetoothSockets.get(socketId);
                bluetoothSocket.close();

                // Remove socket from internal list
                m_bluetoothSockets.remove(socketId);

                // Everything went fine...
                pluginResult = new PluginResult(PluginResult.Status.OK, "OK");
            } catch (Exception e) {
                Log.e("BluetoothPlugin", e.toString() + " / " + e.getMessage());

                pluginResult = new PluginResult(PluginResult.Status.JSON_EXCEPTION, e.getMessage());
            }
        } else {
            pluginResult = new PluginResult(PluginResult.Status.INVALID_ACTION,
                    "Action '" + action + "' not supported");
        }
    }

    return pluginResult;
}