【问题标题】:Is there a way to detect whether my Android TV remote has a microphone or not?有没有办法检测我的 Android TV 遥控器是否有麦克风?
【发布时间】:2021-02-01 09:37:35
【问题描述】:

我有一个 Android TV 应用,我正在将语音识别器集成到其中。直到今天我才发现 Android TV 支持 Remote 麦克风。

使用requireActivity().packageManager.hasSystemFeature(PackageManager.FEATURE_MICROPHONE) 检测设备是否有麦克风很容易,但我认为它不考虑远程麦克风。

我的问题是是否可以检测我正在使用的遥控器是否有麦克风,如果没有,我可以显示“无音频信号”错误。

【问题讨论】:

    标签: android android-tv


    【解决方案1】:

    我的方法是使用 AudioRecord 然后调用startRecording() 的函数,然后调用getRecordingState() 来检查录音机的状态。如果录音开始成功,则证明无论内部还是外部,设备都连接有麦克风。该函数将返回 3 (AudioRecord.RECORDSTATE_RECORDING) 否则将返回 1 (AudioRecord.RECORDSTATE_STOPPED)

    以下是 Kotlin 的代码:

    private fun checkMicAvailability(audioRecord: AudioRecord): Boolean {
        audioRecord.startRecording()
        val micCheckAvailability= audioRecord.recordingState == AudioRecord.RECORDSTATE_RECORDING
        audioRecord.stop()
        audioRecord.release()
        return micCheckAvailability
    }
    

    请注意,您必须使用 AudioRecord 构造函数来创建它。你可以看看Audio Recorder Documentation

    【讨论】:

    • 我希望有一种方法不需要我为此目的使用AudioRecord 实例,因为这对于我的用例来说似乎有点过分了。谢谢。
    • 也许你可以看看AudioDeviceInfo。希望对您有所帮助
    • 关于AudioDeviceInfo,进一步调查使我找到了AudioManager.getMicrophones() 方法。它是否也检测到远程麦克风?
    • 我相信AudioDeviceInfo,有getAudioDevice()这个函数,它会返回所有的音频设备,无论是内置麦克风,外接麦克风,还是连接到设备的音频接口。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-17
    • 2021-12-24
    • 2016-08-26
    • 2019-12-26
    • 1970-01-01
    • 2022-12-19
    • 1970-01-01
    相关资源
    最近更新 更多