Приложение Kotlin in Flutter, вызывающее сбой - PullRequest
0 голосов
/ 21 июня 2019

Со времени последнего обновления флаттера возникла проблема, когда я пытаюсь использовать медиаплеер, который использует Kotlin.

Когда вы нажимаете кнопку, и предполагается, что проигрывается аудиофайл, происходит сбой приложения.

fun play(url: String) {
    player.reset()
    channel.invokeMethod("onPosition", 0.0)
    player.setDataSource(url)
    player.prepareAsync()
    channel.invokeMethod("onIsLoading", null)
    task?.cancel()
    task = object : TimerTask() {
      override fun run() {
        if (player.isPlaying) {
          session.setPlaybackState(PlaybackStateCompat.Builder()
              .setState(PlaybackStateCompat.STATE_PLAYING, player.currentPosition.toLong(), 1f)
              .build())
            channel.invokeMethod("onPosition", player.currentPosition.toDouble() / player.duration.toDouble())
        }
      }
    }
    timer.schedule(task, 0, 100)
  }

было предложено добавить это.

activity.runOnUiThread(java.lang.Runnable {
  channel.invokeMethod(...)
})

но я, если я делаю, я получаю

Unresolved Reference: activity

Это сообщение об ошибке.

java.lang.RuntimeException: Methods marked with @UiThread must be executed on the main thread. Current thread: Timer-0
        at io.flutter.embedding.engine.FlutterJNI.ensureRunningOnMainThread(FlutterJNI.java:605)
        at io.flutter.embedding.engine.FlutterJNI.dispatchPlatformMessage(FlutterJNI.java:515)
        at io.flutter.embedding.engine.dart.DartMessenger.send(DartMessenger.java:76)
        at io.flutter.embedding.engine.dart.DartExecutor.send(DartExecutor.java:166)
        at io.flutter.view.FlutterNativeView.send(FlutterNativeView.java:155)
        at io.flutter.plugin.common.MethodChannel.invokeMethod(MethodChannel.java:98)
        at io.flutter.plugin.common.MethodChannel.invokeMethod(MethodChannel.java:84)
        at live.exit.musicplayer.MusicPlayer$play$1.run(MusicPlayer.kt:49)
        at java.util.TimerThread.mainLoop(Timer.java:562)
        at java.util.TimerThread.run(Timer.java:512)

Я немного растерялся, предполагается, что я проигрываю аудио.

Я ничего не знаю о kotlin.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...