Giter VIP home page Giter VIP logo

androidblekit's Introduction

Introduce

In order to make the Android Bluetooth interface easier to use, this project encapsulates these interfaces.

Quick start

settings.gradle.kts

dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        ...
        maven(url = "https://jitpack.io")
    }
}

build.gradle.kts

dependencies {
    implementation("com.github.TTTUUUIII:androidblekit:2.3.5-alpha")
    ...
}

Initialize library

class App: Application() {
    override fun onCreate() {
        super.onCreate()
        val options = BleKitOptions()
        options.uuidsForNotification = listOf(
            uuidForNotification1, 
            uuidForNotification2, 
            ...
        )
        options.uuidForWritable = uuidForWritable
        options.uuidForAdvertise = uuidForAdvertise
        BleEnvironment.initialize(this, options)
    }
}

As a bluetooth central

class BleCentralFragmentViewModel: BaseViewModel() {
    private val bleCentral = BleCentral(object: BleCentralCallback() {
        override fun onMessage(address: String, characteristic: UUID, bytes: ByteArray, offset: Int) {
            /*Message received*/
        }

        override fun onError(error: Int, address: String?) {
            super.onError(error, address)
            /*Some error happened*/
        }

        override fun onConnectionStateChanged(state: Int, address: String) {
            /*Connection state chanaged*/
        }
    })

    /**
     * Send message
     */
    private fun writeBytes(bytes: ByteArray) {
        if (!bleCentral.writeBytes(remoteAddressState.value, bytes)) {
            toast(R.string.str_send_failure)
        }
    }
    
    /**
     * connect to device
     */
    fun connect(device: BluetoothDevice) = bleCentral.connect(device)

    /**
     * disconnect from device
     */
    fun disconnect() = bleCentral.disconnect(remoteAddressState.value)
}

As a bluetooth peripheral

class BlePeripheralFragmentViewModel: BaseViewModel() {

    private val blePeripheral = BlePeripheral(object: BlePeripheralCallback(){
        override fun onMessage(address: String, characteristic: UUID, bytes: ByteArray, offset: Int) {
            /*Message received.*/
        }

        override fun onError(error: Int) {
            /*Some error happened.*/
        }

        override fun onConnectionStateChanged(state: Int, address: String) {
            /*Connection state changed.*/
        }
    })

    /**
     * Send message
     * @param bytes ByteArray
     */
    private fun writeBytes(bytes: ByteArray) {
        if (!blePeripheral.writeBytes(bytes)) {
            toast(R.string.str_send_failure)
        }
    }

    fun setBlePeripheralEnable(enable: Boolean) {
        if (enable) {
            blePeripheral.startup() /*Waiting for central to connect.*/
        } else {
            blePeripheral.shutdown() /*Shutdown the peripheral.*/
        }
    }
}

androidblekit's People

Contributors

tttuuuiii avatar

Watchers

 avatar

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.