通过覆盖react-native中的onKeyDown()方法检测蓝牙耳机媒体按钮事件的问题

问题描述

我正在尝试构建一个记录音频的应用程序,然后将音频发送到 Speech-to-Text API 以接收其转录内容

我希望该应用程序能够与蓝牙耳机/耳机进行交互,我可以在其上按下一个按钮(播放/暂停按钮)开始录音,再次按下结束录音。

我正在使用 react-native-keyevent 库来处理 keyEvent。它与 wiered haedsets 一起工作正常,但我无法通过蓝牙耳机上的播放/暂停按钮捕获事件。

componentDidMount(){
   KeyEvent.onKeyDownListener((keyEvent) => {
     console.log(`onKeyDown keyCode: ${keyEvent.keyCode}`);
     //My Event handler here.
   });
}

Manifest.XML

  <uses-permission android:name="android.permission.INTERNET"/>
  <uses-permission android:name="android.permission.BLUetoOTH" />
  <uses-permission android:name="android.permission.BLUetoOTH_ADMIN" />
  <uses-permission android:name="android.permission.MODIFY_AUdio_SETTINGS"/>
  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
  <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION"/>
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
  <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/>
  <application android:name=".MainApplication" android:label="@string/app_name" android:icon="@mipmap/ic_launcher" android:roundIcon="@mipmap/ic_launcher_round" android:allowBackup="true" android:theme="@style/AppTheme">
    <activity android:name=".MainActivity" android:label="@string/app_name" android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode" android:launchMode="singleTask" android:windowSoftInputMode="adjustResize" android:theme="@style/Theme.App.SplashScreen" android:screenorientation="portrait">
      <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
      </intent-filter>
      <intent-filter>
        <action android:name="android.intent.action.VIEW"/>
        <category android:name="android.intent.category.DEFAULT"/>
        <category android:name="android.intent.category.broWSABLE"/>
      </intent-filter>
    </activity>
    <activity android:name="com.facebook.react.devsupport.DevSettingsActivity"/>
  </application>

MainActivity.java

 @Override 
      public boolean onKeyDown(int keyCode,KeyEvent event) {
        KeyEventModule.getInstance().onKeyDownEvent(keyCode,event);
        super.onKeyDown(keyCode,event);
        return true;
      }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)