当前位置: 首页 > 知识库问答 >
问题:

AudiManager从蓝牙更改为EAR\u块不起作用

汤博
2023-03-14

我有一个按钮,可以从耳机到扬声器再到蓝牙等等。

这是我的代码:

 fun setSpeakerValue(value: SIPManager.AUDIO) {
        speaker = value
        when (value) {
            SIPManager.AUDIO.EAR_PIECE -> {
                Log.i("Speaker", "Speaker1 EARPIECE")
                binding.callItemIconSpeaker.setImageResource(R.drawable.speaker_off)
                if (SIPManager.isBluetoothConnected()) {
                    audioManager?.isBluetoothScoOn = false
                    audioManager?.stopBluetoothSco()
                }
                audioManager?.mode = AudioManager.MODE_NORMAL
                audioManager?.isSpeakerphoneOn = false
            }
            SIPManager.AUDIO.SPEAKER -> {
                Log.i("Speaker", "Speaker1 SPEAKER")
                binding.callItemIconSpeaker.setImageResource(R.drawable.speaker_on)
                if (SIPManager.isBluetoothConnected()) {
                    audioManager?.isBluetoothScoOn = false
                    audioManager?.stopBluetoothSco()
                }
                audioManager?.mode = AudioManager.MODE_IN_COMMUNICATION
                audioManager?.isSpeakerphoneOn = true
            }
            SIPManager.AUDIO.BLUETOOTH -> {
                Log.i("Speaker", "Speaker1 BLUETOOTH")
                binding.callItemIconSpeaker.setImageResource(android.R.drawable.stat_sys_data_bluetooth)
                audioManager?.mode = AudioManager.MODE_NORMAL
                audioManager?.isSpeakerphoneOn = false
                audioManager?.startBluetoothSco()
                audioManager?.isBluetoothScoOn = true
            }
        }
    }

但当我听到耳机时,我停止蓝牙,我将isSpeakerOn设置为false,但之后,我开始在蓝牙而不是手机的听筒中听到声音。我做错了什么?

共有1个答案

田硕
2023-03-14

使用下面的答案:如何切换手机、手机扬声器、耳机或蓝牙设备的音频输出

 //For BT
        mAudioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
        mAudioManager.startBluetoothSco();
        mAudioManager.setBluetoothScoOn(true);
    } else if(true) {
        //For phone ear piece
        mAudioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
        mAudioManager.stopBluetoothSco();
        mAudioManager.setBluetoothScoOn(false);
        mAudioManager.setSpeakerphoneOn(false);
    } else {
        //For phone speaker(loudspeaker)
        mAudioManager.setMode(AudioManager.MODE_NORMAL);
        mAudioManager.stopBluetoothSco();
        mAudioManager.setBluetoothScoOn(false);
        mAudioManager.setSpeakerphoneOn(true);
    }
 类似资料:
  • 我在Android和Arduino之间找到了蓝牙的源代码,我复制并粘贴了它。 它没有显示任何代码错误。 当我试图运行它时,它会因消息而中断 问题出在哪里,怎么办? 以下是源代码:

  • 蓝牙模块用于建立模块与平板电脑、手机或makeblock蓝牙适配器之间的连接,也可通过连接移动电源或电脑等为其他模块供电。 净重量:11.3g 体积:24×48×14mm 参数 蓝牙版本:BT4.0 频带范围:2402~2480MHz 天线增益:1.5dBi 能耗等级:≤4dBm FCC ID:2AH9Q-NU001BT 抗跌落能力:1.5m 工作温度:-10℃~55℃ 工作湿度:<95% 特点

  • 概 述 蓝牙双模模块主要应用于短距离的数据无线传输领域,可以方便地和PC机、智能手机等无线终端上的蓝牙设备相连,避免繁琐的线缆连接和空间限制,可以直接替代USB数据线。本模块接口是蓝灰色标,说明是双数字接口与硬件串口,需要连接到Orion主板上5号接口(也可以连接到其它蓝色端口上,不过蓝色端口只能使用波特率为9600的串口通信)。 技术规格 工作电压:5V DC 工作频率:2.4GHz 波特率:1

  • 描述 这个蓝牙模块是专门为个人用户或家庭玩乐。您可以使用智能手机或电脑(支持蓝牙)通过此模块无线控制 mBot。 特点 Android 与 IOS App 提供给客户使用于不同场景中 适配 mBlock 图形化编程软件 规格 工作电压: 5V DC power; 版本: Bluetooth 2.0 and 4.0 compatible; 输出电压: 5V/high, 0V/low; 尺寸: 30m

  • 问题内容: 我知道有可能获得此问题的解决方案中所述的本地设备名称显示Android蓝牙设备名称 我想知道的是,我可以通过编程方式更改本地蓝牙名称(当我处于发现模式时,另一台设备会看到)。我知道您可以手动更改它,但是我正在编写应用程序,并且我希望能够更改名称(添加一个简单的标志),以便具有相同应用程序的其他设备可以扫描并立即知道手机是否还在运行该应用程序。 tl; dr:如何更改android上的蓝

  • 我已经在androidmanifest文件中设置了蓝牙权限。在上面的scand函数中,它应该显示已发现设备的列表,但它显示的是一个空对话框,只有标题。请告诉我如何正确使用startdiscovery和broadcastreceiver在AlertDialog中显示结果。