diff --git a/CHANGELOG.md b/CHANGELOG.md index 5f7dc04..0d15a59 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +## 0.3.1 +* Upgrade gradle & kotlin version. + ## 0.3.0+1 * Update readme. diff --git a/android/build.gradle b/android/build.gradle index 02a6175..529c567 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -2,14 +2,14 @@ group 'com.codevalop.raw_sound' version '1.0-SNAPSHOT' buildscript { - ext.kotlin_version = '1.3.50' + ext.kotlin_version = '1.7.20' repositories { google() - jcenter() + mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:3.5.0' + classpath 'com.android.tools.build:gradle:7.4.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } @@ -17,7 +17,7 @@ buildscript { rootProject.allprojects { repositories { google() - jcenter() + mavenCentral() } } @@ -25,7 +25,7 @@ apply plugin: 'com.android.library' apply plugin: 'kotlin-android' android { - compileSdkVersion 30 + compileSdkVersion 33 sourceSets { main.java.srcDirs += 'src/main/kotlin' @@ -39,7 +39,7 @@ android { } dependencies { - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.2' implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.2' implementation 'androidx.annotation:annotation:1.1.0' diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index 01a286e..ae04661 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip diff --git a/android/src/main/kotlin/com/codevalop/raw_sound/RawSoundPlayer.kt b/android/src/main/kotlin/com/codevalop/raw_sound/RawSoundPlayer.kt index 59efaba..f5ed7e6 100644 --- a/android/src/main/kotlin/com/codevalop/raw_sound/RawSoundPlayer.kt +++ b/android/src/main/kotlin/com/codevalop/raw_sound/RawSoundPlayer.kt @@ -5,7 +5,6 @@ import android.media.AudioAttributes import android.media.AudioFormat import android.media.AudioManager import android.media.AudioTrack -import androidx.annotation.NonNull import io.flutter.Log import kotlinx.coroutines.* import kotlinx.coroutines.sync.Mutex @@ -26,8 +25,8 @@ enum class PCMType { } /** RawSoundPlayer */ -class RawSoundPlayer(@NonNull androidContext: Context, @NonNull bufferSize: Int, - @NonNull sampleRate: Int, @NonNull nChannels: Int, @NonNull pcmType: PCMType) { +class RawSoundPlayer(androidContext: Context, bufferSize: Int, + sampleRate: Int, nChannels: Int, pcmType: PCMType) { companion object { const val TAG = "RawSoundPlayer" } @@ -81,6 +80,7 @@ class RawSoundPlayer(@NonNull androidContext: Context, @NonNull bufferSize: Int, } } + @OptIn(DelicateCoroutinesApi::class) fun play(): Boolean { try { audioTrack.play() @@ -90,7 +90,7 @@ class RawSoundPlayer(@NonNull androidContext: Context, @NonNull bufferSize: Int, } GlobalScope.launch(Dispatchers.IO) { - Log.d(TAG, "--> queUseBuffer") + Log.d(/* tag = */ TAG, /* message = */ "--> queUseBuffer") semUseBufferIdled.withPermit { val n = buffersCacheSize - getBuffersCount() @@ -141,8 +141,8 @@ class RawSoundPlayer(@NonNull androidContext: Context, @NonNull bufferSize: Int, } runBlocking { clearBuffers() - resetSemBufferUsed(); - resetSemBufferAdded(); + resetSemBufferUsed() + resetSemBufferAdded() } return r } @@ -168,7 +168,8 @@ class RawSoundPlayer(@NonNull androidContext: Context, @NonNull bufferSize: Int, } } - fun feed(@NonNull data: ByteArray, onDone: (r: Boolean) -> Unit) { + @OptIn(DelicateCoroutinesApi::class) + fun feed(data: ByteArray, onDone: (r: Boolean) -> Unit) { if (audioTrack.playState != AudioTrack.PLAYSTATE_PLAYING) { Log.e(TAG, "Player is not playing") onDone(true) @@ -195,7 +196,7 @@ class RawSoundPlayer(@NonNull androidContext: Context, @NonNull bufferSize: Int, // Log.d(TAG, "underrun count: ${audioTrack.underrunCount}") } - fun setVolume(@NonNull volume: Float): Boolean { + fun setVolume(volume: Float): Boolean { val r = audioTrack.setVolume(volume) if (r == AudioTrack.SUCCESS) { return true diff --git a/android/src/main/kotlin/com/codevalop/raw_sound/RawSoundPlugin.kt b/android/src/main/kotlin/com/codevalop/raw_sound/RawSoundPlugin.kt index 970c97f..cbe8de3 100644 --- a/android/src/main/kotlin/com/codevalop/raw_sound/RawSoundPlugin.kt +++ b/android/src/main/kotlin/com/codevalop/raw_sound/RawSoundPlugin.kt @@ -3,8 +3,6 @@ package com.codevalop.raw_sound import android.content.Context import android.os.Handler import android.os.Looper -import androidx.annotation.NonNull -import androidx.annotation.Nullable import io.flutter.Log import io.flutter.embedding.engine.plugins.FlutterPlugin import io.flutter.plugin.common.MethodCall @@ -29,13 +27,13 @@ class RawSoundPlugin : FlutterPlugin, MethodCallHandler { private var players: MutableList = mutableListOf() - override fun onAttachedToEngine(@NonNull flutterPluginBinding: FlutterPlugin.FlutterPluginBinding) { + override fun onAttachedToEngine(flutterPluginBinding: FlutterPlugin.FlutterPluginBinding) { channel = MethodChannel(flutterPluginBinding.binaryMessenger, "codevalop.com/raw_sound") channel.setMethodCallHandler(this) androidContext = flutterPluginBinding.applicationContext } - override fun onMethodCall(@NonNull call: MethodCall, @NonNull result: Result) { + override fun onMethodCall(call: MethodCall, result: Result) { var playerNo: Int = -1 if (call.method != "initialize") { @@ -88,32 +86,31 @@ class RawSoundPlugin : FlutterPlugin, MethodCallHandler { } } - override fun onDetachedFromEngine(@NonNull binding: FlutterPlugin.FlutterPluginBinding) { + override fun onDetachedFromEngine(binding: FlutterPlugin.FlutterPluginBinding) { channel.setMethodCallHandler(null) } - private fun sendResultError(@NonNull errorCode: String, @Nullable errorMessage: String, - @Nullable errorDetails: Any?, @NonNull result: Result) { + private fun sendResultError(errorCode: String, errorMessage: String, errorDetails: Any?, result: Result) { Handler(Looper.getMainLooper()).post { result.error(errorCode, errorMessage, errorDetails) } } - private fun sendResultInt(@NonNull playState: Int, @NonNull result: Result) { + private fun sendResultInt(playState: Int, result: Result) { Handler(Looper.getMainLooper()).post { result.success(playState) } } - private fun initialize(@NonNull bufferSize: Int, @NonNull sampleRate: Int, - @NonNull nChannels: Int, @NonNull pcmType: PCMType, - @NonNull result: Result) { + private fun initialize(bufferSize: Int, sampleRate: Int, + nChannels: Int, pcmType: PCMType, + result: Result) { val player = RawSoundPlayer(androidContext, bufferSize, sampleRate, nChannels, pcmType) players.add(player) sendResultInt(players.lastIndex, result) } - private fun release(@NonNull playerNo: Int, @NonNull result: Result) { + private fun release(playerNo: Int, result: Result) { val player = players[playerNo] if (player.release()) { players.removeAt(playerNo) @@ -124,7 +121,7 @@ class RawSoundPlugin : FlutterPlugin, MethodCallHandler { } } - private fun play(@NonNull playerNo: Int, @NonNull result: Result) { + private fun play(playerNo: Int, result: Result) { val player = players[playerNo] if (player.play()) { sendResultInt(player.getPlayState(), result) @@ -134,7 +131,7 @@ class RawSoundPlugin : FlutterPlugin, MethodCallHandler { } } - private fun stop(@NonNull playerNo: Int, @NonNull result: Result) { + private fun stop(playerNo: Int, result: Result) { val player = players[playerNo] if (player.stop()) { sendResultInt(player.getPlayState(), result) @@ -144,7 +141,7 @@ class RawSoundPlugin : FlutterPlugin, MethodCallHandler { } } - private fun resume(@NonNull playerNo: Int, @NonNull result: Result) { + private fun resume(playerNo: Int, result: Result) { val player = players[playerNo] if (player.resume()) { sendResultInt(player.getPlayState(), result) @@ -154,7 +151,7 @@ class RawSoundPlugin : FlutterPlugin, MethodCallHandler { } } - private fun pause(@NonNull playerNo: Int, @NonNull result: Result) { + private fun pause(playerNo: Int, result: Result) { val player = players[playerNo] if (player.pause()) { sendResultInt(player.getPlayState(), result) @@ -164,7 +161,7 @@ class RawSoundPlugin : FlutterPlugin, MethodCallHandler { } } - private fun feed(@NonNull playerNo: Int, @NonNull data: ByteArray, @NonNull result: Result) { + private fun feed(playerNo: Int, data: ByteArray, result: Result) { val player = players[playerNo] player.feed( data @@ -178,7 +175,7 @@ class RawSoundPlugin : FlutterPlugin, MethodCallHandler { } } - private fun setVolume(@NonNull playerNo: Int, @NonNull volume: Float, @NonNull result: Result) { + private fun setVolume(playerNo: Int, volume: Float, result: Result) { val player = players[playerNo] if (player.setVolume(volume)) { sendResultInt(player.getPlayState(), result) diff --git a/example/android/app/build.gradle b/example/android/app/build.gradle index 0ef057f..4ccd0a2 100644 --- a/example/android/app/build.gradle +++ b/example/android/app/build.gradle @@ -26,7 +26,7 @@ apply plugin: 'kotlin-android' apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" android { - compileSdkVersion 30 + compileSdkVersion 33 sourceSets { main.java.srcDirs += 'src/main/kotlin' @@ -58,5 +58,5 @@ flutter { } dependencies { - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" } diff --git a/example/android/app/src/main/AndroidManifest.xml b/example/android/app/src/main/AndroidManifest.xml index 62b415a..7e7013b 100644 --- a/example/android/app/src/main/AndroidManifest.xml +++ b/example/android/app/src/main/AndroidManifest.xml @@ -6,7 +6,7 @@ additional functionality it is fine to subclass or reimplement FlutterApplication and put your custom class here. -->