Giter Site home page Giter Site logo

ble-java's Introduction

ble-java logo

ble-java is a java library for building BLE GATT peripherals role application in JAVA.

ble-java is based on BlueZ, the linux Bluetooth stack.

Features

  • Create GATT Services
  • Create GATT Characteristic
  • Customize the Peripheral name
  • Pure JAVA library

Dependencies

  1. Java 8 or better
  2. BlueZ 5.43 or better
  3. d-bus Java library libdbus-java Raspbian example:
sudo apt-get install

you may also have to do run

sudo ldconfig

Install

Clone the repository and build with Gradle (4.5 or higher):

gradle build

Example

You could see the main MainExample.java in src/test/java/example. It's a sample main that create a BLE Application with one Service and 2 Characteristic.

BlueZ compatibility

Until now is tested with BlueZ 5.46 on Raspbian distribution.

ble-java use the GattManager and LEAdvertising that was marked "Experimental" since 5.47, so you have to enable the Experimental features with the --experimental parameter in the BlueZ startup service.

Example for Raspbian /lib/systemd/system/bluetooth.service

...
bluetoohd --experimental
...

In the BlueZ 5.48 seem to be removed the experimental tag on the LEAdvertising features, but it was not yet tried.

For more info about BlueZ see http://www.bluez.org.

Help

If you need help you can write me an email or you can open a new issue.

ble-java's People

Contributors

sobakasu avatar tongo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ble-java's Issues

ManufacturerData set on Advertisement is not visible when scanning

Hello,
Thank you for this library, that has been single one that worked in my java code.

I found it today that putting anything into ManufacturerData isn't visible on discovery.

like this:

advertisement.setManufacturerData(mapOf(0xffa0 to 0x0001020304))

Do you have example where Manufacturer data works? Maybe I forgot about something - like advertisement type?

BleApplicationListener not called

Under iOS

In the MainExample, everything is working fine except the BleApplicationListener. deviceDisconnected and deviceConnected are never called even though I succesfully connect and disconnect with nRFconnect.

Rasbian-Lite Buster on RaspberryPi 4.

Working fine with an Android as a client...

java.lang.UnsatisfiedLinkError: no unix-java in java.library.path

As mentioned we installed libdbus-java on pi
command
sudo apt-get install libdbus-java

BLUEZ version 5.47 installed

Compiled the source but when we execute we get below error

java.lang.UnsatisfiedLinkError: no unix-java in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1864)
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
at java.lang.System.loadLibrary(System.java:1122)
at cx.ath.matthew.unix.UnixSocket.(UnixSocket.java:40)
at org.freedesktop.dbus.Transport.connect(Transport.java:772)
at org.freedesktop.dbus.Transport.(Transport.java:737)
at org.freedesktop.dbus.DBusConnection.(DBusConnection.java:299)
at org.freedesktop.dbus.DBusConnection.getConnection(DBusConnection.java:282)
at it.tangodev.ble.BleApplication.start(BleApplication.java:76)
at example.ExampleMain.(ExampleMain.java:69)
at example.ExampleMain.main(ExampleMain.java:86)

Are we missing something here?

Provide more details about DBus Path when recieve Objert already exported

To better handle DBus exportObject exception we should provide Path to the exported object on the error.

example stacktrace doesn't define what is already exported.

org.freedesktop.dbus.exceptions.DBusException: Object already exported
	at org.freedesktop.dbus.AbstractConnection.exportObject(AbstractConnection.java:402)
	at it.tangodev.ble.BleCharacteristic.export(BleCharacteristic.java:102)
	at it.tangodev.ble.BleService.export(BleService.java:58)
	at it.tangodev.ble.BleApplication.export(BleApplication.java:230)
	at it.tangodev.ble.BleApplication.start(BleApplication.java:94)

I will add PR for this, since I need this at my usage.

Customized characteristics and Services not exposed

We are configuring our services in the following way.
image

We are able to connect to the device through app but whatever services we are configuring is not being detected by the ble scanner app on my phone.
Ble scanner output is like

image

If you could share more information regarding how to configure Services and Characteristics, it would be a great help.

java.lang.UnsatisfiedLinkError: no unix-java in java.library.path

Hello,

I have the same problem #8. But nothing works for me. I tried, after successful build, just run the ExampleMain.java in test/java. I have all dependencies and also checked the java library path, unix-java is also here. I tried it on two different VMs with the same result. Am I supposed to run this ble-java differently?

obrazek

Thanks!

stop() doesn't stop

I create an application, call start() and then stop(), but the java runtime keeps running.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.