Loading src/com/android/settings/bluetooth/BluetoothPairingService.java +119 −102 Original line number Diff line number Diff line Loading @@ -39,14 +39,15 @@ public final class BluetoothPairingService extends Service { private static final int NOTIFICATION_ID = android.R.drawable.stat_sys_data_bluetooth; private static final String ACTION_DISMISS_PAIRING = "com.android.settings.bluetooth.ACTION_DISMISS_PAIRING"; private static final String TAG = "BluetoothPairingService"; private BluetoothDevice mDevice; public static Intent getPairingDialogIntent(Context context, Intent intent) { BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); int type = intent.getIntExtra(BluetoothDevice.EXTRA_PAIRING_VARIANT, BluetoothDevice.ERROR); Intent pairingIntent = new Intent(); Loading Loading @@ -76,9 +77,15 @@ public final class BluetoothPairingService extends Service { if ((bondState != BluetoothDevice.BOND_NONE) && (bondState != BluetoothDevice.BOND_BONDED)) { return; } Log.d(TAG, "Dismiss pairing for " + mDevice.getAddress() + " (" + mDevice.getName() + "), BondState: " + bondState); } else if (action.equals(ACTION_DISMISS_PAIRING)) { Log.d(TAG, "Notification cancel " + mDevice.getAddress() + " (" + mDevice.getName() + ")"); mDevice.cancelPairingUserInput(); } else { Log.d(TAG, "Dismiss pairing for " + mDevice.getAddress() + " (" + mDevice.getName() + "), Cancelled."); int bondState = intent.getIntExtra(BluetoothDevice.EXTRA_BOND_STATE, BluetoothDevice.ERROR); Log.d(TAG, "Dismiss pairing for " + mDevice.getAddress() + " (" + mDevice.getName() + "), BondState: " + bondState); } stopForeground(true); stopSelf(); Loading @@ -102,12 +109,15 @@ public final class BluetoothPairingService extends Service { .setSmallIcon(android.R.drawable.stat_sys_data_bluetooth) .setTicker(res.getString(R.string.bluetooth_notif_ticker)); PendingIntent pending = PendingIntent.getActivity(this, 0, PendingIntent pairIntent = PendingIntent.getActivity(this, 0, getPairingDialogIntent(this, intent), PendingIntent.FLAG_ONE_SHOT); PendingIntent dismissIntent = PendingIntent.getBroadcast(this, 0, new Intent(ACTION_DISMISS_PAIRING), PendingIntent.FLAG_ONE_SHOT); mDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); if (mDevice.getBondState() != BluetoothDevice.BOND_BONDING) { if (mDevice != null && mDevice.getBondState() != BluetoothDevice.BOND_BONDING) { Log.w(TAG, "Device " + mDevice + " not bonding: " + mDevice.getBondState()); stopSelf(); return START_NOT_STICKY; Loading @@ -116,20 +126,28 @@ public final class BluetoothPairingService extends Service { String name = intent.getStringExtra(BluetoothDevice.EXTRA_NAME); if (TextUtils.isEmpty(name)) { BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); name = device != null ? device.getAliasName() : getString(android.R.string.unknownName); name = device != null ? device.getAliasName() : res.getString(android.R.string.unknownName); } Log.d(TAG, "Show pairing notification for " + mDevice.getAddress() + " (" + name + ")"); Notification.Action pairAction = new Notification.Action.Builder(0, res.getString(R.string.bluetooth_device_context_pair_connect), pairIntent).build(); Notification.Action dismissAction = new Notification.Action.Builder(0, res.getString(android.R.string.cancel), dismissIntent).build(); builder.setContentTitle(res.getString(R.string.bluetooth_notif_title)) .setContentText(res.getString(R.string.bluetooth_notif_message, name)) .setContentIntent(pending) .setContentIntent(pairIntent) .setDefaults(Notification.DEFAULT_SOUND) .setColor(getColor(com.android.internal.R.color.system_notification_accent_color)); .setColor(getColor(com.android.internal.R.color.system_notification_accent_color)) .addAction(pairAction) .addAction(dismissAction); IntentFilter filter = new IntentFilter(); filter.addAction(BluetoothDevice.ACTION_BOND_STATE_CHANGED); filter.addAction(BluetoothDevice.ACTION_PAIRING_CANCEL); filter.addAction(ACTION_DISMISS_PAIRING); registerReceiver(mCancelReceiver, filter); mRegistered = true; Loading @@ -151,5 +169,4 @@ public final class BluetoothPairingService extends Service { // No binding. return null; } } Loading
src/com/android/settings/bluetooth/BluetoothPairingService.java +119 −102 Original line number Diff line number Diff line Loading @@ -39,14 +39,15 @@ public final class BluetoothPairingService extends Service { private static final int NOTIFICATION_ID = android.R.drawable.stat_sys_data_bluetooth; private static final String ACTION_DISMISS_PAIRING = "com.android.settings.bluetooth.ACTION_DISMISS_PAIRING"; private static final String TAG = "BluetoothPairingService"; private BluetoothDevice mDevice; public static Intent getPairingDialogIntent(Context context, Intent intent) { BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); int type = intent.getIntExtra(BluetoothDevice.EXTRA_PAIRING_VARIANT, BluetoothDevice.ERROR); Intent pairingIntent = new Intent(); Loading Loading @@ -76,9 +77,15 @@ public final class BluetoothPairingService extends Service { if ((bondState != BluetoothDevice.BOND_NONE) && (bondState != BluetoothDevice.BOND_BONDED)) { return; } Log.d(TAG, "Dismiss pairing for " + mDevice.getAddress() + " (" + mDevice.getName() + "), BondState: " + bondState); } else if (action.equals(ACTION_DISMISS_PAIRING)) { Log.d(TAG, "Notification cancel " + mDevice.getAddress() + " (" + mDevice.getName() + ")"); mDevice.cancelPairingUserInput(); } else { Log.d(TAG, "Dismiss pairing for " + mDevice.getAddress() + " (" + mDevice.getName() + "), Cancelled."); int bondState = intent.getIntExtra(BluetoothDevice.EXTRA_BOND_STATE, BluetoothDevice.ERROR); Log.d(TAG, "Dismiss pairing for " + mDevice.getAddress() + " (" + mDevice.getName() + "), BondState: " + bondState); } stopForeground(true); stopSelf(); Loading @@ -102,12 +109,15 @@ public final class BluetoothPairingService extends Service { .setSmallIcon(android.R.drawable.stat_sys_data_bluetooth) .setTicker(res.getString(R.string.bluetooth_notif_ticker)); PendingIntent pending = PendingIntent.getActivity(this, 0, PendingIntent pairIntent = PendingIntent.getActivity(this, 0, getPairingDialogIntent(this, intent), PendingIntent.FLAG_ONE_SHOT); PendingIntent dismissIntent = PendingIntent.getBroadcast(this, 0, new Intent(ACTION_DISMISS_PAIRING), PendingIntent.FLAG_ONE_SHOT); mDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); if (mDevice.getBondState() != BluetoothDevice.BOND_BONDING) { if (mDevice != null && mDevice.getBondState() != BluetoothDevice.BOND_BONDING) { Log.w(TAG, "Device " + mDevice + " not bonding: " + mDevice.getBondState()); stopSelf(); return START_NOT_STICKY; Loading @@ -116,20 +126,28 @@ public final class BluetoothPairingService extends Service { String name = intent.getStringExtra(BluetoothDevice.EXTRA_NAME); if (TextUtils.isEmpty(name)) { BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); name = device != null ? device.getAliasName() : getString(android.R.string.unknownName); name = device != null ? device.getAliasName() : res.getString(android.R.string.unknownName); } Log.d(TAG, "Show pairing notification for " + mDevice.getAddress() + " (" + name + ")"); Notification.Action pairAction = new Notification.Action.Builder(0, res.getString(R.string.bluetooth_device_context_pair_connect), pairIntent).build(); Notification.Action dismissAction = new Notification.Action.Builder(0, res.getString(android.R.string.cancel), dismissIntent).build(); builder.setContentTitle(res.getString(R.string.bluetooth_notif_title)) .setContentText(res.getString(R.string.bluetooth_notif_message, name)) .setContentIntent(pending) .setContentIntent(pairIntent) .setDefaults(Notification.DEFAULT_SOUND) .setColor(getColor(com.android.internal.R.color.system_notification_accent_color)); .setColor(getColor(com.android.internal.R.color.system_notification_accent_color)) .addAction(pairAction) .addAction(dismissAction); IntentFilter filter = new IntentFilter(); filter.addAction(BluetoothDevice.ACTION_BOND_STATE_CHANGED); filter.addAction(BluetoothDevice.ACTION_PAIRING_CANCEL); filter.addAction(ACTION_DISMISS_PAIRING); registerReceiver(mCancelReceiver, filter); mRegistered = true; Loading @@ -151,5 +169,4 @@ public final class BluetoothPairingService extends Service { // No binding. return null; } }