[UNMAINTAINED][Android] Bluetooth Serial Port Profile which comfortable to developer application to communication with microcontroller via bluetooth

Overview

WARNING: This project is no longer being maintained

Build Status Android-BluetoothSPPLibrary

BluetoothSPP Library

Bluetooth Serial Port Profile which comfortable to developer application to communication with microcontroller or android device via bluetooth.

This libraly include all important methods for serial port profile on bluetooth communication. It has built-in bluetooth device list.

Feature

• It's very easy to use

• Solve the lack of data like as "abcdefg" which divided to "abc" and "defg" when receive these data

• Auto add LF (0x0A) and CR (0x0D) when send data to connection device

• No need to create layout for bluetooth device list to select device for connection. You can use built-in layout in this library and you can customize layout if you want

• Auto connection supported

• Listener for receive data from connection device

Download

Maven

<dependency>
  <groupId>com.akexorcist</groupId>
  <artifactId>bluetoothspp</artifactId>
  <version>1.0.0</version>
</dependency>

Gradle

compile 'com.akexorcist:bluetoothspp:1.0.0'

Simple Usage

• Import this library to your workspace and include in to your android project For Eclipse ADT : Download this library and import into your workspace and include this library to your project For Android Studio : Use Gradle to download this library from Maven

• Declare permission for library

<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />

• Declare BluetoothSPP like this

BluetoothSPP bt = new BluetoothSPP(Context);

• Check if bluetooth is now available

if(!bt.isBluetoothAvailable()) {
    // any command for bluetooth is not available
}

• Check if bluetooth is not enable when activity is onStart

public void onStart() {
    super.onStart();
    if(!bt.isBluetoothEnable()) {
        // Do somthing if bluetooth is disable
    } else {
        // Do something if bluetooth is already enable
    }
}

• if bluetooth is ready call this method to start service

For connection with android device

bt.startService(BluetoothState.DEVICE_ANDROID);

Communicate with android

For connection with any microcontroller which communication with bluetooth serial port profile module

bt.startService(BluetoothState.DEVICE_OTHER);

Communicate with microcontroller

Bluetooth module with SPP

• Stop service with

bt.stopService();

• Intent to choose device activity

Intent intent = new Intent(getApplicationContext(), DeviceList.class);
startActivityForResult(intent, BluetoothState.REQUEST_CONNECT_DEVICE);

don't forget declare library activty like this

<activity android:name="app.akexorcist.bluetoothspp.DeviceList" />

• After intent to choose device activity and finish that activity. You need to check result data on onActivityResult

public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if(requestCode == BluetoothState.REQUEST_CONNECT_DEVICE) {
        if(resultCode == Activity.RESULT_OK)
            bt.connect(data);
    } else if(requestCode == BluetoothState.REQUEST_ENABLE_BT) {
        if(resultCode == Activity.RESULT_OK) {
            bt.setupService();
            bt.startService(BluetoothState.DEVICE_ANDROID);
            setup();
        } else {
            // Do something if user doesn't choose any device (Pressed back)
        }
    }
}

• If you want to send any data. boolean parameter is mean that data will send with ending by LF and CR or not. If yes your data will added by LF & CR

bt.send("Message", true);

or

bt.send(new byte[] { 0x30, 0x38, ....}, false);

• Listener for data receiving

bt.setOnDataReceivedListener(new OnDataReceivedListener() {
    public void onDataReceived(byte[] data, String message) {
        // Do something when data incoming
    }
});

• Listener for bluetooth connection atatus

bt.setBluetoothConnectionListener(new BluetoothConnectionListener() {
    public void onDeviceConnected(String name, String address) {
        // Do something when successfully connected
    }

    public void onDeviceDisconnected() {
        // Do something when connection was disconnected
    }

    public void onDeviceConnectionFailed() {
        // Do something when connection failed
    }
});

• Listener when bluetooth connection has changed

bt.setBluetoothStateListener(new BluetoothStateListener() {                
    public void onServiceStateChanged(int state) {
        if(state == BluetoothState.STATE_CONNECTED)
            // Do something when successfully connected
        else if(state == BluetoothState.STATE_CONNECTING)
            // Do something while connecting
        else if(state == BluetoothState.STATE_LISTEN)
            // Do something when device is waiting for connection
        else if(state == BluetoothState.STATE_NONE)
            // Do something when device don't have any connection
    }
});

• Using auto connection

bt.autoConnect("Keyword for filter paired device");

• Listener for auto connection

bt.setAutoConnectionListener(new AutoConnectionListener() {
    public void onNewConnection(String name, String address) {
        // Do something when earching for new connection device
    }
            
    public void onAutoConnectionStarted() {
        // Do something when auto connection has started
    }
});

• Customize device list's layout by create layout which include

list view with id name = "list_devices"

button with id name = "button_scan"

Example

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#FDE182" >

    <ListView
        android:id="@+id/list_devices"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:layout_marginTop="20dp"
        android:smoothScrollbar="true" />
        
    <Button
        android:id="@+id/button_scan"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:padding="20dp"
        android:background="#FFC600"
        android:text="SCAN"
        android:textSize="25sp"
        android:textColor="#7A481B"
        android:textStyle="bold" />
        
</RelativeLayout>

Custom Device List Layout

But if you don't need to create layout file. You just want to change only text on device list layout. You can use bundle to change text on device list

Custom Device List Text

Custom Device List Text

Custom Device List Text

Custom Device List Text

Intent intent = new Intent(getApplicationContext(), DeviceList.class);
intent.putExtra("bluetooth_devices", "Bluetooth devices");
intent.putExtra("no_devices_found", "No device");
intent.putExtra("scanning", "กำลังทำการค้นหา");
intent.putExtra("scan_for_devices", "Search");
intent.putExtra("select_device", "Select");
startActivityForResult(intent, BluetoothState.REQUEST_CONNECT_DEVICE);

Custom Device List Text

What's next?

License

Copyright (c) 2014 Akexorcist

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Comments
  • nullpointer exception

    nullpointer exception

    Hello, Is there a working example anywhere except for the few lines in the readme file? Where does this line come from? setup(); when following the github instructions i get a nullpointer exception when trying to connect to a device. I would appreciate any help :) Regards, Lukas

    java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=384, result=-1, data=Intent { (has extras) }} to activity {com.example.lukas.bluetoothgraph/com.example.lukas.bluetoothgraph.MainInterface}: java.lang.NullPointerException
                at android.app.ActivityThread.deliverResults(ActivityThread.java:3592)
                at android.app.ActivityThread.handleSendResult(ActivityThread.java:3635)
                at android.app.ActivityThread.access$1300(ActivityThread.java:155)
                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1379)
                at android.os.Handler.dispatchMessage(Handler.java:110)
                at android.os.Looper.loop(Looper.java:193)
                at android.app.ActivityThread.main(ActivityThread.java:5407)
                at java.lang.reflect.Method.invokeNative(Native Method)
                at java.lang.reflect.Method.invoke(Method.java:515)
                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:855)
                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:671)
                at dalvik.system.NativeStart.main(Native Method)
         Caused by: java.lang.NullPointerException
                at app.akexorcist.bluetotohspp.library.BluetoothSPP.connect(BluetoothSPP.java:230)
                at com.example.lukas.bluetoothgraph.MainInterface.onActivityResult(MainInterface.java:38)
                at android.app.Activity.dispatchActivityResult(Activity.java:5469)
                at android.app.ActivityThread.deliverResults(ActivityThread.java:3588)
                at android.app.ActivityThread.handleSendResult(ActivityThread.java:3635)
                at android.app.ActivityThread.access$1300(ActivityThread.java:155)
                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1379)
                at android.os.Handler.dispatchMessage(Handler.java:110)
                at android.os.Looper.loop(Looper.java:193)
                at android.app.ActivityThread.main(ActivityThread.java:5407)
                at java.lang.reflect.Method.invokeNative(Native Method)
                at java.lang.reflect.Method.invoke(Method.java:515)
                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:855)
                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:671)
                at dalvik.system.NativeStart.main(Native Method)
    
    
    opened by sakulstra 10
  • Device List Activity

    Device List Activity

    Hey, i am new to Android Programming. I am encountering a problem. After I use the Intent to choose device activity and when I check result data on onActivityResult, i get an error at bt.connect(data), can you pls explain what does bt.connect does? Is it used to to connect to the device? Does the variable ' data' contain the Mac address? I've declared the library and activity and every other feature works fine. Can u help me? A Sample program using the commands will help me immensely, if u have it. Thanks for this Library.

    opened by anuchin 4
  • Getting Build Error with ver 1.0.1 of Android Studio,

    Getting Build Error with ver 1.0.1 of Android Studio,

    I am getting the following error when I try to build the library with Android Studio 1.0.1:

    Executing tasks: [:app:compileDebugSources, :library:compileDebugSources]

    Configuration on demand is an incubating feature.

    FAILURE: Build failed with an exception.

    • What went wrong: A problem occurred configuring root project 'Android-BluetoothSPPLibrary-master'.

      java.lang.NullPointerException (no error message)

    • Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

    BUILD FAILED

    Total time: 0.685 secs

    I have tried many things to try and get rid of this error, but have had no luck in doing so. Any help would be greatly appreciated.

    Thanks in advance,

    Dave Walters

    opened by dzgjwb01 3
  • Prematurely terminating data packets with byte values of 10 (LF) and 13 (CR)

    Prematurely terminating data packets with byte values of 10 (LF) and 13 (CR)

    I've come across a possible limitation with this library and I look forward to hearing what input others may have regarding it. I would like to communicate 4 byte integers from an arduino to an Android device as fast as possible. In order to do this I send the integer through the bluetooth device one byte at a time like this:

    long x = 266;
    Serial.write(x & 0xFF);
    Serial.write((x >> 8) & 0xFF);
    Serial.write((x >> 16) & 0xFF);
    Serial.write((x >> 24) & 0xFF);
    Serial.println();
    

    I receive these four bytes and combine them as follows:

    bt.setOnDataReceivedListener(new BluetoothSPP.OnDataReceivedListener() {
        public void onDataReceived(byte[] data, String message) {
            int value;
            value = ((data[0] << 0) & 0xFF) + ((data[1] << 8) & 0xFFFF) + ((data[2] << 16) & 0xFFFFFF) + ((data[3] << 24) & 0xFFFFFF);
        }
    });
    

    This works great until one of the four bytes happen to be a 10 (LF) or a 13 (CR). This prematurely terminates the data packet and crashes the android application since the remaining bytes are out of range. I could simply check the length of the array to avoid crashing the application but I don't want to have to disregard every value containing one of these two characters because that data may be critical to operation. I'm looking forward to hearing any thoughts, suggestions or recommendation that any of you may have. Thanks in advance. :)

    opened by phillip-toone 2
  • Multiple other device(none android) connection

    Multiple other device(none android) connection

    hi, i have used your library for my Bluetooth connection between my android phone and one other device,but my project would be complete if i can connect to multiple other device.i try to connect to multiple device with multiple object created from BluetoothSPP class , but when i connect another device my last connection broke and new connection with new device replaced....how can i hold both connection ?

    opened by sinadarvi 2
  • Fixing send function

    Fixing send function

    Hello, so I wanted to send some commands to a bluetooth scale, and this library was doing everything but that. After a couple of days (more like weeks actually), I came up with a solution. Basically extend BluetoothSPP class. So for all of us having issues (#80 and #56 ) with send function, here's my solution.

    public class BluetoothSPP extends app.akexorcist.bluetotohspp.library.BluetoothSPP {
        private static final String TAG = BluetoothSPP.class.getSimpleName();
    
        public BluetoothSPP(Context context) {
            super(context);
        }
    
        @Override
        public void send(byte[] data, boolean CRLF) {
            Set<BluetoothDevice> bonded = this.getBluetoothAdapter().getBondedDevices();
            if (bonded.size() > 0) {
                BluetoothDevice device = (BluetoothDevice) bonded.toArray()[0];
                ParcelUuid[] uuids = device.getUuids();
                BluetoothSocket socket = null;
                try {
                    socket = device.createRfcommSocketToServiceRecord(uuids[0].getUuid());
                    socket.connect();
                    OutputStream out = socket.getOutputStream();
                    Log.d(TAG, "Sending byte data to bluetooth...");
                    out.write(data);
                } catch (IOException e) {
                    Log.e(TAG, e.getMessage());
                } finally {
                    if (socket != null) {
                        try {
                            socket.close();
                        } catch (IOException e) {
                            Log.e(TAG, e.getMessage());
                        }
                    }
                }
            }
        }
    
        @Override
        public void send(String data, boolean CRLF) {
            this.send(data.getBytes(), CRLF);
        }
    
        public void send(String data) {
            this.send(data.getBytes(), true);
        }
    
        public void send(byte[] data) {
            this.send(data, true);
        }
    }
    
    opened by murwa 1
  • Activity crashed  A/libc: Fatal signal 11 (SIGSEGV), code 1

    Activity crashed A/libc: Fatal signal 11 (SIGSEGV), code 1

    A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x54 in tid 1628 (shiweizhi.rccar)

                                                                 [ 11-22 13:00:10.083   367:  367 W/         ]
                                                                 debuggerd: handling request: pid=1628 uid=10194 gid=10194 tid=1628
    

    after execute this Intent intent = new Intent(ac.getApplicationContext(), DeviceList.class); ac.startActivityForResult(intent, BluetoothState.REQUEST_CONNECT_DEVICE);

    It works before, now it's not working I don't know what's going on

    opened by shiwzhi 1
  • Does this SPP library support BLE?

    Does this SPP library support BLE?

    A BLE device do not need to pair. However, I found that this library only can connect to device which is paired. So I want to ask whether this library can support BLE devices and how to connect to BLE devices using this SPP library. Thanks for any reply for you all.

    opened by Triple-Z 1
  • Create a Bitmap from byte[]. Received Data.

    Create a Bitmap from byte[]. Received Data.

    User 1 takes a photo from camera, get it and send to other user.

    @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            if (requestCode == 0) {
                if (resultCode == RESULT_OK) {
                    Bundle bundle = data.getExtras();
                    Bitmap bitmap = (Bitmap) bundle.get("data");
    
                    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
                    bitmap.compress(Bitmap.CompressFormat.PNG, 100, outputStream);
                    byte[] bitmapByte = outputStream.toByteArray();
    
                    bluetoothSPP.send(bitmapByte, true); **//Send the Bitmap array**
                }
            }
    

    User 2 receive the Bitmap byte[].

     bluetoothspp.setOnDataReceivedListener(new BluetoothSPP.OnDataReceivedListener() {
                public void onDataReceived(byte[] data, String message) {
    
                    Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
                    Glide.with(ChatActivity.this).load(bitmap ).asBitmap().into(imgFundo); //Use Glide for show Bitmap
                }
        });
    

    But I always get an error and Glide can not display the image. I did a debug and the data comes in several parts, like an array of bytes.

    • How can I build a Bitmap from data received?

    Thanks

    opened by rafaelcrz 1
  • Android bluetooth device not working

    Android bluetooth device not working

    I cant connect to bluetooth device like my Nokia cell phone and like a Android Bluetooth phone. Theres anything that I doing wrong? What are bluetooth serial port profile devices supported?

    opened by thalespf 1
  •  Listener for bluetooth connection status

    Listener for bluetooth connection status

    when i use bt.setBluetoothConnectionListener(new BluetoothConnectionListener() { it says cannot resolve symbol setBluetoothConnectionListener and invalid method declaration for BluetoothConnectionListener()

    What am I doing wrong? Can anyone help me?

    opened by anuchin 0
  • Not scanning or discoverying nearby bluetooth devices. (startActivityForResult)

    Not scanning or discoverying nearby bluetooth devices. (startActivityForResult)

    Greetings, Firstly, thanks for this awesome library. I used it about a year ago for an ESP32 project I was doing. Everything was working great. I revisited that same - once working - project to find issues. A problem I've been having is the only devices detected on the activity (BluetoothState.REQUEST_CONNECT_DEVICE) are devices I have paired through Android's settings. When I press scan for devices, it doesn't scan. The client device is available and detected when using Android setting for Bluetooth > pair a new device. But not in the app, using this library. This happens on three Android devices I own from a Google Nexus 5, Moto x4, and Moto G7 Power.

    I'm not sure what is the difference between then and now?

    I/OpenGLRenderer: Initialized EGL, version 1.4
    D/OpenGLRenderer: Swap behavior 2
    I/Choreographer: Skipped 62 frames!  The application may be doing too much work on its main thread.
    W/ActivityThread: handleWindowVisibility: no activity for token android.os.BinderProxy@6dda9fa
    D/BluetoothSPP: doDiscovery()
    

    And nothing further.

    bt.startService(BluetoothState.DEVICE_OTHER); // start bluetooth service
    bt.setupService(); // setup bluetooth service
    Intent intent = new Intent(getApplicationContext(), DeviceList.class);
    startActivityForResult(intent, BluetoothState.REQUEST_CONNECT_DEVICE);
    
        <uses-permission android:name="android.permission.BLUETOOTH" />
        <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
        <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
        <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    

    I manually request permission for each permission. Only write access is promoted and requested because Bluetooth isn't considered "dangerous." Yet, when pressing the connect button, I am not asked for bluetooth permissions at all.

    The readme state to declare <activity android:name="app.akexorcist.bluetoothspp.DeviceList" /> which I'm guessing you meant in the AndroidManifest.xml? The name is red and flagged in Android studio. No idea. I can't seem to find an answer on that.

    opened by ritchie-tg 2
  • NullPointerException  at app.akexorcist.bluetotohspp.library.BluetoothService$AcceptThread.run (BluetoothService.java:2)

    NullPointerException at app.akexorcist.bluetotohspp.library.BluetoothService$AcceptThread.run (BluetoothService.java:2)

    java.lang.NullPointerException: at app.akexorcist.bluetotohspp.library.BluetoothService$AcceptThread.run (BluetoothService.java:2)

    I don't know whether this is a issue or not. But this happens in some devises. I cant solve this by error handling.

    opened by CSAapps 0
  • Context

    Context

    Hey there,

    Firstly, thank you for your plugin.

    I have managed to download and incorporate your library into Android Studio.

    Please can you tell me when I enter this line into MainActivity.java, the Context complains error: class, interface, or enum expected: BluetoothSPP bt = new BluetoothSPP(Context);

    I'm new to this, however, muddling through.

    Any help would be greatly appreciated.

    Kind regards,

    Dominic

    opened by smudgy67 1
  • transfer intent

    transfer intent

    Hello, I am use BluetoothSPP lib and i have 2 Activity one for receive, one for send but when i startActivity(intent) the bluetooth can't send any message to arduino, how can i fix it thk for all

    opened by soulmaster179 0
Releases(1.0)
Owner
Akexorcist
Lovely android developer who enjoys learning in android technology, habitual article writer about Android development for Android developers in Thailand
Akexorcist
Android Bluetooth Helper Library, Bluetooth Device Finder

Bluetooth Helper Allows you to access the Bluetooth of your mobile device, manage turn-on - turn off, and discover bluetooth devices around you. Getti

Tolga Bolatcan 44 Jul 15, 2022
Kotlin Asynchronous Bluetooth Low Energy provides a simple Coroutines-powered API for interacting with Bluetooth Low Energy devices.

Kotlin Asynchronous Bluetooth Low Energy provides a simple Coroutines-powered API for interacting with Bluetooth Low Energy devices.

JUUL Labs 275 Sep 14, 2021
BluePass extracts two factor authentication codes (2FA) from SMS and sends them to a paired device via Bluetooth RFCOMM.

BluePass extracts two factor authentication codes (2FA) from SMS and sends them to a paired device via Bluetooth RFCOMM.

Manuel Huber 15 Dec 4, 2022
An Android Library for handling Bluetooth Low Energy on Android Easy

An Android Library for handling Bluetooth Low Energy on Android Easy

Leandro SQ 42 Jan 3, 2023
An Android library that solves a lot of Android's Bluetooth Low Energy problems

A library that makes working with Bluetooth LE on Android a pleasure. Seriously.

Nordic Semiconductor 1.4k Jan 7, 2023
A reactive, interface-driven central role Bluetooth LE library for Android

RxCentralBle RxCentralBle provides a simple reactive paradigm for connecting to and communicating with Bluetooth LE peripherals from the central role.

Uber Open Source 198 Nov 29, 2022
A Bluetooth kotlin multiplatform "Cross-Platform" library for iOS and Android

Blue-Falcon A Bluetooth "Cross Platform" Kotlin Multiplatform library for iOS, Android, MacOS, Raspberry Pi and Javascript. Bluetooth in general has t

Andrew Reed 220 Dec 28, 2022
BLESSED Coroutines, a Bluetooth Low Energy (BLE) library for Android using Kotlin Coroutines

BLESSED for Android with Coroutines - BLE made easy BLESSED is a very compact Bluetooth Low Energy (BLE) library for Android 8 and higher, that makes

Martijn van Welie 82 Jan 1, 2023
RxBle: Use Android Bluetooth API in Rx way

RxBle: Use Android Bluetooth API in Rx way A lightweight encapsulation of Android Bluetooth API. Use Android Bluetooth API in Rx way. Support multiple

null 3 Dec 2, 2022
This library allows for easy access to a Bluetooth LE device's AdRecord and RSSI value. It offers additional functionality for iBeacons.

Bluetooth LE Library for Android This library allows for easy access to a Bluetooth LE device's Advertisement Records. It also offers: A simple runnin

Alexandros Schillings 843 Dec 13, 2022
Kotlin Asynchronous Bluetooth Low-Energy

Kable Kotlin Asynchronous Bluetooth Low Energy provides a simple Coroutines-powered API for interacting with Bluetooth Low Energy devices. Usage is de

JUUL Labs 493 Dec 25, 2022
A non-trivial Bluetooth LE app using Kable and app architecture best practices

kable_mvvm_demo The intention of this project is to demonstrate a non-trivial Bluetooth LE app using Kable and app architecture best practices. ⚠️ The

Chris Laplante 14 Aug 18, 2022
Open-source weight and body metrics tracker, with support for Bluetooth scales

Open-source weight and body metrics tracker, with support for Bluetooth scales

OliE 1.3k Jan 4, 2023
Simple bluetooth flutter project

bluetooth_simple Simple bluetooth implementation. Getting Started This project is a starting point for a Flutter application. A few resources to get y

Aleksey Vasiliev 0 Nov 25, 2021
The purpose is to share the Internet capability of one device to the entire Bluetooth LAN.

bluenet The purpose is to share the Internet capability of one device to the entire Bluetooth LAN. To make a prototype of a soft bus, or actually, I w

yunlong.wen 1 Jun 28, 2022
User-friendly Lightweight TPM Remote Attestation over Bluetooth

Ultrablue Ultrablue (User-friendly Lightweight TPM Remote Attestation over Bluetooth) is a solution to allow individual users to perform boot state at

ANSSI 32 Jan 2, 2023
implementation ClickListener via HOF

ClickListenerExample implementation ClickListener via HOF Simple project to represent how to change regular listeners callback to higher order functio

null 0 Nov 28, 2021
Allows Android apps to interact with BLE beacons

Android Beacon Library An Android library providing APIs to interact with beacons. Please visit the project website for how to use this library. IMPOR

AltBeacon 2.7k Dec 28, 2022
A simple, lightweight library intended to take away some of the cruft and tediousness of using the Android BLE.

Blueteeth What Is Blueteeth? Blueteeth is a simple, lightweight library intended to take away some of the cruft and tediousness of using the Android B

Robot Pajamas 103 Nov 26, 2022