在通话过程中是否会调用onPause
方法?
我有权使用READ_PHONE_STATE,这是我不想要的。那么,是否可以通过电话呼叫onPause方法,以便我可以在那里将我的应用音频静音?
private PhoneStateListener phoneStateListener = new PhoneStateListener() {
@Override
public void onCallStateChanged(int state, String incomingNumber) {
if (doesUserHavePermission()) {
if (state == TelephonyManager.CALL_STATE_RINGING) {
onPhoneCallInterrupt(); //Method I made that mutes audio for phone call
} else if (state == TelephonyManager.CALL_STATE_IDLE) {
} else if (state == TelephonyManager.CALL_STATE_OFFHOOK) {
onPhoneCallInterrupt(); //Method I made that mutes audio for phone call
}
}
}
};
这需要此权限:
我想摆脱它。所以我必须明确地听取电话吗?或者我可以在onPause()中静音吗?
以下是我的应用,您可以看到尝试下载的权限请求:
https://play.google.com/store/apps/details?id=com.culybrace.ruchir.buttonsmasher&hl=en
答案 0 :(得分:1)
根据我的经验,这取决于手机。 有2个案例。 当戒指来时 - >新的通话活动开始。 :在这种情况下调用onPause是因为新的Activity在您的应用上。 2.响铃时 - >环形窗口显示在应用程序上。(不是活动) :在这种情况下,不会调用任何活动回调。并且用户可以在响铃之前使用该应用程序。
您可以在未经许可的情况下使用AudioManager,请查看此信息 AUDIOFOCUS_LOSS called after a phone call in android
答案 1 :(得分:0)
如果您不知道该方法是否会被调用,您只需在模拟器/外部设备插入时按Shift + F9
即可使用调试功能,将调试器放在线路上您想查看它是否正常运行,请按F9
移至下一个调试器,按F8
移至下一行。