Here is my experiment!
I prepared two bluetooth devices, one is my ubuntu laptop and the other one is Android Dev Phone. I installed bluez version 4.32 in Ubuntu and bluez version 3.36 in Android. OBEX is like the client-server networking. The sending file one is a client and the receiving one is a server. For example, if I want to receive a file via bluetooth in Android Dev phone, I can run an OBEX data server and it would start to listen a channel for any incoming connections. If I want to send a file via bluetooth in Android Dev phone, I can use obex_test or obexftp to push data to another BT device.
Receiving file in Android Dev phone
> obexpushd -n -d
this command would start an OBEX data server with debug message, not detach from terminal, and the default channel is 9. Be aware of the file permission problem in Android! I run this command in /sdcard folder, and then it can store the incoming files in this folder with write permission.
Sending file from Android Dev phone
> obex_test -b OTHER_BT_ADDR CHANNEL
this command will build the connection betwen Android Dev phone and the other BT device. OTHER_BT_ADDRESS is the other BT device address and CHANNEL is its OBEX channel number.
Done! Listening to the music!
PS. source code is in google code temporally and I will move to gitorious site soon.