异常处理
App退到后台时,当前通话暂停
-
Android
onPause()里面调用pauseChannel()onResume()里面调用resumeChannel()
-
iOS
只要App在 Capabilities->Background Modes设置成OFF就可以,无需特殊处理。在退后台时通话会自动暂停,回到前台时通话会恢复。
App退到后台时,当前通话继续
-
Android
需要处理电话事件,否则电话和我们的语音会同时进行,处理步骤如下:
- Step 1: 把下面代码加到你们的MainActivity里面,并在
onCreate()里面调用initPhoneStateReceiver:
JAVA private static BroadcastReceiver mReceiver = null; public static void initPhoneStateReceiver(Context env) { mReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { try { String action = intent.getAction(); if (action.equals(TelephonyManager.ACTION_PHONE_STATE_CHANGED)) { String stateStr = intent.getExtras().getString(TelephonyManager.EXTRA_STATE); if(stateStr.equals(TelephonyManager.EXTRA_STATE_IDLE)){ api.resumeChannel(); else if(stateStr.equals(TelephonyManager.EXTRA_STATE_OFFHOOK)){ } else if(stateStr.equals(TelephonyManager.EXTRA_STATE_RINGING)){ api.pauseChannel(); } }catch (Throwable e) {e.printStackTrace();} } }; IntentFilter intenFilter = new IntentFilter(); intenFilter.addAction(TelephonyManager.ACTION_PHONE_STATE_CHANGED); env.registerReceiver(mReceiver, mFilter); }- Step 2: 在AndroidManifest.xml里面,添加如下的权限申请:
JAVA <uses-permission android:name="android.permission.READ_PHONE_STATE" />- Step 3: 当App的TARGET_LEVEL >= 23时,需要增加代码动态获取 READ_PHONE_STATE 权限。增加如下函数并调用它即可:
JAVA public static void requestReadPhoneStatePermission(Context context) { try { if ((Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) && (context != null) && (context instanceof Activity) && (context.getApplicationInfo().targetSdkVersion >= 23)) { int permission = ContextCompat.checkSelfPermission((Activity)context, Manifest.permission.READ_PHONE_STATE); if (permission != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions((Activity)mContext, new String[]{Manifest.permission.READ_PHONE_STATE}, 1); } } } catch (Throwable e) { e.printStackTrace(); } } - Step 1: 把下面代码加到你们的MainActivity里面,并在
-
iOS
只要App在 Capabilities->Background Modes设置成ON就可以,无需特殊处理。在退后台时通话不会中断。并且有电话来时,通话会自动暂停。当电话挂断时,通话会自动恢复。
