这是文件上说的,但我不能完全理解。
/* modes for setMode/getMode/setRoute/getRoute */
/**
* Audio harware modes.
*/
/**
* Invalid audio mode.
*/
public static final int MODE_INVALID = AudioSystem.MODE_INVALID;
/**
* Current audio mode. Used to apply audio routing to current mode.
*/
public static final int MODE_CURRENT = AudioSystem.MODE_CURRENT;
/**
* Normal audio mode: not ringing and no call established.
*/
public static final int MODE_NORMAL = AudioSystem.MODE_NORMAL;
/**
* Ringing audio mode. An incoming is being signaled.
*/
public static final int MODE_RINGTONE = AudioSystem.MODE_RINGTONE;
/**
* In call audio mode. A telephony call is established.
*/
public static final int MODE_IN_CALL = AudioSystem.MODE_IN_CALL;
/**
* In communication audio mode. An audio/video chat or VoIP call is established.
*/
public static final int MODE_IN_COMMUNICATION = AudioSystem.MODE_IN_COMMUNICATION;
/**
* Call screening in progress. Call is connected and audio is accessible to call
* screening applications but other audio use cases are still possible.
*/
public static final int MODE_CALL_SCREENING = AudioSystem.MODE_CALL_SCREENING;你能用例子解释一下吗?
目前,我在WebView上使用视频聊天服务,我得到了MODE_CALL_SCREENING,它使用媒体音量,它应该使用“呼叫”音量。我怎么能强迫它?
发布于 2022-01-10 08:28:01
MODE_IN_CALL
你是通过只打音频电话(普通电话)与某人交谈的。
MODE_IN_COMMUNICATION
你是视频和音频,和你的朋友聊天,或者在VoIP上给他们打电话
MODE_CALL_SCREENING
你的电话响了,你在接电话之前先检查一下号码。
发布于 2022-01-17 05:40:18
模式参数在AudioSystem类中定义,以设置电话的状态。
MODE_IN_CALL:来电模式。一个电话已经确定了。
Constant Value: 2 (0x00000002)
public static final int MODE_IN_CALL
private void setAudioNormal() {
AudioManager audioManager = (AudioManager)mContext.getSystemService(Context.AUDIO_SERVICE);
audioManager.setMode(AudioManager.MODE_NORMAL);
audioManager.setSpeakerphoneOn(false);
}
}另一个例子
import android.media.AudioManager;
public void startOutgoingRinger(OutgoingRinger.Type type) {
AudioManager audioManager = ServiceUtil.getAudioManager(context);
audioManager.setMicrophoneMute(false);
if (type == OutgoingRinger.Type.SONAR) {
audioManager.setSpeakerphoneOn(false);
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
} else {
audioManager.setMode(AudioManager.MODE_IN_CALL);
}
outgoingRinger.start(type);
}通信音频模式下的MODE_IN_COMMUNICATION:。建立音频/视频聊天或VoIP通信。
Constant Value: 3 (0x00000003)
public static final int MODE_IN_COMMUNICATION
private void chooseVoiceMode() {
AudioManager audioManager = (AudioManager)mContext.getSystemService(Context.AUDIO_SERVICE);
if(mAudioConfiguration.aec) {
audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
audioManager.setSpeakerphoneOn(true);
} else {
audioManager.setMode(AudioManager.MODE_NORMAL);
audioManager.setSpeakerphoneOn(false);
}
}MODE_CALL_SCREENING:呼叫筛选正在进行中。有一个呼叫连接,但音频没有使用。呼叫筛选:这是识别来电者的过程,提供有关来电者的信息,并确定如何最好地响应该呼叫。
Constant Value: 4 (0x00000004)
public static final int MODE_CALL_SCREENING
public int getMode() {
final IAudioService service = getService();
try {
int mode = service.getMode();
int sdk;
try {
sdk = getContext().getApplicationInfo().targetSdkVersion;
} catch (NullPointerException e) {
// some tests don't have a Context
sdk = Build.VERSION.SDK_INT;
}
if (mode == MODE_CALL_SCREENING && sdk <= Build.VERSION_CODES.Q) {
mode = MODE_IN_CALL;
}
return mode;
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
}https://stackoverflow.com/questions/69654954
复制相似问题