问题描述
权限
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.RECORD_AUDIO" /> (Optional)
以下是在以下Android 10设备上正常运行的代码。
boolean isRunning;
public class PhoneListener extends PhoneStateListener {
public void onCallStateChanged(int state,String incomingNumber) {
Log.i(TAG,"CallRecorder PhoneListener::onCallStateChanged state:" + state + " incomingNumber:");
switch (state) {
case TelephonyManager.CALL_STATE_IDLE:
Log.i(TAG,"CALL_STATE_IDLE");
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
if (!isPressedClose) {
if (moSharedPreferenceManager.isSpeakerOn()) {
AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
audioManager.setMode(AudioManager.MODE_NORMAL);
if (audioManager.isSpeakerphoneOn())
audioManager.setSpeakerphoneOn(fase);
}
isRunning = false;
handleRedial();
} else {
finish();
}
}
},3000);
break;
case TelephonyManager.CALL_STATE_RINGING:
Log.i(TAG," CALL_STATE_RINGING");
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
moSharedPreferenceManager.setResetCallOrAlert(true);
Log.i(TAG,"CALL_STATE_OFFHOOK");
if (moSharedPreferenceManager.isSpeakerOn()) {
new Thread() {
@Override
public void run() {
try {
while (!isRunning) {
isRunning = true;
sleep(1000);
//Activate loudspeaker
AudioManager audioManager = (AudioManager)
getSystemService(Context.AUDIO_SERVICE);
audioManager.setMode(AudioManager.MODE_IN_CALL);
audioManager.adjustVolume(AudioManager.ADJUST_RAISE,AudioManager.FLAG_PLAY_SOUND);
Log.i(TAG,"audioManager.isSpeakerphoneOn() : " + audioManager.isSpeakerphoneOn());
if (!audioManager.isSpeakerphoneOn())
audioManager.setSpeakerphoneOn(true);
break;
}
Log.i(TAG,"audioManager.isSpeakerphoneOn() running ");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}.start();
}
break;
}
}
}
尝试将应用置于前台,后台并从后台终止时。在任何情况下都不起作用
我已经检查了Google开发人员网站,但没有提及android 10限制或不起作用的内容。请咨询是否有线索。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)