diff --git a/src/com/android/telecomm/ConnectionServiceWrapper.java b/src/com/android/telecomm/ConnectionServiceWrapper.java
index f53eeb3..1bad6fd 100644
--- a/src/com/android/telecomm/ConnectionServiceWrapper.java
+++ b/src/com/android/telecomm/ConnectionServiceWrapper.java
@@ -76,6 +76,7 @@
     private static final int MSG_QUERY_REMOTE_CALL_SERVICES = 16;
     private static final int MSG_SET_CALL_VIDEO_PROVIDER = 17;
     private static final int MSG_SET_FEATURES = 18;
+    private static final int MSG_SET_AUDIO_MODE_IS_VOIP = 19;
 
     private final Handler mHandler = new Handler() {
         @Override
@@ -288,7 +289,7 @@
                     SomeArgs args = (SomeArgs) msg.obj;
                     try {
                         call = mCallIdMapper.getCall(args.arg1);
-                        int features = (int) args.arg2;
+                        int features = (int) args.argi1;
                         if (call != null) {
                             call.setFeatures(features);
                         }
@@ -297,6 +298,19 @@
                     }
                     break;
                 }
+                case MSG_SET_AUDIO_MODE_IS_VOIP: {
+                    SomeArgs args = (SomeArgs) msg.obj;
+                    try {
+                        call = mCallIdMapper.getCall(args.arg1);
+                        boolean isVoip = args.argi1 == 1;
+                        if (call != null) {
+                            call.setAudioModeIsVoip(isVoip);
+                        }
+                    } finally {
+                        args.recycle();
+                    }
+                    break;
+                }
             }
         }
     };
@@ -463,9 +477,19 @@
             mCallIdMapper.checkValidCallId(callId);
             SomeArgs args = SomeArgs.obtain();
             args.arg1 = callId;
-            args.arg2 = features;
+            args.argi1 = features;
             mHandler.obtainMessage(MSG_SET_FEATURES, args).sendToTarget();
         }
+
+        @Override
+        public void setAudioModeIsVoip(String callId, boolean isVoip) {
+            logIncoming("setAudioModeIsVoip %s %d", callId, isVoip);
+            mCallIdMapper.checkValidCallId(callId);
+            SomeArgs args = SomeArgs.obtain();
+            args.arg1 = callId;
+            args.argi1 = isVoip ? 1 : 0;
+            mHandler.obtainMessage(MSG_SET_AUDIO_MODE_IS_VOIP, args).sendToTarget();
+        }
     }
 
     private final Adapter mAdapter = new Adapter();
