I'm new to React native. In the application, the pronunciation of the words is heard with the TTS package. When I use this package, I get an warning as follows. This warning only happens on android. There is no problem on iOS. This warning coming as the app is opened. How can I fix this?
Warning:
TTS package settings:
import { Platform } from "react-native"
import Tts from "react-native-tts"
export class VocalizationUtil {
constructor() {
Tts.setDefaultLanguage("en-IE").catch(error => { })
}
iosConfig = {
iosVoiceId: "com.apple.ttsbundle.Moira-compact", //which voice to use
rate: 0.5, //speech rate
}
androidConfig = {
KEY_PARAM_PAN: 0,
KEY_PARAM_VOLUME: 0.5, // 0 means silence
KEY_PARAM_STREAM: "STREAM_MUSIC"
}
// Subscribe to TTS events
createListeners() {
Tts.addEventListener("tts-start", event => { })
Tts.addEventListener("tts-finish", event => { })
Tts.addEventListener("tts-cancel", event => { })
}
async voiceTheText(text) {
this.createListeners()
Tts.stop() //Stop speaking and flush the TTS queue.
// if text-to-speech engine is not installed, request the installation
Tts.getInitStatus()
.then(() => {
Tts.speak(`${text}`, Platform.OS === "android" ? this.androidConfig : this.iosConfig)
})
.catch(error => { })
}
}
In case you are using removeEventListener, that was deprecated
https://reactnative.dev/docs/appstate#removeeventlistener
You have a codeSnippet on the top of the page on how to use .remove() instead of removeEventLister
In case you are using react-native-reanimated or drawer it seems that the problem comes from the libraries not being updated. https://github.com/react-navigation/react-navigation/issues/9882
If you want to silence it new NativeEventEmitter()` was called with a non-null argument without the required `addListener` method
Thanks to @Langarus for the reply. I added the short solution here for those who encounter this problem.
For all packages where you get this warning, add the following code to the package's ..Module.java file. For example, for the TTS package, add the following code to node_modules/react-native-tts/android/src/main/java/net/no_mad/tts/TextToSpeechModule.java
@ReactMethod
public void addListener(String eventName) {
// Keep: Required for RN built in Event Emitter Calls.
}
@ReactMethod
public void removeListeners(Integer count) {
// Keep: Required for RN built in Event Emitter Calls.
}