You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Delphi 10.2.2中通过蓝牙实现App Tethering功能?

解决Delphi Tokyo 10.2.2 App Tethering蓝牙连接问题

我之前在Delphi Tokyo里折腾App Tethering蓝牙连接时也遇到过类似的困境,官方文档确实说得太笼统了。结合我踩过的坑,给你整理一套可行的步骤,应该能帮你搞定:

一、先搞定系统层面的蓝牙配对与权限

  • 确保Windows和Android设备的蓝牙都已开启,并且完成系统级配对(这是关键!很多人忽略了这一步,直接在App里折腾只会白费功夫)。配对后可以在系统蓝牙设置里确认设备已连接。
  • Windows端:检查防火墙是否允许你的应用程序通过蓝牙通信。可以手动添加入站/出站规则,允许你的exe文件使用蓝牙协议;如果是给客户部署,建议在安装脚本里自动创建这条规则,避免客户误删。
  • Android端:在AndroidManifest.xml里必须添加以下权限(Delphi Tokyo不会自动帮你加全):
    <uses-permission android:name="android.permission.BLUETOOTH" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    
    注意:Android 6.0+还需要在App运行时动态申请位置权限,因为蓝牙扫描依赖位置服务。

二、Delphi项目中的组件配置与代码调整

  1. 组件添加:在Windows和Android的Form上都添加TTetheringManager、TTetheringAppProfile(如果需要共享数据/调用方法),然后分别添加TTetheringBluetoothAdapter。
  2. 初始化蓝牙适配器:在Form的创建事件里初始化并启用蓝牙适配器,示例代码如下:
    procedure TMainForm.FormCreate(Sender: TObject);
    var
      BluetoothAdapter: TTetheringBluetoothAdapter;
    begin
      // 检查蓝牙是否被支持
      if TTetheringBluetoothAdapter.IsSupported then
      begin
        BluetoothAdapter := TTetheringBluetoothAdapter.Create(nil);
        // 添加到TetheringManager的适配器列表
        TetheringManager1.CommunicationManager.Adapters.Add(BluetoothAdapter);
        // 开启自动连接与设备发现
        TetheringManager1.AutoConnect := True;
        TetheringManager1.DiscoverManagers;
      end
      else
      begin
        ShowMessage('当前设备不支持蓝牙连接');
      end;
    end;
    
  3. 调试事件:给TetheringManager1的OnManagerDiscovered事件加个处理函数,用来确认是否检测到对方设备:
    procedure TMainForm.TetheringManager1ManagerDiscovered(Sender: TObject;
      const AManagerInfo: TTetheringManagerInfo);
    begin
      ShowMessage('发现设备:' + AManagerInfo.ManagerName);
    end;
    

三、常见坑点排查

  • 如果TTetheringBluetoothAdapter.IsSupported返回False:Windows端可能是蓝牙驱动未正确安装,或者设备蓝牙被禁用;Android端可能是设备不支持蓝牙,或者权限未配置全。
  • 设备已配对但无法发现:试着在系统蓝牙设置里手动连接一次设备,再重启App;Delphi Tokyo的蓝牙发现有时需要一点延迟,可以在DiscoverManagers前加个短暂的延时(比如Sleep(1000))。
  • 蓝牙连接不稳定:尽量避免在蓝牙信号弱的环境测试,另外Delphi Tokyo的App Tethering蓝牙模块有小bug,遇到连接中断可以尝试重启TetheringManager:TetheringManager1.StopDiscovery; TetheringManager1.DiscoverManagers;

内容的提问来源于stack exchange,提问作者MichaSchumann

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 08:09:30