首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试在颤动中使用自定义EventChannel时的MissingPluginException

尝试在颤动中使用自定义EventChannel时的MissingPluginException
EN

Stack Overflow用户
提问于 2020-07-13 00:24:59
回答 1查看 154关注 0票数 0

最近我决定创建flutter应用程序,我只有一个问题。

我想创建自定义流来检测耳机拔下以停止音乐播放。

这是我的MainActivity。

代码语言:javascript
复制
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中,我尝试使用以下命令来处理此流:

代码语言:javascript
复制
    Stream headPhonesStateStream = EventChannel('com.radioanime24.dev/headphones').receiveBroadcastStream();
    headPhonesStateStream.listen((event) {
      if (event == 'HEADPHONES_UNPLUGGED') {
        if (AudioService.playbackState.playing) {
          AudioService.pause();
        }
      }
    });

但是我收到了错误:

代码语言:javascript
复制
MissingPluginException(No implementation found for method listen on channel com.radioanime24.dev/headphones)

我应该如何注册eventchannel来忽略这个错误?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-13 01:37:20

我认为您应该重写onCreate(savedInstanceState: Bundle?)方法,而不是ActivityonCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62863612

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档