I've resolved the problem with below structure;
First you should (you can do it later as well) define the UUIDs of both Service and Characteristics of the device
const
SERVICE : TGUID = '{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}';
CHARACT : TGUID = '{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}';
and define the device and its characteristic that you would like to use
Device : TBluetoothLEDevice;
FCharacteristic: TBluetoothGattCharacteristic;
then you need to get access coarse location to get scan working (I did it on FormCreate)
{$IFDEF ANDROID}
FLocationPermission := JStringToString(TJManifest_permission.JavaClass.ACCESS_COARSE_LOCATION);
{$ENDIF}
then, you need to execute PermissionsService
PermissionsService.RequestPermissions([FLocationPermission], RequestPermissionsResult, DisplayRationale);
NOTE: You can find these codes and more on Delphi sample app (placed under ..\Embarcadero\Studio\20.0\Samples\Object Pascal\Multi-Device Samples\Device Sensors and Services\Bluetooth\BLEScanner)
after accessing all permissions (and discovering the device) you need to write to the characteristic that you want to use;
FCharacteristic:= Device.GetService(SERVICE).GetCharacteristic(CHARACT);
FCharacteristic.SetValueAsString(RawByteString('command'));
Device.WriteCharacteristic(CHARACT);
IMOPRTANT : Because of Embarcadero disables Ansichar and AnsiString in mobile compilers. (additional info in here and here) either you need to use TBytes or get Ansi support back with this magnificent library (so you can send any command to any 8-Bit IoT device (like most of them)). Rest of them is done by MCU.