diff --git a/jni/com_android_bluetooth_btservice_AdapterService.cpp b/jni/com_android_bluetooth_btservice_AdapterService.cpp
index ea765b5..f780364 100644
--- a/jni/com_android_bluetooth_btservice_AdapterService.cpp
+++ b/jni/com_android_bluetooth_btservice_AdapterService.cpp
@@ -900,7 +900,7 @@
     return result;
 }
 
-static jboolean isConnectedNative(JNIEnv* env, jobject obj, jbyteArray address) {
+static int getConnectionStateNative(JNIEnv* env, jobject obj, jbyteArray address) {
     ALOGV("%s:",__FUNCTION__);
     if (!sBluetoothInterface) return JNI_FALSE;
 
@@ -913,7 +913,7 @@
     int ret = sBluetoothInterface->get_connection_state((bt_bdaddr_t *)addr);
     env->ReleaseByteArrayElements(address, addr, 0);
 
-    return (ret != 0 ? JNI_TRUE : JNI_FALSE);
+    return ret;
 }
 
 static jboolean pinReplyNative(JNIEnv *env, jobject obj, jbyteArray address, jboolean accept,
@@ -1231,7 +1231,7 @@
     {"createBondNative", "([BI)Z", (void*) createBondNative},
     {"removeBondNative", "([B)Z", (void*) removeBondNative},
     {"cancelBondNative", "([B)Z", (void*) cancelBondNative},
-    {"isConnectedNative", "([B)Z", (void*) isConnectedNative},
+    {"getConnectionStateNative", "([B)I", (void*) getConnectionStateNative},
     {"pinReplyNative", "([BZI[B)Z", (void*) pinReplyNative},
     {"sspReplyNative", "([BIZI)Z", (void*) sspReplyNative},
     {"getRemoteServicesNative", "([B)Z", (void*) getRemoteServicesNative},
diff --git a/src/com/android/bluetooth/btservice/AdapterService.java b/src/com/android/bluetooth/btservice/AdapterService.java
index 404ea6d..190be11 100644
--- a/src/com/android/bluetooth/btservice/AdapterService.java
+++ b/src/com/android/bluetooth/btservice/AdapterService.java
@@ -871,12 +871,10 @@
             return service.getBondState(device);
         }
 
-        public boolean isConnected(BluetoothDevice device) {
+        public int getConnectionState(BluetoothDevice device) {
             AdapterService service = getService();
-            if (service == null) {
-                return false;
-            }
-            return service.isConnected(device);
+            if (service == null) return 0;
+            return service.getConnectionState(device);
         }
 
         public String getRemoteName(BluetoothDevice device) {
@@ -1475,10 +1473,10 @@
         return deviceProp.getBondState();
     }
 
-    boolean isConnected(BluetoothDevice device) {
+    int getConnectionState(BluetoothDevice device) {
         enforceCallingOrSelfPermission(BLUETOOTH_PERM, "Need BLUETOOTH permission");
         byte[] addr = Utils.getBytesFromAddress(device.getAddress());
-        return isConnectedNative(addr);
+        return getConnectionStateNative(addr);
     }
 
      String getRemoteName(BluetoothDevice device) {
@@ -1891,7 +1889,7 @@
     /*package*/ native boolean removeBondNative(byte[] address);
     /*package*/ native boolean cancelBondNative(byte[] address);
 
-    /*package*/ native boolean isConnectedNative(byte[] address);
+    /*package*/ native int getConnectionStateNative(byte[] address);
 
     private native boolean startDiscoveryNative();
     private native boolean cancelDiscoveryNative();
