Example usage for android.bluetooth BluetoothAdapter EXTRA_DISCOVERABLE_DURATION

List of usage examples for android.bluetooth BluetoothAdapter EXTRA_DISCOVERABLE_DURATION

Introduction

In this page you can find the example usage for android.bluetooth BluetoothAdapter EXTRA_DISCOVERABLE_DURATION.

Prototype

String EXTRA_DISCOVERABLE_DURATION

To view the source code for android.bluetooth BluetoothAdapter EXTRA_DISCOVERABLE_DURATION.

Click Source Link

Document

Used as an optional int extra field in #ACTION_REQUEST_DISCOVERABLE intents to request a specific duration for discoverability in seconds.

Usage

From source file:com.bluetooth.comp529.bluetoothchatproj.chat.BluetoothChatFragment.java

/**
 * Makes this device discoverable.//from   www .jav a2s.c  om
 */
private void ensureDiscoverable() {
    // check scan mode so that way we do not have to ask again once discoverable.
    if (mBluetoothAdapter.getScanMode() != BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE) {
        Intent discoverableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
        discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 0);
        startActivity(discoverableIntent);
    }
}

From source file:com.authorwjf.bounce.BluetoothChat.java

private void ensureDiscoverable() {
    if (mBluetoothAdapter.getScanMode() != BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE) {
        Intent discoverableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
        discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300);
        startActivity(discoverableIntent);
    }//ww w .  ja va  2 s .co m
}

From source file:johmphot.card.bluetooth.MultiplayerGameActivity.java

/**
 * Makes this device discoverable.//from  w ww. j av  a  2  s  . c  o  m
 */
private void ensureDiscoverable() {
    if (btAdapter.getScanMode() != BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE) {
        Intent discoverableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
        discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300);
        startActivity(discoverableIntent);
    }
}

From source file:com.googlecode.android_scripting.facade.BluetoothFacade.java

@Rpc(description = "Requests that the device be discoverable for Bluetooth connections.")
public void bluetoothMakeDiscoverable(
        @RpcParameter(name = "duration", description = "period of time, in seconds, during which the device should be discoverable") @RpcDefault("300") Integer duration) {
    if (mBluetoothAdapter.getScanMode() != BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE) {
        Intent discoverableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
        discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, duration);
        // Use startActivityForResult to make this a synchronous call.
        mAndroidFacade.startActivityForResult(discoverableIntent);
    }/*from w  w  w.j av  a 2s  .  co m*/
}

From source file:com.duy.pascal.interperter.libraries.android.connection.bluetooth.AndroidBluetoothLib.java

@SuppressWarnings("unused")
@PascalMethod(description = "Requests that the device be discoverable for Bluetooth connections.")
public void bluetoothMakeDiscoverable(
        @PascalParameter(name = "duration", description = "period of time, in seconds, during which the device should be discoverable") @RpcDefault("300") Integer duration) {
    if (mBluetoothAdapter.getScanMode() != BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE) {
        Intent discoverableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
        discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, duration);
        // Use startActivityForResult to make this a synchronous call.
        mAndroidFacade.startActivityForResult(discoverableIntent);
    }/*w ww.j  av a 2s . com*/
}

From source file:org.fdroid.fdroid.MainActivity.java

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case R.id.action_login:
        if (mService != null) {
            com.skubit.Utils.startAuthorization(this, mService);
        } else {//from  w w  w.j av  a 2s  .c  o  m
            if (!com.skubit.Utils.isIabInstalled(getPackageManager())) {
                startActivityForResult(com.skubit.Utils.getIabIntent(), com.skubit.Utils.PLAY_CODE);
            }
        }
        return true;
    case R.id.action_update_repo:
        updateRepos();
        return true;

    case R.id.action_manage_repos:
        Intent i = new Intent(this, ManageReposActivity.class);
        startActivityForResult(i, REQUEST_MANAGEREPOS);
        return true;

    case R.id.action_settings:
        Intent prefs = new Intent(getBaseContext(), PreferencesActivity.class);
        startActivityForResult(prefs, REQUEST_PREFS);
        return true;

    case R.id.action_swap:
        startActivity(new Intent(this, SwapActivity.class));
        return true;

    case R.id.action_search:
        onSearchRequested();
        return true;

    case R.id.action_bluetooth_apk:
        /*
         * If Bluetooth has not been enabled/turned on, then enabling
         * device discoverability will automatically enable Bluetooth
         */
        Intent discoverBt = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
        discoverBt.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 121);
        startActivityForResult(discoverBt, REQUEST_ENABLE_BLUETOOTH);
        // if this is successful, the Bluetooth transfer is started
        return true;

    case R.id.action_about:
        View view = null;
        if (Build.VERSION.SDK_INT >= 11) {
            LayoutInflater li = LayoutInflater.from(this);
            view = li.inflate(R.layout.about, null);
        } else {
            view = View.inflate(new ContextThemeWrapper(this, R.style.AboutDialogLight), R.layout.about, null);
        }

        // Fill in the version...
        try {
            PackageInfo pi = getPackageManager().getPackageInfo(getApplicationContext().getPackageName(), 0);
            ((TextView) view.findViewById(R.id.version)).setText(pi.versionName);
        } catch (Exception e) {
        }

        AlertDialog.Builder p = null;
        if (Build.VERSION.SDK_INT >= 11) {
            p = new AlertDialog.Builder(this).setView(view);
        } else {
            p = new AlertDialog.Builder(new ContextThemeWrapper(this, R.style.AboutDialogLight)).setView(view);
        }
        final AlertDialog alrt = p.create();
        alrt.setIcon(R.drawable.ic_launcher_market);
        alrt.setTitle(getString(R.string.about_title));
        alrt.setButton(AlertDialog.BUTTON_NEUTRAL, getString(R.string.about_website),
                new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int whichButton) {
                        Uri uri = Uri.parse("https://f-droid.org");
                        startActivity(new Intent(Intent.ACTION_VIEW, uri));
                    }
                });
        alrt.setButton(AlertDialog.BUTTON_NEGATIVE, getString(R.string.ok),
                new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int whichButton) {
                    }
                });
        alrt.show();
        return true;
    }
    return super.onOptionsItemSelected(item);
}

From source file:org.apache.cordova.plugin.BluetoothPlugin.java

@Override
public boolean execute(String action, JSONArray args, final CallbackContext callbackContext)
        throws JSONException {

    logDbg("Action: " + action);

    if (ACTION_IS_SUPPORTED.equals(action)) {
        callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, m_bluetoothAdapter != null));
        return true;
    } else if (m_bluetoothAdapter == null) {
        String msg = "Bluetooth is not supported !";
        callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.ERROR, msg));
        logErr(msg);/*from  ww  w  .j av a2  s . c o m*/
        return true;
    } else if (ACTION_ENABLE.equals(action)) {
        this.callback_enable = callbackContext;
        PluginResult pluginResult = new PluginResult(PluginResult.Status.NO_RESULT);
        pluginResult.setKeepCallback(true);
        if (!m_bluetoothAdapter.isEnabled()) {
            this.cordova.startActivityForResult(this, new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE),
                    this.REQUEST_CODE_ENABLE);
        }
        callbackContext.sendPluginResult(pluginResult);
        return true;
    } else if (ACTION_DISABLE.equals(action)) {
        PluginResult pluginResult;
        if (!m_bluetoothAdapter.disable()
                && !(m_bluetoothAdapter.getState() == BluetoothAdapter.STATE_TURNING_OFF
                        || m_bluetoothAdapter.getState() == BluetoothAdapter.STATE_OFF)) {
            pluginResult = new PluginResult(PluginResult.Status.ERROR);
        } else {
            pluginResult = new PluginResult(PluginResult.Status.OK);
        }
        callbackContext.sendPluginResult(pluginResult);
        return true;
    } else if (ACTION_IS_ENABLED.equals(action)) {
        boolean b = m_bluetoothAdapter.isEnabled();
        callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, b));
        return true;
    } else if (ACTION_GETADDRESS.equals(action)) {
        String address = m_bluetoothAdapter.getAddress();
        callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, address));
        return true;
    } else if (ACTION_GETNAME.equals(action)) {
        String name = m_bluetoothAdapter.getName();
        callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, name));
        return true;
    } else if (ACTION_REQUEST_DISCOVERABLE.equals(action)) {
        final int duration = args.getInt(0);
        this.callback_discoverable = callbackContext;
        Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
        intent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, duration);
        this.cordova.startActivityForResult(this, intent, this.REQUEST_CODE_DISCOVERABLE);
        PluginResult pluginResult = new PluginResult(PluginResult.Status.NO_RESULT);
        pluginResult.setKeepCallback(true);
        callbackContext.sendPluginResult(pluginResult);
        return true;
    } else if (ACTION_STARTDISCOVERY.equals(action)) {
        this.callback_discovery = callbackContext;
        m_discoveredDevices = new JSONArray();
        // be sure there are no ongoing discovery
        m_bluetoothAdapter.cancelDiscovery();
        if (!m_bluetoothAdapter.startDiscovery()) {
            String msg = "Unable to start discovery";
            logErr(msg);
            callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.ERROR, msg));
        } else {
            PluginResult pluginResult = new PluginResult(PluginResult.Status.NO_RESULT);
            pluginResult.setKeepCallback(true);
            callbackContext.sendPluginResult(pluginResult);
        }
        return true;
    } else if (ACTION_CANCELDISCOVERY.equals(action)) {
        if (m_bluetoothAdapter.cancelDiscovery())
            callbackContext.success();
        else
            callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.ERROR));
        return true;
    } else if (ACTION_GETBONDEDDEVICES.equals(action)) {
        JSONArray bondedDevices = new JSONArray();
        Set<BluetoothDevice> bondSet = m_bluetoothAdapter.getBondedDevices();
        for (Iterator<BluetoothDevice> it = bondSet.iterator(); it.hasNext();) {
            BluetoothDevice bluetoothDevice = (BluetoothDevice) it.next();
            JSONObject deviceInfo = new JSONObject();
            deviceInfo.put("name", bluetoothDevice.getName());
            deviceInfo.put("address", bluetoothDevice.getAddress());
            deviceInfo.put("isBonded", true);
            bondedDevices.put(deviceInfo);
        }
        callbackContext.success(bondedDevices);
        return true;
    } else if (ACTION_FETCHUUIDS.equals(action)) {
        final String address = args.getString(0);
        this.callback_uuids = callbackContext;

        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1) {
            String msg = "Not supported, minimum SDK version is :" + Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1;
            logErr(msg);
            callbackContext.error(msg);
            return true;
        }
        try {
            logDbg("Listing UUIDs for : " + address);
            // Fetch UUIDs from bluetooth device
            BluetoothDevice bluetoothDevice = m_bluetoothAdapter.getRemoteDevice(address);
            // min api 15 !!!
            Method m = bluetoothDevice.getClass().getMethod("fetchUuidsWithSdp", (Class[]) null);
            m.invoke(bluetoothDevice, (Object[]) null);
            PluginResult pluginResult = new PluginResult(PluginResult.Status.NO_RESULT);
            pluginResult.setKeepCallback(true);
            callbackContext.sendPluginResult(pluginResult);
        } catch (Exception e) {
            logErr(e.toString() + " / " + e.getMessage());
            callbackContext.error(e.getMessage());
        }
        return true;
    } else if (ACTION_CONNECT.equals(action)) {
        final String address = args.getString(0);
        final String uuid = args.getString(1);
        final boolean secure = args.getBoolean(2);
        this.callback_connect = callbackContext;
        cordova.getThreadPool().execute(new Runnable() {
            public void run() {
                BluetoothSocket socket = null;
                try {
                    logDbg("Connecting...");
                    // Cancel discovery because it will slow down the connection
                    if (m_bluetoothAdapter.isDiscovering())
                        m_bluetoothAdapter.cancelDiscovery();
                    BluetoothDevice bluetoothDevice = m_bluetoothAdapter.getRemoteDevice(address);
                    if (secure) {
                        socket = connectSecureHelper(bluetoothDevice, UUID.fromString(uuid));
                    } else {
                        socket = connectInsecureHelper(bluetoothDevice, UUID.fromString(uuid));
                    }
                } catch (Exception e) {
                    logErr(e.toString() + " / " + e.getMessage());
                    callback_connect.error(e.getMessage());
                }
                if (socket != null) {
                    logDbg("Connected");
                    m_sockets.add(socket);
                    int socketId = m_sockets.indexOf(socket);
                    callback_connect.sendPluginResult(new PluginResult(PluginResult.Status.OK, socketId));
                } else {
                    callback_connect.error(0);
                }
            }
        });
        PluginResult pluginResult = new PluginResult(PluginResult.Status.NO_RESULT);
        pluginResult.setKeepCallback(true);
        callbackContext.sendPluginResult(pluginResult);
        return true;
    } else if (ACTION_DISCONNECT.equals(action)) {
        final int socketId = args.getInt(0);
        try {
            BluetoothSocket socket = m_sockets.get(socketId);
            logDbg("Close socket");
            socket.close();
            logDbg("Delete socket from list");
            m_sockets.remove(socketId);
            for (int i = 0; i < m_readThreads.size(); i++) {
                if (m_readThreads.get(i).socketId == socketId) {
                    m_readThreads.remove(i);
                    break;
                }
            }
            callbackContext.success();
        } catch (Exception e) {
            logErr(e.toString() + " / " + e.getMessage());
            callbackContext.error(e.getMessage());
        }
        return true;
    } else if (ACTION_LISTEN.equals(action)) {
        final String name = args.getString(0);
        final String uuid = args.getString(1);
        final boolean secure = args.getBoolean(2);
        this.callback_listen = callbackContext;
        if (m_listenThread != null) {
            m_listenThread.cancel();
            m_listenThread = null;
        }
        m_listenThread = new ListenThread(this.cordova, name, UUID.fromString(uuid), secure);
        m_listenThread.start();
        PluginResult pluginResult = new PluginResult(PluginResult.Status.NO_RESULT);
        pluginResult.setKeepCallback(true);
        callbackContext.sendPluginResult(pluginResult);
        return true;
    } else if (ACTION_CANCEL_LISTENING.equals(action)) {
        if (m_listenThread != null) {
            m_listenThread.cancel();
        }
        m_listenThread = null;
        callbackContext.success();
        return true;
    } else if (ACTION_READ.equals(action)) {
        final int socketId = args.getInt(0);
        final int bufferSize = args.getInt(1);
        this.callback_read = callbackContext;
        ReadThread readThread = new ReadThread(m_sockets.get(socketId), socketId, bufferSize);
        readThread.start();
        m_readThreads.add(readThread);
        PluginResult pluginResult = new PluginResult(PluginResult.Status.NO_RESULT);
        pluginResult.setKeepCallback(true);
        callbackContext.sendPluginResult(pluginResult);
        return true;
    } else if (ACTION_WRITE.equals(action)) {
        final int socketId = args.getInt(0);
        final JSONArray jsonArray = args.getJSONArray(1);
        try {
            OutputStream outputStream = m_sockets.get(socketId).getOutputStream();
            byte[] buffer = new byte[jsonArray.length()];
            for (int i = 0; i < jsonArray.length(); i++) {
                buffer[i] = (byte) jsonArray.getInt(i);
            }
            outputStream.write(buffer);
            callbackContext.success();
        } catch (Exception e) {
            logErr(e.toString() + " / " + e.getMessage());
            callbackContext.error(e.getMessage());
        }
        return true;
    }

    return false;
}

From source file:org.apache.cordova.plugin.BluetoothPlugin2.java

@Override
public boolean execute(String action, JSONArray args, final CallbackContext callbackContext)
        throws JSONException {

    logDbg("Action: " + action);

    if (ACTION_IS_SUPPORTED.equals(action)) {
        callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, m_bluetoothAdapter != null));
        return true;
    } else if (m_bluetoothAdapter == null) {
        String msg = "Bluetooth is not supported !";
        callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.ERROR, msg));
        logErr(msg);/* w  ww.  j  a  v  a2s.  c o m*/
        return true;
    } else if (ACTION_ENABLE.equals(action)) {
        this.callback_enable = callbackContext;
        PluginResult pluginResult = new PluginResult(PluginResult.Status.NO_RESULT);
        pluginResult.setKeepCallback(true);
        if (!m_bluetoothAdapter.isEnabled()) {
            this.cordova.startActivityForResult(this, new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE),
                    this.REQUEST_CODE_ENABLE);
        }
        callbackContext.sendPluginResult(pluginResult);
        return true;
    } else if (ACTION_DISABLE.equals(action)) {
        PluginResult pluginResult;
        if (!m_bluetoothAdapter.disable()
                && !(m_bluetoothAdapter.getState() == BluetoothAdapter.STATE_TURNING_OFF
                        || m_bluetoothAdapter.getState() == BluetoothAdapter.STATE_OFF)) {
            pluginResult = new PluginResult(PluginResult.Status.ERROR);
        } else {
            pluginResult = new PluginResult(PluginResult.Status.OK);
        }
        callbackContext.sendPluginResult(pluginResult);
        return true;
    } else if (ACTION_IS_ENABLED.equals(action)) {
        boolean b = m_bluetoothAdapter.isEnabled();
        callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, b));
        return true;
    } else if (ACTION_GETADDRESS.equals(action)) {
        String address = m_bluetoothAdapter.getAddress();
        callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, address));
        return true;
    } else if (ACTION_GETNAME.equals(action)) {
        String name = m_bluetoothAdapter.getName();
        callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, name));
        return true;
    } else if (ACTION_REQUEST_DISCOVERABLE.equals(action)) {
        final int duration = args.getInt(0);
        this.callback_discoverable = callbackContext;
        Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
        intent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, duration);
        this.cordova.startActivityForResult(this, intent, this.REQUEST_CODE_DISCOVERABLE);
        PluginResult pluginResult = new PluginResult(PluginResult.Status.NO_RESULT);
        pluginResult.setKeepCallback(true);
        callbackContext.sendPluginResult(pluginResult);
        return true;
    } else if (ACTION_STARTDISCOVERY.equals(action)) {
        this.callback_discovery = callbackContext;
        m_discoveredDevices = new JSONArray();
        // be sure there are no ongoing discovery
        m_bluetoothAdapter.cancelDiscovery();
        if (!m_bluetoothAdapter.startDiscovery()) {
            String msg = "Unable to start discovery";
            logErr(msg);
            callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.ERROR, msg));
        } else {
            PluginResult pluginResult = new PluginResult(PluginResult.Status.NO_RESULT);
            pluginResult.setKeepCallback(true);
            callbackContext.sendPluginResult(pluginResult);
        }
        return true;
    } else if (ACTION_CANCELDISCOVERY.equals(action)) {
        if (m_bluetoothAdapter.cancelDiscovery())
            callbackContext.success();
        else
            callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.ERROR));
        return true;
    } else if (ACTION_GETBONDEDDEVICES.equals(action)) {
        JSONArray bondedDevices = new JSONArray();
        Set<BluetoothDevice> bondSet = m_bluetoothAdapter.getBondedDevices();
        for (Iterator<BluetoothDevice> it = bondSet.iterator(); it.hasNext();) {
            BluetoothDevice bluetoothDevice = (BluetoothDevice) it.next();
            JSONObject deviceInfo = new JSONObject();
            deviceInfo.put("name", bluetoothDevice.getName());
            deviceInfo.put("address", bluetoothDevice.getAddress());
            deviceInfo.put("isBonded", true);
            bondedDevices.put(deviceInfo);
        }
        callbackContext.success(bondedDevices);
        return true;
    } else if (ACTION_FETCHUUIDS.equals(action)) {
        final String address = args.getString(0);
        this.callback_uuids = callbackContext;

        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1) {
            String msg = "Not supported, minimum SDK version is :" + Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1;
            logErr(msg);
            callbackContext.error(msg);
            return true;
        }
        try {
            logDbg("Listing UUIDs for : " + address);
            // Fetch UUIDs from bluetooth device
            BluetoothDevice bluetoothDevice = m_bluetoothAdapter.getRemoteDevice(address);
            // min api 15 !!!
            Method m = bluetoothDevice.getClass().getMethod("fetchUuidsWithSdp", (Class[]) null);
            m.invoke(bluetoothDevice, (Object[]) null);
            PluginResult pluginResult = new PluginResult(PluginResult.Status.NO_RESULT);
            pluginResult.setKeepCallback(true);
            callbackContext.sendPluginResult(pluginResult);
        } catch (Exception e) {
            logErr(e.toString() + " / " + e.getMessage());
            callbackContext.error(e.getMessage());
        }
        return true;
    } else if (ACTION_CONNECT.equals(action)) {
        final String address = args.getString(0);
        final String uuid = args.getString(1);
        final boolean secure = args.getBoolean(2);
        this.callback_connect = callbackContext;
        cordova.getThreadPool().execute(new Runnable() {
            public void run() {
                BluetoothSocket socket = null;
                try {
                    logDbg("Connecting...");
                    // Cancel discovery because it will slow down the connection
                    if (m_bluetoothAdapter.isDiscovering())
                        m_bluetoothAdapter.cancelDiscovery();

                    //JWC adding
                    /*
                            
                    BluetoothDevice device = BluetoothAdapter.getDefaultAdapter().getRemoteDevice(address); //"74:45:8A:B2:4E:9A"); 
                    //Method m = device.getClass().getMethod("createInsecureRfcommSocket", 
                    //      new Class[] { int.class }); 
                    //socket = (BluetoothSocket)m.invoke(device, Integer.valueOf(1)); 
                    socket = device.createRfcommSocketToServiceRecord(java.util.UUID.fromString(uuid));
                    */
                    //////

                    System.out.println("BluetoothPlugin2.ACTION_CONNECT  address=" + address + ", uuid=" + uuid
                            + ", secure=" + secure);
                    BluetoothDevice device = BluetoothAdapter.getDefaultAdapter().getRemoteDevice(address); //"74:45:8A:B2:4E:9A"); 
                    socket = device.createInsecureRfcommSocketToServiceRecord(java.util.UUID.fromString(uuid));

                    // for others devices its works with:
                    // Method m = device.getClass().getMethod("createRfcommSocket", new Class[] {int.class});

                    // for galaxy tab 2 with:
                    //Method m = device.getClass().getMethod("createInsecureRfcommSocket", new Class[] {int.class});

                    //socket = (BluetoothSocket) m.invoke(device, 1);

                    socket.connect();

                    /////JWC  READ

                    System.out.println("BluetoothPlugin2 trying to read right away...");
                    final int socketId = 0; //args.getInt(0);
                    final int bufferSize = 512; //args.getInt(1);
                    //this.callback_read = callbackContext;
                    ReadThread readThread = new ReadThread(m_sockets.get(socketId), socketId, bufferSize);
                    readThread.start();
                    m_readThreads.add(readThread);
                    PluginResult pluginResult = new PluginResult(PluginResult.Status.NO_RESULT);
                    pluginResult.setKeepCallback(true);
                    callbackContext.sendPluginResult(pluginResult);

                    ///////////////

                    /* JWC removing
                    BluetoothDevice bluetoothDevice = 
                          m_bluetoothAdapter.getRemoteDevice(
                      address);
                    if (secure) {
                       socket = connectSecureHelper(
                             bluetoothDevice, 
                             UUID.fromString(uuid));
                    }
                    else {
                       socket = connectInsecureHelper(
                             bluetoothDevice, 
                             UUID.fromString(uuid));
                    }
                    */
                } catch (Exception e) {
                    logErr(e.toString() + " / " + e.getMessage());
                    callback_connect.error(e.getMessage());
                }
                if (socket != null) {
                    logDbg("Connected");
                    m_sockets.add(socket);
                    int socketId = m_sockets.indexOf(socket);
                    callback_connect.sendPluginResult(new PluginResult(PluginResult.Status.OK, socketId));
                } else {
                    callback_connect.error(0);
                }
            }
        });
        PluginResult pluginResult = new PluginResult(PluginResult.Status.NO_RESULT);
        pluginResult.setKeepCallback(true);
        callbackContext.sendPluginResult(pluginResult);
        return true;
    } else if (ACTION_DISCONNECT.equals(action)) {
        final int socketId = args.getInt(0);
        try {
            BluetoothSocket socket = m_sockets.get(socketId);
            logDbg("Close socket");
            socket.close();
            logDbg("Delete socket from list");
            m_sockets.remove(socketId);
            for (int i = 0; i < m_readThreads.size(); i++) {
                if (m_readThreads.get(i).socketId == socketId) {
                    m_readThreads.remove(i);
                    break;
                }
            }
            callbackContext.success();
        } catch (Exception e) {
            logErr(e.toString() + " / " + e.getMessage());
            callbackContext.error(e.getMessage());
        }
        return true;
    } else if (ACTION_LISTEN.equals(action)) {
        final String name = args.getString(0);
        final String uuid = args.getString(1);
        final boolean secure = args.getBoolean(2);
        System.out.println(
                "BluetoothPlugin2.ACTION_LISTEN  name=" + name + ", uuid=" + uuid + ", secure=" + secure);
        this.callback_listen = callbackContext;
        if (m_listenThread != null) {
            m_listenThread.cancel();
            m_listenThread = null;
        }
        m_listenThread = new ListenThread(this.cordova, name, UUID.fromString(uuid), secure);
        m_listenThread.start();
        PluginResult pluginResult = new PluginResult(PluginResult.Status.NO_RESULT);
        pluginResult.setKeepCallback(true);
        callbackContext.sendPluginResult(pluginResult);
        return true;
    } else if (ACTION_CANCEL_LISTENING.equals(action)) {
        if (m_listenThread != null) {
            m_listenThread.cancel();
        }
        m_listenThread = null;
        callbackContext.success();
        return true;
    } else if (ACTION_READ.equals(action)) {
        final int socketId = args.getInt(0);
        final int bufferSize = args.getInt(1);
        System.out.println("BluetoothPlugin2.ACTION_READ  socketId=" + socketId + ", bufferSize=" + bufferSize);
        this.callback_read = callbackContext;
        ReadThread readThread = new ReadThread(m_sockets.get(socketId), socketId, bufferSize);
        readThread.start();
        m_readThreads.add(readThread);
        PluginResult pluginResult = new PluginResult(PluginResult.Status.NO_RESULT);
        pluginResult.setKeepCallback(true);
        callbackContext.sendPluginResult(pluginResult);
        return true;
    } else if (ACTION_WRITE.equals(action)) {
        final int socketId = args.getInt(0);
        final JSONArray jsonArray = args.getJSONArray(1);
        try {
            OutputStream outputStream = m_sockets.get(socketId).getOutputStream();
            byte[] buffer = new byte[jsonArray.length()];
            for (int i = 0; i < jsonArray.length(); i++) {
                buffer[i] = (byte) jsonArray.getInt(i);
            }
            outputStream.write(buffer);
            callbackContext.success();
        } catch (Exception e) {
            logErr(e.toString() + " / " + e.getMessage());
            callbackContext.error(e.getMessage());
        }
        return true;
    }

    return false;
}

From source file:edu.stanford.mobisocial.dungbeetle.ui.fragments.FeedActionsFragment.java

public void requestBluetooth() {
    if (!BluetoothAdapter.getDefaultAdapter().isEnabled()) {
        Intent bt = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
        startActivityForResult(bt, REQUEST_BT_ENABLE);
        return;/* w  ww.  j av  a  2 s .  com*/
    }

    final int DISCO_LENGTH = 300;
    Intent discoverableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
    discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, DISCO_LENGTH);
    startActivityForResult(discoverableIntent, REQUEST_BT_BROADCAST);
}

From source file:com.example.hudpassthrough.BluetoothChat.java

private void ensureDiscoverable() {
    if (D)/*from  w  w w.  j  ava  2s.  c o  m*/
        Log.d(TAG, "ensure discoverable");
    if (mBluetoothAdapter.getScanMode() != BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE) {
        Intent discoverableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
        discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300);
        startActivity(discoverableIntent);
    }
}