kotlinでSAMのCallbackを登録する方法
JAVAの場合
btn.setPressReleaseCallback((state) -> {
int discard = state ?
Log.i(TAG, "aiueo")
: Log.i(TAG, "kakikukeko");
});
Kotlinの場合
btn?.setPressReleaseCallback({ pressed: Boolean ->
{
if (pressed) Log.i(TAG, "aiueo")
else Log.i(TAG, "kakikukeko")
}
} as PressReleaseCallback)
ラベルも使える
for (manager in managers) {
val btn = findViewById<ExButton>(manager.value.buttonId)
btn.setPressReleaseCallback({ pressed: Boolean ->
callback@{
if (bashing(pressed)) return@callback
Thread {
val player: IMusicPlayer = getPlayer(manager)
if (pressed) {
when (manager.key) {
PlayerKind.JetPlayer -> player.play("/data/local/tmp/sample.midi")
else -> player.play("/data/local/tmp/sample.wav")
}
} else {
player.stop()
}
player.playState = !player.playState
}.start()
}
} as ExButton.PressReleaseCallback)
}