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

MAUI环境下Android平板与Windows应用离线数据传输方案咨询

最优方案推荐:笔记本搭建本地热点+局域网TCP通信

直接选方案1,原因如下:

  • 方案3需要额外采购蓝牙适配器,还要适配驱动和MAUI蓝牙API,新手容易遇到兼容性问题,成本和操作复杂度都高
  • 方案2的“原始数据传输”(推测是USB直连等方式)涉及跨设备权限申请(比如Android的USB调试权限、文件访问权限),MAUI处理这类场景的API不够直观,踩坑概率大

方案1无需额外硬件,仅靠系统自带功能+简单的MAUI网络代码就能实现,是最适合新手的方案,具体实现步骤如下:

1. 搭建本地局域网

  • 在Windows笔记本上打开「设置-网络和互联网-移动热点」,开启热点并设置密码
  • 用Android平板连接这个热点,确保两台设备处于同一局域网(可通过Android终端APP ping Windows的局域网IP,能通即正常)

2. 实现Windows端(接收分数)

用TcpListener监听指定端口,接收并解析Android端发送的分数数据:

// Windows端代码(可放在MAUI的Windows项目或共享项目中)
using System.Net;
using System.Net.Sockets;
using System.Text.Json;

public async Task StartScoreReceiver()
{
    TcpListener listener = new TcpListener(IPAddress.Any, 8888);
    listener.Start();
    Console.WriteLine("等待Android设备连接...");

    while (true)
    {
        using TcpClient client = await listener.AcceptTcpClientAsync();
        using NetworkStream stream = client.GetStream();
        byte[] buffer = new byte[1024];
        int bytesRead = await stream.ReadAsync(buffer, 0, buffer.Length);
        
        // 解析JSON格式的分数数据
        string jsonData = System.Text.Encoding.UTF8.GetString(buffer, 0, bytesRead);
        MatchScore? score = JsonSerializer.Deserialize<MatchScore>(jsonData);
        
        if (score != null)
        {
            // 处理接收到的分数(比如显示到UI)
            foreach (var player in score.Players)
            {
                Console.WriteLine($"玩家:{player.Name},分数:{player.Score}");
            }
        }
    }
}

// 定义分数数据类
public class MatchScore
{
    public List<PlayerScore> Players { get; set; } = new();
}

public class PlayerScore
{
    public string Name { get; set; } = string.Empty;
    public int Score { get; set; }
}

注意:需要在Windows防火墙中允许应用访问8888端口,或临时关闭防火墙测试。

3. 实现Android端(发送分数)

用TcpClient连接Windows设备的局域网IP和端口,序列化分数数据后发送:

// Android端代码(可放在MAUI的Android项目或共享项目中)
using System.Net.Sockets;
using System.Text.Json;

public async Task SendScore(MatchScore score)
{
    // 替换为你的Windows笔记本局域网IP(通过cmd输入ipconfig查看)
    string windowsIp = "192.168.137.1";
    int port = 8888;

    using TcpClient client = new TcpClient();
    await client.ConnectAsync(windowsIp, port);
    using NetworkStream stream = client.GetStream();

    // 序列化为JSON字符串
    string jsonData = JsonSerializer.Serialize(score);
    byte[] data = System.Text.Encoding.UTF8.GetBytes(jsonData);
    
    await stream.WriteAsync(data, 0, data.Length);
    Console.WriteLine("分数已发送");
}

注意:需要在Android项目的AndroidManifest.xml中添加互联网权限:

<uses-permission android:name="android.permission.INTERNET" />

新手注意事项

  • 确认Windows设备的局域网IP:打开cmd输入ipconfig,找到“移动热点”对应的网卡IPv4地址
  • 测试时先运行Windows端的接收代码,再启动Android端发送
  • 如果连接失败,优先检查防火墙设置和IP地址是否正确

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.02 01:44:52