forked from BigfootDev/flatbuffers
53 lines
1.6 KiB
Kotlin
53 lines
1.6 KiB
Kotlin
package com.flatbuffers.app
|
|
|
|
import android.annotation.SuppressLint
|
|
import android.os.Bundle
|
|
import android.widget.TextView
|
|
import androidx.appcompat.app.AppCompatActivity
|
|
import com.fbs.app.Animal
|
|
import com.google.flatbuffers.FlatBufferBuilder
|
|
import java.nio.ByteBuffer
|
|
|
|
@ExperimentalUnsignedTypes
|
|
class MainActivity : AppCompatActivity() {
|
|
|
|
@SuppressLint("SetTextI18n")
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
super.onCreate(savedInstanceState)
|
|
setContentView(R.layout.activity_main)
|
|
|
|
val tiger = Animal.getRootAsAnimal(ByteBuffer.wrap(createAnimalFromJNI()))
|
|
findViewById<TextView>(R.id.tv_animal_one).text = animalInfo(tiger)
|
|
|
|
findViewById<TextView>(R.id.tv_animal_two).text = animalInfo(createAnimalFromKotlin())
|
|
}
|
|
|
|
// This function is a sample of communicating FlatBuffers between JNI (native C++) and Java.
|
|
// Implementation can be found on animals.cpp file.
|
|
private external fun createAnimalFromJNI(): ByteArray
|
|
|
|
// Create a "Cow" Animal flatbuffers from Kotlin
|
|
private fun createAnimalFromKotlin(): Animal {
|
|
val fb = FlatBufferBuilder(100)
|
|
val cowOffset =
|
|
Animal.createAnimal(
|
|
builder = fb,
|
|
nameOffset = fb.createString("Cow"),
|
|
soundOffset = fb.createString("Moo"),
|
|
weight = 720u,
|
|
)
|
|
fb.finish(cowOffset)
|
|
return Animal.getRootAsAnimal(fb.dataBuffer())
|
|
}
|
|
|
|
private fun animalInfo(animal: Animal): String =
|
|
"The ${animal.name} sound is ${animal.sound} and it weights ${animal.weight}kg."
|
|
|
|
companion object {
|
|
// Used to load the 'native-lib' library on application startup.
|
|
init {
|
|
System.loadLibrary("native-lib")
|
|
}
|
|
}
|
|
}
|