Merge change 24735 into eclair

* changes:
  Handle DisconnectRequested message sent by Bluez.
This commit is contained in:
Android (Google) Code Review
2009-09-11 15:24:01 -04:00
2 changed files with 22 additions and 0 deletions

View File

@@ -166,6 +166,17 @@ class BluetoothEventLoop {
mContext.sendBroadcast(intent, BLUETOOTH_PERM);
}
private void onDeviceDisconnectRequested(String deviceObjectPath) {
String address = mBluetoothService.getAddressFromObjectPath(deviceObjectPath);
if (address == null) {
Log.e(TAG, "onDeviceDisconnectRequested: Address of the remote device in null");
return;
}
Intent intent = new Intent(BluetoothDevice.ACTION_ACL_DISCONNECT_REQUESTED);
intent.putExtra(BluetoothDevice.EXTRA_DEVICE, mAdapter.getRemoteDevice(address));
mContext.sendBroadcast(intent, BLUETOOTH_PERM);
}
private void onCreatePairedDeviceResult(String address, int result) {
address = address.toUpperCase();
if (result == BluetoothDevice.BOND_SUCCESS) {

View File

@@ -45,6 +45,7 @@ static jmethodID method_onDeviceFound;
static jmethodID method_onDeviceDisappeared;
static jmethodID method_onDeviceCreated;
static jmethodID method_onDeviceRemoved;
static jmethodID method_onDeviceDisconnectRequested;
static jmethodID method_onCreatePairedDeviceResult;
static jmethodID method_onGetDeviceServiceChannelResult;
@@ -84,6 +85,8 @@ static void classInitNative(JNIEnv* env, jclass clazz) {
"(Ljava/lang/String;)V");
method_onDeviceCreated = env->GetMethodID(clazz, "onDeviceCreated", "(Ljava/lang/String;)V");
method_onDeviceRemoved = env->GetMethodID(clazz, "onDeviceRemoved", "(Ljava/lang/String;)V");
method_onDeviceDisconnectRequested = env->GetMethodID(clazz, "onDeviceDisconnectRequested",
"(Ljava/lang/String;)V");
method_onCreatePairedDeviceResult = env->GetMethodID(clazz, "onCreatePairedDeviceResult",
"(Ljava/lang/String;I)V");
@@ -815,6 +818,14 @@ static DBusHandlerResult event_filter(DBusConnection *conn, DBusMessage *msg,
str_array);
} else LOG_AND_FREE_DBUS_ERROR_WITH_MSG(&err, msg);
goto success;
} else if (dbus_message_is_signal(msg,
"org.bluez.Device",
"DisconnectRequested")) {
const char *remote_device_path = dbus_message_get_path(msg);
env->CallVoidMethod(nat->me,
method_onDeviceDisconnectRequested,
env->NewStringUTF(remote_device_path));
goto success;
}
ret = a2dp_event_filter(msg, env);