Merge change 24735 into eclair
* changes: Handle DisconnectRequested message sent by Bluez.
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user