2014-09-06 41 views
1

用Delphi XE6如何關閉與應用共享連接在安卓

我有這些代碼:

procedure TMainForm.FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char; 
    Shift: TShiftState); 
var 
    FService : IFMXVirtualKeyboardService; 
begin 
    if Key = vkHardwareBack then 
    begin 
    TPlatformServices.Current.SupportsPlatformService(IFMXVirtualKeyboardService, IInterface(FService)); 
    if TVirtualKeyBoardState.Visible in FService.GetVirtualKeyBoardState then 
    begin 
     FService.HideVirtualKeyboard; 
    end else 
    begin 
     if TabControl1.ActiveTab = TabItem2 then 
     begin 
     TabControl1.ActiveTab := TabItem1; 
     Key := 0; 
     end else 
     begin 
     Self.Hide; 
     MainActivity.Finish; 
     Application.MainForm.DisposeOf; 
     Key := 0; 
     end; 
    end; 
    end; 
end; 

procedure TMainForm.ConnectButtonClick(Sender: TObject); 
begin 
    TetheringManager1.Enabled:=True; 
    TetheringAppProfile1.Enabled:=True; 
    TetheringManager1.AutoConnect(3000); 
end; 

隨着硬件後退按鈕Android應用程序關閉時TetheringManager和TetheringAppProfiler未啓用,而不是/打開好嗎連接的。但是,當連接,然後Android應用程序不能正確關閉,並不正確打開(我只看到黑屏,但下一次的應用程序打開好吧)。 有什麼辦法可以斷開tethering?

+0

看來,當TetheringAppProfile已連接到TetheringM通過TetheringAppProfile1.Manager進行註冊,然後在處理硬件返回按鈕時可以得到分段錯誤(11)。當它發生時,它指向GStack.Disconnect。 – mhieta 2014-09-24 04:53:19

回答

0

使用這些:

procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction); 
var 
    I: Integer; 
begin 
    for I := TetheringManager1.PairedManagers.Count - 1 downto 0 do 
    TetheringManager1.UnPairManager(TetheringManager1.PairedManagers[I]); 
end; 

procedure TMainForm.FormDestroy(Sender: TObject); 
begin 
    TetheringAppProfile1.Enabled:=False; 
    TetheringManager1.Enabled:=False; 
end; 

有了:

if Key = vkHardwareBack then 
    begin 
    if TabControl1.ActiveTab = TabItem2 then 
    begin 
     Key := 0; 
     TabControl1.ActiveTab := TabItem1; 
    end; 
    end; 

而且簡單的重新連接時:

TetheringAppProfile1.Enabled:=True; 
    TetheringManager1.Enabled:=True; 

我沒有問題了:)