Bluetooth speeds and buffers

I have a bluetooth module, currently at it’s default of 9600 and I’m sending data to it from Android.

In the Android setup code, no where do I specify the baud rate. The code was copied from somewhere I forget:

BluetoothAdapter mBluetoothAdapter;
			BluetoothSocket mmSocket;
			BluetoothDevice mmDevice;
			mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

			if(!mBluetoothAdapter.isEnabled()) {
				Intent enableBluetooth = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
				startActivityForResult(enableBluetooth, 0);

			Set<BluetoothDevice> pairedDevices = mBluetoothAdapter.getBondedDevices();
			if(pairedDevices.size() > 0) {
				for(BluetoothDevice device : pairedDevices) {
					Log.v("BT2", "Device: " + device.getName());
					if(device.getName().equals("linvor")) {
						mmDevice = device;

			UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805f9b34fb"); //Standard SerialPortService ID
			try {
				mmSocket = mmDevice.createRfcommSocketToServiceRecord(uuid);

				mmOutputStream = mmSocket.getOutputStream();
				mmInputStream = mmSocket.getInputStream();

			} catch (IOException e) {
				// TODO Auto-generated catch block

What happens if the Android device tries to send data faster than the Arduino can read it? Options I can think of:

(1)The bluetooth stack on android knows the buffer isn’t being cleared at the other end, and the Android command to send data (OutputStream.write()) blocks until there is space in the remote buffer.
(2)Incoming data into the arduino buffer is dropped until there is space
(3)Old data in the arduino buffer is dropped and replaced with the new data

For the record, I’d like (3). I don’t mind losing data, but want the most recent data. Specifically in my case, it’s RGB values for LEDs - the phone is doing audio analysis and sending the values to the arduino.

Further research suggests that something like (1) occurs. Although so far, outputstream.write() doesn't block, the latency of android sending a byte, and it being received by the arduino increases as the programs runs. So far it's anything upto about 15seconds, so presumably data is being held in a buffer in the bluetooth stack on android until it can be sent.

Does anyone know how I can achieve (3)? I.e. the latest data gets queued on android to be sent, if it's still there when more data arrives then the old data gets dropped and the new data takes it's place.