* Get the major, minor and servics classes of a remote device.
* These classes are encoded as a 32-bit integer. See BluetoothClass.
* @param address remote device
- * @return 32-bit class suitable for use with BluetoothClass.
+ * @return 32-bit class suitable for use with BluetoothClass, or
+ * BluetoothClass.ERROR on error
*/
public int getRemoteClass(String address) {
try {
package android.server;
+import android.bluetooth.BluetoothClass;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothError;
import android.bluetooth.BluetoothHeadset;
*/
public synchronized int getRemoteClass(String address) {
if (!BluetoothDevice.checkBluetoothAddress(address)) {
- mContext.enforceCallingOrSelfPermission(BLUETOOTH_PERM, "Need BLUETOOTH permission");
- return -1;
+ mContext.enforceCallingOrSelfPermission(BLUETOOTH_PERM, "Need BLUETOOTH permission");
+ return BluetoothClass.ERROR;
}
return getRemoteClassNative(address);
}
Log.d(TAG, msg);
}
}
-
namespace android {
+#define BLUETOOTH_CLASS_ERROR 0xFF000000
+
#ifdef HAVE_BLUETOOTH
// We initialize these variables when we load class
// android.server.BluetoothDeviceService
}
static jint getRemoteClassNative(JNIEnv *env, jobject object, jstring address) {
+ jint result = BLUETOOTH_CLASS_ERROR;
#ifdef HAVE_BLUETOOTH
LOGV(__FUNCTION__);
native_data_t *nat = get_native_data(env, object);
if (nat) {
- jint ret = 0;
const char *c_address = env->GetStringUTFChars(address, NULL);
LOGV("... address = %s", c_address);
DBusError err;
dbus_error_init(&err);
if (!dbus_message_get_args(reply, &err,
- DBUS_TYPE_UINT32, &ret,
+ DBUS_TYPE_UINT32, &result,
DBUS_TYPE_INVALID)) {
LOG_AND_FREE_DBUS_ERROR_WITH_MSG(&err, reply);
}
dbus_message_unref(reply);
}
-
- return ret;
}
#endif
- return 0;
+ return result;
}
static jbyteArray getRemoteFeaturesNative(JNIEnv *env, jobject object,