Jim McKeeth from Embarcadero has made the source code available (on Github) for a remote control vehicle app that uses Bluetooth for communication available. The code is for Delphi XE5 and AppMethod and runs on Android and probably Windows. Should also work with Delphi XE6 Firemonkey with not many changes. If you are interested in the full Bluetooth interface in Object Pascal for the Android SDK you should check out the Object Pascal Android SDK Interface project on Github. There are interface files for android.bluetooth.BluetoothAdapter, android.bluetooth.BluetoothDevice, and android.bluetooth.BluetoothServerSocket among others. Check out the documentation for Bluetooth on Android here. The app does not make use of Bluetooth discovery (but you could add that yourself) and instead has the MAC address of each device hard coded into. The code makes use of the TJBluetoothAdapter interface to the Android SDK for talking to Bluetooth. Here is some sample code for connecting to the Bluetooth vehicle with the app:
uses
Androidapi.JNI.BluetoothAdapter, Android.JNI.Toast, System.SysUtils;
function DoConnect(MACAddress: String; out istream: JInputstream;
out ostream: JOutputStream): Boolean;
var
uid: JUUID;
targetMAC: string;
Adapter: JBluetoothAdapter;
remoteDevice: JBluetoothDevice;
Sock: JBluetoothSocket;
begin
uid := TJUUID.JavaClass.fromString
(stringtojstring('00001101-0000-1000-8000-00805F9B34FB'));
targetMAC := MACAddress;
Adapter := TJBluetoothAdapter.JavaClass.getDefaultAdapter;
remoteDevice := Adapter.getRemoteDevice(stringtojstring(targetMAC));
Toast('Connecting to ' + targetMAC);
Sock := remoteDevice.createRfcommSocketToServiceRecord(uid);
try
Sock.connect;
except
Toast('Could not create service record!');
Exit(False);
end;
if not Sock.isConnected then
begin
Toast('Failed to connect to ' + targetMAC + '! Try again...');
Exit(False);
end;
Toast('Connected!');
ostream := Sock.getOutputStream; // record io streams
istream := Sock.getInputStream;
// Application.ProcessMessages;
ostream.write(ord(255)); //
ostream.write(ord(255)); // get device id (nur Chitanda)
Sleep(200);
Result := True;
end;
Jim has a blog post and some videos up where the app is explained and demonstrated. You can check that out here. Find out more about the remote control vehicle and where to buy one here.
Thank you VERY much for ANY information regarding bluetooth.
i guess we should wait for XE6000 to have bluetooth support…