-
-
Save tito/7432757 to your computer and use it in GitHub Desktop.
''' | |
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() |
# 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() |
I have one .py file, I want to send one character as a parameter through that Python function from Android application. that Python function will send the signal through Bluetooth to arduino.
Please help me out how can i call the .py function in Android application.
Process p = Runtime.getRuntime().exec("python run.py " + "A");
its showing error :
ProcessManager: waitpid on failed exec failed: No child processes
W/System.err: Error running exec(). Command: Working Directory: null Environment: null
i compile bluetooth_kivy for android apk with buildozer. But my app can't run. how can fix it? My app folder includes two file: buildozer.spec and main.py(bluetooth_kivy is renamed). Do i need java file for bluetooth.
Sorry!
I have error..... , Can you help me... Thanks.
error message:
Traceback (most recent call last):
File "/home/frank/workspace/798/bluetooth.py", line 13, in
BluetoothAdapter = autoclass('android.bluetooth.BluetoothAdapter')
File "/home/frank/package/kivyPython2Venv/local/lib/python2.7/site-packages/jnius/reflect.py", line 106, in autoclass
c = find_javaclass(clsname)
File "jnius_export_func.pxi", line 23, in jnius.find_javaclass (jnius/jnius.c:7190)
jnius.JavaException: Class not found 'android/bluetooth/BluetoothAdapter'
This is still relevant so...
To run this use buildozer.
See also https://github.com/b3b/able
@andersonms1, for this kind of error message "jnius.JavaException: Class not found xxxxxxxxx", You have to run inside android phone instead of windows laptop.
How do I install the jnius module on Pydroid? Thank you.
The code above seems to not have code responsible for request permissions which is vital to correct functionality.
Eres increible me sirvio muchisimo!!!!
Caramba!
@frankchih Did you get a solution to the error?