До этого Вы писали что у Вас Delphi зависает. Я выше привел код для конструктора и деструктора.
После этого зависание осталось? Проверьте при выбранных платформах Windows и Android.
p.s.
Переделал ваш код, но под платформой андроид не смотрел, т.к. она отсутствует, но запуститься по идее должно
unit BATTERY;
interface
uses
{$IFDEF ANDROID}
AndroidAPI.Helpers,
AndroidAPI.JNI.GraphicsContentViewText,
{$ENDIF}
System.SysUtils, System.Classes;
type
TBattery = class(TComponent)
private
public
{ Public declarations }
Constructor Create(AOwner: TComponent); override;
Destructor Destroy; override;
function GetBatteryPercent: string;
procedure SetBatteryPercent(Value: string);
{$IFDEF ANDROID}
function BatteryPercent(const aContext: JContext): integer;
{$ENDIF}
published
{ Published declarations }
property Battery: string read GetBatteryPercent write SetBatteryPercent;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('ARION', [TBattery]);
end;
{ TBattery }
{$IFDEF ANDROID}
function TBattery.BatteryPercent(const aContext: JContext): integer;
var
filter: JIntentFilter;
Battery: JIntent;
begin
filter := TJIntentFilter.Create;
filter.addAction(TJIntent.JavaClass.ACTION_BATTERY_CHANGED);
Battery := aContext.registerReceiver(NIL, filter);
result := Battery.getIntExtra(StringToJString('level'), -1);
end;
{$ENDIF}
constructor TBattery.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
end;
destructor TBattery.Destroy;
begin
inherited Destroy;
end;
function TBattery.GetBatteryPercent: string;
{$IFDEF ANDROID}
var
myContext: JContext;
{$ENDIF}
begin
result := 'N/A';
{$IFDEF ANDROID}
if not(csDesigning in ComponentState) then
begin
myContext := SharedActivityContext;
result := (BatteryPercent(myContext).ToString);
end;
{$ENDIF}
end;
procedure TBattery.SetBatteryPercent(Value: string);
begin
{$IFDEF ANDROID}
{$ENDIF}
end;
end.