Einzelnen Beitrag anzeigen

Geri

Registriert seit: 23. Nov 2004
Ort: Feldkirch
47 Beiträge
 
Delphi 2005 Personal
 
#8

AW: Bluethooth auf Android - recvmsg stuck

  Alt 7. Jun 2020, 16:40
Inzwischen habe ich Wakelock eingebaut, ich konnte (gefühlt) eine Besserung feststellen. Den Code fand ich im Internet. Nach einiger Zeit friert die App aber immer noch ein. Das kann nach einmal nach 5 Minuten, ein anderes mal nach 1 Stunde sein.

Delphi-Quellcode:
function GetPowerManager: JPowerManager;
var PowerServiceNative: JObject;
begin
  PowerServiceNative := TAndroidHelper.Context.getSystemService(TJContext.JavaClass.POWER_SERVICE);
  if not Assigned(PowerServiceNative) then
    raise Exception.Create('Could not locate Power Service');
  Result := TJPowerManager.Wrap((PowerServiceNative as ILocalObject).GetObjectID);
  if not Assigned(Result) then
    raise Exception.Create('Could not access Power Manager');
end;

var WakeLock: JPowerManager_WakeLock = nil;

function AcquireWakeLock(): Boolean;
var
  PowerManager: JPowerManager;
begin
  Result := Assigned(WakeLock);
  if not Result then
  begin
    PowerManager := GetPowerManager;
      WakeLock := PowerManager.newWakeLock(TJPowerManager.JavaClass.SCREEN_BRIGHT_WAKE_LOCK,
StringToJString('Delphi'));
    Result := Assigned(WakeLock);
  end;
  if Result then
  begin
    if not WakeLock.isHeld then
    begin
      WakeLock.acquire;
      Result := WakeLock.isHeld
    end;
  end;
end;

procedure ReleaseWakeLock;
begin
  if Assigned(WakeLock) then
  begin
    WakeLock.release;
    WakeLock := nil
  end;
end;
Im Debugger sehe ich, dass AcquireWakeLock true zurückliefert. Habe mit diversen Levels probiert.

https://stuff.mit.edu/afs/sipb/proje...FULL_WAKE_LOCK

Beste Grüße

Geri
Gerhard
  Mit Zitat antworten Zitat