Android P通话界面不支持听筒音将听筒图标隐藏问题查看

Dialer中通话记录界面初始化:
packages/apps/Dialer / java/com/android/incallui/CallButtonPresenter.java

otherAccount = TelecomUtil.getOtherAccount(getContext(), call.getAccountHandle());
    boolean showSwapSim =
        otherAccount != null
            && !call.isVoiceMailNumber()
            && DialerCall.State.isDialing(call.getState())
            // Most devices cannot make calls on 2 SIMs at the same time.
            && InCallPresenter.getInstance().getCallList().getAllCalls().size() == 1;

    boolean enableAudio = true;
    if ((AudioModeProvider.getInstance().getAudioState().getSupportedRouteMask() & CallAudioState.ROUTE_BLUETOOTH)
            == CallAudioState.ROUTE_BLUETOOTH) {
      enableAudio = true;
    } else {
      enableAudio = false;
    }
    inCallButtonUi.enableButton(InCallButtonIds.BUTTON_AUDIO, enableAudio);
    inCallButtonUi.showButton(InCallButtonIds.BUTTON_AUDIO, true);
    inCallButtonUi.showButton(InCallButtonIds.BUTTON_SWAP, showSwap);
    inCallButtonUi.showButton(InCallButtonIds.BUTTON_HOLD, showHold);
    inCallButtonUi.setHold(isCallOnHold);
    inCallButtonUi.showButton(InCallButtonIds.BUTTON_MUTE, showMute);
    inCallButtonUi.showButton(InCallButtonIds.BUTTON_SWAP_SIM, showSwapSim);
    inCallButtonUi.showButton(InCallButtonIds.BUTTON_ADD_CALL, true);
    inCallButtonUi.enableButton(InCallButtonIds.BUTTON_ADD_CALL, showAddCall);
    inCallButtonUi.showButton(InCallButtonIds.BUTTON_UPGRADE_TO_VIDEO, showUpgradeToVideo);
    inCallButtonUi.showButton(InCallButtonIds.BUTTON_DOWNGRADE_TO_AUDIO, showDowngradeToAudio);

主要是判断没有连接蓝牙耳机时候,将听筒切换图标置灰处理;
此时如果又连接上蓝牙耳机,则需要将听筒图标设置为可操作状态;连接上蓝牙耳机后,必定会有音频通道的切换,故我们可以直接借用音频通道的切换端口进行设置操作;
普通通话界面的修改文件是:
packages/apps/Dialer / java/com/android/incallui/incall/impl/InCallFragment.java


  @Override
  public void setAudioState(CallAudioState audioState) {
    LogUtil.i("InCallFragment.setAudioState", "audioState: " + audioState);
    ((SpeakerButtonController) getButtonController(InCallButtonIds.BUTTON_AUDIO))
        .setAudioState(audioState);
    boolean enableAudio = true;
    if ((audioState.getSupportedRouteMask() & CallAudioState.ROUTE_BLUETOOTH)
            == CallAudioState.ROUTE_BLUETOOTH) {
      enableAudio = true;
    } else {
      enableAudio = false;
    }
    getButtonController(InCallButtonIds.BUTTON_AUDIO).setEnabled(enableAudio);
    getButtonController(InCallButtonIds.BUTTON_MUTE).setChecked(audioState.isMuted());
  }

视频通话界面的操作与此相同,只是文件不同,具体文件是:
packages/apps/Dialer / java/com/android/incallui/video/impl/VideoCallFragment.java
packages/apps/Dialer / java/com/android/incallui/video/impl/SurfaceViewVideoCallFragment.java

以上修改验证可以确定听筒图标的变化。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值