public void BroadcastUpdate (String action, BluetoothGattCharacteristic characteristic) 
		{
			Intent intent = new Intent (action);

			// This is special handling for the Heart Rate Measurement profile.  Data parsing is
			// carried out as per profile specifications:
			// http://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicViewer.aspx?u=org.bluetooth.characteristic.heart_rate_measurement.xml
			if (UUID_HEART_RATE_MEASUREMENT == (characteristic.Uuid)) {
				GattProperty flag = characteristic.Properties;
				GattFormat format = (GattFormat) (-1);

				if (((int) flag & 0x01) != 0) {
					format = GattFormat.Uint16;
					Log.Debug (TAG, "Heart rate format UINT16.");
				} else {
					format = GattFormat.Uint8;
					Log.Debug (TAG, "Heart rate format UINT8.");
				}

				var heartRate = characteristic.GetIntValue (format, 1);
				Log.Debug (TAG, String.Format ("Received heart rate: {0}", heartRate));
				intent.PutExtra (EXTRA_DATA, heartRate);
			} else {
				// For all other profiles, writes the data formatted in HEX.
				byte[] data = characteristic.GetValue ();

				if (data != null && data.Length > 0) {
					StringBuilder stringBuilder = new StringBuilder (data.Length);
					foreach (byte byteChar in data)
						stringBuilder.Append (String.Format ("{0}02X ", byteChar));
					intent.PutExtra (EXTRA_DATA, Convert.ToBase64String (data) + "\n" + stringBuilder.ToString());
				}
			}

			SendBroadcast (intent);
		}