最近我决定创建flutter应用程序,我只有一个问题。
我想创建自定义流来检测耳机拔下以停止音乐播放。
这是我的MainActivity。
package com.example.radio24
import android.content.BroadcastReceiver
import android.content.IntentFilter
import android.content.Context
import android.content.Intent
import android.media.AudioManager
import android.os.Bundle
import android.os.PersistableBundle
import io.flutter.embedding.android.FlutterActivity
import io.flutter.plugin.common.EventChannel
class MainActivity: FlutterActivity() {
private val HEADPHONES_LISTENER_CHANNEL = "com.radioanime24.dev/headphones"
lateinit var broadCastReceiver: BroadcastReceiver;
override fun onCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?) {
super.onCreate(savedInstanceState, persistentState)
EventChannel(flutterEngine?.dartExecutor?.binaryMessenger, HEADPHONES_LISTENER_CHANNEL).setStreamHandler(
object: EventChannel.StreamHandler {
override fun onListen(arguments: Any?, events: EventChannel.EventSink?) {
broadCastReceiver = object : BroadcastReceiver() {
override fun onReceive(contxt: Context?, intent: Intent?) {
when (intent?.action) {
AudioManager.ACTION_AUDIO_BECOMING_NOISY -> {
events?.success("HEADPHONES_UNPLUGGED")
}
}
}
}
val filter = IntentFilter(AudioManager.ACTION_AUDIO_BECOMING_NOISY)
registerReceiver(broadCastReceiver, filter);
}
override fun onCancel(arguments: Any?) {
unregisterReceiver(broadCastReceiver)
}
}
)
}
}在dart中,我尝试使用以下命令来处理此流:
Stream headPhonesStateStream = EventChannel('com.radioanime24.dev/headphones').receiveBroadcastStream();
headPhonesStateStream.listen((event) {
if (event == 'HEADPHONES_UNPLUGGED') {
if (AudioService.playbackState.playing) {
AudioService.pause();
}
}
});但是我收到了错误:
MissingPluginException(No implementation found for method listen on channel com.radioanime24.dev/headphones)我应该如何注册eventchannel来忽略这个错误?
发布于 2020-07-13 01:37:20
我认为您应该重写onCreate(savedInstanceState: Bundle?)方法,而不是Activity的onCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?)。
https://stackoverflow.com/questions/62863612
复制相似问题