【问题标题】:Turn ON speaker in incoming call Android在来电Android中打开扬声器
【发布时间】:2013-04-17 19:37:26
【问题描述】:

我想打开扬声器并将其设置为最大音量。 在我的 PhoneStateListener 中,我正在拦截来电,它适用于任何来电/去电。

问题是我只想为两个特定的来电号码启用此功能。

这是我的代码:

    case TelephonyManager.CALL_STATE_OFFHOOK:
        if (incomingNumber.equals( strRegisterNumber1) || incomingNumber.equals( strRegisterNumber2))
        {
            AudioManager audioManager = (AudioManager) contextMember.getSystemService(Context.AUDIO_SERVICE);
            audioManager.setSpeakerphoneOn(true);
            audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC), 0);

        }
        break;

如果没有 if 语句,它可以正常工作,但在他的情况下,扬声器会保持关闭。

请告知我做错了什么或如何实现我的目标?

感谢您的帮助。

【问题讨论】:

  • 所以如果我理解正确,您的扬声器启用/设置音量代码正在工作 - 总是返回错误的是字符串比较?您是否尝试过记录所有三个字符串以查看它们包含的内容?
  • 是的。两串。这就是奇怪的事情。它们包含我想要的传入号码。我不明白这是问题所在。
  • 我稍后使用相同的 if 语句,它返回 true!

标签: java android audio speaker


【解决方案1】:

代替

incomingNumber.equals( strRegisterNumber1) || incomingNumber.equals( strRegisterNumber2) 

使用

incomingNumber.contains( strRegisterNumber1) || incomingNumber.contains( strRegisterNumber2)

因为传入的号码可能有+ 和国家代码或00 和国家代码。所以你只需要检查来电的号码是否包含所需的号码。

希望对你有帮助...

【讨论】:

  • 试过了。不用找了。还是谢谢。
  • 您是否在if 语句之前检查/打印/记录了incomingNumberstrRegisterNumber1strRegisterNumber2 的值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-05
  • 2017-04-20
  • 1970-01-01
  • 2015-01-02
  • 2022-12-05
  • 2015-03-30
相关资源
最近更新 更多