Skip to content

Instantly share code, notes, and snippets.

@mowsong
Forked from tito/bluetooth.py
Created September 21, 2018 05:24
Show Gist options
  • Select an option

  • Save mowsong/c51df5c13fbcf2c8c7a0354eb7230be0 to your computer and use it in GitHub Desktop.

Select an option

Save mowsong/c51df5c13fbcf2c8c7a0354eb7230be0 to your computer and use it in GitHub Desktop.

Revisions

  1. @tito tito created this gist Nov 12, 2013.
    37 changes: 37 additions & 0 deletions bluetooth.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,37 @@
    '''
    Bluetooth/Pyjnius example
    =========================
    This was used to send some bytes to an arduino via bluetooth.
    The app must have BLUETOOTH and BLUETOOTH_ADMIN permissions (well, i didn't
    tested without BLUETOOTH_ADMIN, maybe it works.)
    Connect your device to your phone, via the bluetooth menu. After the
    pairing is done, you'll be able to use it in the app.
    '''

    from jnius import autoclass

    BluetoothAdapter = autoclass('android.bluetooth.BluetoothAdapter')
    BluetoothDevice = autoclass('android.bluetooth.BluetoothDevice')
    BluetoothSocket = autoclass('android.bluetooth.BluetoothSocket')
    UUID = autoclass('java.util.UUID')

    def get_socket_stream(name):
    paired_devices = BluetoothAdapter.getDefaultAdapter().getBondedDevices().toArray()
    socket = None
    for device in paired_devices:
    if device.getName() == name:
    socket = device.createRfcommSocketToServiceRecord(
    UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"))
    recv_stream = socket.getInputStream()
    send_stream = socket.getOutputStream()
    break
    socket.connect()
    return recv_stream, send_stream

    if __name__ == '__main__':
    recv_stream, send_stream = get_socket_stream('linvor')
    send_stream.write('hello\n')
    send_stream.flush()

    84 changes: 84 additions & 0 deletions bluetooth_kivy.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,84 @@
    # Same as before, with a kivy-based UI

    '''
    Bluetooth/Pyjnius example
    =========================
    This was used to send some bytes to an arduino via bluetooth.
    The app must have BLUETOOTH and BLUETOOTH_ADMIN permissions (well, i didn't
    tested without BLUETOOTH_ADMIN, maybe it works.)
    Connect your device to your phone, via the bluetooth menu. After the
    pairing is done, you'll be able to use it in the app.
    '''

    from jnius import autoclass

    BluetoothAdapter = autoclass('android.bluetooth.BluetoothAdapter')
    BluetoothDevice = autoclass('android.bluetooth.BluetoothDevice')
    BluetoothSocket = autoclass('android.bluetooth.BluetoothSocket')
    UUID = autoclass('java.util.UUID')

    def get_socket_stream(name):
    paired_devices = BluetoothAdapter.getDefaultAdapter().getBondedDevices().toArray()
    socket = None
    for device in paired_devices:
    if device.getName() == name:
    socket = device.createRfcommSocketToServiceRecord(
    UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"))
    recv_stream = socket.getInputStream()
    send_stream = socket.getOutputStream()
    break
    socket.connect()
    return recv_stream, send_stream

    if __name__ == '__main__':
    kv = '''
    BoxLayout:
    Button:
    text: '0'
    on_release: app.reset([b1, b2, b3, b4, b5])
    ToggleButton:
    id: b1
    text: '1'
    on_release: app.send(self.text)
    ToggleButton:
    id: b2
    text: '2'
    on_release: app.send(self.text)
    ToggleButton:
    id: b3
    text: '3'
    on_release: app.send(self.text)
    ToggleButton:
    id: b4
    text: '4'
    on_release: app.send(self.text)
    ToggleButton:
    id: b5
    text: '5'
    on_release: app.send(self.text)
    '''
    from kivy.lang import Builder
    from kivy.app import App

    class Bluetooth(App):
    def build(self):
    self.recv_stream, self.send_stream = get_socket_stream('linvor')
    return Builder.load_string(kv)

    def send(self, cmd):
    self.send_stream.write('{}\n'.format(cmd))
    self.send_stream.flush()

    def reset(self, btns):
    for btn in btns:
    btn.state = 'normal'
    self.send('0\n')

    Bluetooth().run()