【问题标题】:Flutter plugin constructor in class cannot be applied to given types类中的 Flutter 插件构造函数不能应用于给定类型
【发布时间】:2020-08-06 17:06:24
【问题描述】:

我正在尝试构建一个简单的语音转文本应用程序,该应用程序应该持续收听。因此,我在 pub.dev 中搜索了一个合适的插件,但不幸的是,没有这样的插件。 所以下一步将是我自己在本地集成它。有一个用于 android 的插件,称为“Droid Speech 2.0”(kotlin)。我成功地集成到了一个普通的 android kotlin 项目中。现在我正在尝试为我构建一个颤振插件并考虑使用平台通道。但是因为我没有太多的 android 尤其是 kotlin 经验,所以我遇到了一些错误。

错误:

Downloads/simple_speech_to_text/example/android/app/src/main/java/io/flutter/plugins/GeneratedPluginRegistrant.java:15: error: constructor SimpleSpeechToTextPlugin in class SimpleSpeechToTextPlugin cannot be applied to given types;
    flutterEngine.getPlugins().add(new com.example.simple_speech_to_text.SimpleSpeechToTextPlugin());
                                   ^
  required: Activity
  found: no arguments
  reason: actual and formal argument lists differ in length
1 error

这是我的代码:

class SimpleSpeechToTextPlugin(private var activity: Activity): EventChannel.StreamHandler{

  private var dks: Dks? = null


  companion object{
    @JvmStatic
    fun registerWith(registrar: Registrar){
      Log.d("test","companion object")
      val channel = EventChannel(registrar.messenger(), "com.examplesimple_speech_to_text/stream")
      channel.setStreamHandler(SimpleSpeechToTextPlugin(registrar.activity()))
    }
  }


  override fun onListen(arguments: Any?, events: EventChannel.EventSink?) {
    Log.d("test", "onListen")
    createListener(events)
  }

  override fun onCancel(arguments: Any?) {}


  private fun createListener(event: EventChannel.EventSink?){
    Log.d("test", "create Listener")
    if(activity != null) {
      Log.d("test","activity is not null")
      val act = activity as FragmentActivity
      dks = Dks(activity!!.application, act.supportFragmentManager, object : DksListener {
        override fun onDksLiveSpeechResult(liveSpeechResult: String) {
          Log.d(activity!!.application.packageName, "Speech result - $liveSpeechResult")
          event?.success(liveSpeechResult)
        }

        override fun onDksFinalSpeechResult(speechResult: String) {
          Log.d(activity!!.packageName, "Final speech result - $speechResult")
        }

        override fun onDksLiveSpeechFrequency(frequency: Float) {}

        override fun onDksLanguagesAvailable(defaultLanguage: String?, supportedLanguages: ArrayList<String>?) {
          Log.d(activity!!.packageName, "defaultLanguage - $defaultLanguage")
          Log.d(activity!!.packageName, "supportedLanguages - $supportedLanguages")

          if (supportedLanguages != null && supportedLanguages.contains("en-IN")) {
            // Setting the speech recognition language to english india if found
            dks?.currentSpeechLanguage = "de-DE"
          }
        }

        override fun onDksSpeechError(errMsg: String) {
          Toast.makeText(activity, errMsg, Toast.LENGTH_SHORT).show()
        }
      })
    }

    if(dks != null) {
      dks!!.startSpeechRecognition()
    }
  }
}

【问题讨论】:

  • 您好,您找到解决方案了吗?
  • 很遗憾没有
  • 我有一个理智的问题...
  • @AnasSafi 对此问题的回答 stackoverflow.com/questions/60048704/… 帮助我解决了这个问题
  • @GrafritzDesign 上述解决方案是否解决了您的问题?

标签: flutter kotlin flutter-plugin


【解决方案1】:

我想在我的应用上阅读文本。我在 Pub.dev 上找到了 flutter_tts: ^ 0.9.2 但目前最新版本的flutter_tts 1.2.6 不适用于我。现在我不详述了。

我是这样做的: 我将 minSdkVersion 更改为 21 它在文件中:android/app/build.gradle

阅读课文:

//region [ FlutterTts ]
  FlutterTts flutterTts;
  dynamic languages;
  TtsState ttsState = TtsState.stopped;
  double _volume = 1.0;
  double _pitch = 1.3;
  double _rate = 0.6;
  String _newVoiceText;
  bool _isShowProgressVoiceRead=false;
  //endregion

@override
  void initState() {
    super.initState();
    initTts();
  }

//region [ TTS ]
  initTts() {
    flutterTts = FlutterTts();

    //_getLanguages();

    if (Platform.isAndroid) {
      _getEngines();
    }

    flutterTts.setStartHandler(() {
      setState(() {
        print("Playing");
        ttsState = TtsState.playing;
      });
    });

    flutterTts.setCompletionHandler(() {
      setState(() {
        print("Complete");
        ttsState = TtsState.stopped;
      });
    });

    /*flutterTts.setCancelHandler(() {
      setState(() {
        print("Cancel");
        ttsState = TtsState.stopped;
      });
    });*/

    if (kIsWeb || Platform.isIOS) {
      /* flutterTts.setPauseHandler(() {
        setState(() {
          print("Paused");
          ttsState = TtsState.paused;
        });
      });*/

      /*flutterTts.setContinueHandler(() {
        setState(() {
          print("Continued");
          ttsState = TtsState.continued;
        });
      });*/
    }

    flutterTts.setErrorHandler((msg) {
      setState(() {
        print("error: $msg");
        ttsState = TtsState.stopped;
      });
    });
  }

  /*Future _getLanguages() async {
    languages = await flutterTts.getLanguages;
    Tools.logCat('laguage: $languages');
    if (languages != null) setState(() => languages);
  }*/

  Future _getEngines() async {
    /*var engines = await flutterTts.getEngines;
    if (engines != null) {
      for (dynamic engine in engines) {
        print(engine);
      }
    }*/
  }

  Future startLecture() async {
    setState(() => _isShowProgressVoiceRead=true);
    await flutterTts.setVolume(_volume);
    await flutterTts.setSpeechRate(_rate);
    await flutterTts.setPitch(_pitch);

    flutterTts.setLanguage(getLanguageForTTS(langue: _preferredLanguage, question: question));

    _newVoiceText = 'VOTRE TEXT A LIRE';

    if (_newVoiceText != null) {
      if (_newVoiceText.isNotEmpty) {
        var result = await flutterTts.speak(_newVoiceText);
        if (result == 1) setState(() {
          ttsState = TtsState.playing;
          _isShowProgressVoiceRead=false;
        });
      }
    }
  }

  Future stopLecture() async {
    var result = await flutterTts.stop();
    if (result == 1) setState(() => ttsState = TtsState.stopped);
  }

  //endregion

我的应用程序的屏幕... disponible sur 谷歌商店https://play.google.com/store/apps/details?id=net.braindev.lasaintebible

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-18
    • 2020-06-21
    • 1970-01-01
    相关资源
    最近更新 更多