Somdip Dey
Somdip Dey

Reputation: 3386

Get Frame Rate of Android using Kotlin

I am able to get the frame rate of the Android system using the following answer in Java: https://stackoverflow.com/a/8908035/4190159

However, being new to Kotlin I was wondering how can I get the frame rate of Android system using Kotlin code? (my app is using Kotlin instead of Java)

The code as follows is not working for me:

fun getFrameRate(): String {
        val timeElapsed1: android.os.SystemClock = SystemClock.elapsedRealtime()
        val timeElapsed2: android.os.SystemClock = SystemClock.elapsedRealtime()
        val frameTime = 1000.0 / (timeElapsed2 - timeElapsed1) 
        return frameTime
}

Upvotes: 0

Views: 1309

Answers (1)

Egor
Egor

Reputation: 40193

SystemClock.elapsedRealtime() returns a long, not an android.os.SystemClock:

fun getFrameRate(): String {
        val timeElapsed1: Long = SystemClock.elapsedRealtime()
        val timeElapsed2: Long = SystemClock.elapsedRealtime()
        val frameTime = 1000.0 / (timeElapsed2 - timeElapsed1) 
        return frameTime
}

or you can simply omit the types and let Kotlin infer them for you:

fun getFrameRate(): String {
        val timeElapsed1 = SystemClock.elapsedRealtime()
        val timeElapsed2 = SystemClock.elapsedRealtime()
        val frameTime = 1000.0 / (timeElapsed2 - timeElapsed1) 
        return frameTime
}

Lastly, you'll need to convert frameTime to a String:

fun getFrameRate(): String {
        val timeElapsed1 = SystemClock.elapsedRealtime()
        val timeElapsed2 = SystemClock.elapsedRealtime()
        val frameTime = 1000.0 / (timeElapsed2 - timeElapsed1) 
        return frameTime.toString()
}

Upvotes: 2

Related Questions