0
  • I'm making an android app for a school project, using Android Studio (Kotlin).
  • I need to send strings to an Arduino Genuino Uno module, passing by a HC-05 bluetooth module.
  • The Arduino will already be connected (paired) to my android device when the app will be launched.
  • Can someone help me to find a right and easy way to only SEND these datas ?
  • Thanks a lot.
2
  • You could use something like this stackoverflow.com/questions/22899475/… it's in Java, but could help. Commented Feb 8, 2019 at 20:23
  • 1
    Thanks, I'll try this. Commented Feb 9, 2019 at 12:47

1 Answer 1

7

I finally got the answer, I did that :

private fun CheckBt() {
    Toast.makeText(applicationContext, "It has started", Toast.LENGTH_SHORT).show()
    mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter()

    if (!mBluetoothAdapter.enable()) {
        Toast.makeText(applicationContext, "Bluetooth Disabled !", Toast.LENGTH_SHORT).show()
        /* It tests if the bluetooth is enabled or not, if not the app will show a message. */
        finish()
    }

    if (mBluetoothAdapter == null) {
        Toast.makeText(applicationContext, "Bluetooth null !", Toast.LENGTH_SHORT).show()
    }
}

fun Connect() {

    val device = mBluetoothAdapter.getRemoteDevice("98:D3:32:71:17:DE")
    Log.d("", "Connecting to ... $device")
    Toast.makeText(applicationContext, "Connecting to ... ${device.name} mac: ${device.uuids[0]} address: ${device.address}", Toast.LENGTH_LONG).show()
    mBluetoothAdapter.cancelDiscovery()
    try {
        btSocket = device.createRfcommSocketToServiceRecord(myUUID)
        /* Here is the part the connection is made, by asking the device to create a RfcommSocket (Unsecure socket I guess), It map a port for us or something like that */
        btSocket.connect()
        Log.d("", "Connection made.")
        Toast.makeText(applicationContext, "Connection made.", Toast.LENGTH_SHORT).show()
    } catch (e: IOException) {
        try {
            btSocket.close()
        } catch (e2: IOException) {
            Log.d("", "Unable to end the connection")
            Toast.makeText(applicationContext, "Unable to end the connection", Toast.LENGTH_SHORT).show()
        }

        Log.d("", "Socket creation failed")
        Toast.makeText(applicationContext, "Socket creation failed", Toast.LENGTH_SHORT).show()
    }

    //beginListenForData()
    /* this is a method used to read what the Arduino says for example when you write Serial.print("Hello world.") in your Arduino code */
}

private fun writeData(data: String) {
    var outStream = btSocket.outputStream
    try {
        outStream = btSocket.outputStream
    } catch (e: IOException) {
        //Log.d(FragmentActivity.TAG, "Bug BEFORE Sending stuff", e)
    }
    val msgBuffer = data.toByteArray()

    try {
        outStream.write(msgBuffer)
    } catch (e: IOException) {
        //Log.d(FragmentActivity.TAG, "Bug while sending stuff", e)
    }

}
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.