我正在使用电话应用程序,因此需要检查呼叫是移动电话还是IP。这项检查是在拨入电话还是在进行中的电话都没关系。我正在使用WhatsApp和Skype测试IP呼叫。
我看到另一个回答说要使用此方法:
public boolean isVoip(Context context){
AudioManager manager = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
return manager.getMode() == AudioManager.MODE_IN_COMMUNICATION;
}
但是,manager.getMode() == AudioManager.MODE_IN_CALL
既适用于移动电话,也适用于IP电话。
我还查看了TelephonyManager文档,并找到了getPhoneType()方法。
mTelephonyManager = (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE);
但是mTelephonyManager.getPhoneType()
返回TelephonyManager.PHONE_TYPE_GSM
而不是TelephonyManager.PHONE_TYPE_SIP
,即使在拨打/接听IP呼叫时,因此我认为getPhoneType()
返回当前设备的电话类型。