如何使用 Cortana 从 Windows 10 PC 上打开 Xbox One?

物联网 微软Windows 网络唤醒 微软-xbox 小娜
2021-05-29 02:06:58

Cortana是微软针对 Windows Phone 8.1、Microsoft Band 和 Windows 10 的智能个人助理。

我对某人如何使用 Cortana 语音命令打开他们的 Xbox One 感兴趣。不幸的是,当我搜索该主题时,我只找到了有关如何在 Xbox 本身上打开 Cortana 的文章。在我的情况下,Cortana 应该在我运行 Windows 10 的 PC 上收听。

如果可能的话,我想首先避免编写严肃的脚本等,我希望有更复杂的解决方案,因为所有这些都是 Microsoft 产品。

4个回答

Wake-on-LAN 对于 Xbox One 来说相对较新。此功能随 8 月更新一起发布。

幸运的是,您不必为自己编写解决方案的脚本。其他人已经为你完成了工作:

  • Xbox on by arcreative:来自 CLI 或 Node.JS 应用程序的 Xbox One 电源控制。
  • 的Xbox远程电源通过Schamper:一个脚本,可以把你的Xbox一上远程。

如果您有兴趣为自己找出一些东西,这篇技术网文章是必读的。

我必须承认,我有点失望,我无法找到一种完全集成的方法,可以通过装有 Windows 10 的 PC 或手机与 Xbox One 进行通信。毕竟 PC 和 Windows 手机都有 Xbox 应用程序。

'Teaching' Cortana 识别和执行自定义脚本已在此 Stack Overflow 答案中进行了解释

没有 Cortana

  1. 如果您的控制器已与 Xbox One 配对,请使用控制器上的 Xbox 按钮。

  2. 通过使用官方 Windows 10 Microsoft Xbox 应用程序。要完成这项工作,您必须按照以下步骤将 Xbox One 连接到 Windows 10 应用程序如果流式传输有效,则您的 Xbox One 已连接到您的 Windows 10 Xbox 应用程序。现在关闭您的 Xbox One。您仍应在 Windows 10 Xbox 应用程序中看到您的 Xbox。它现在还应该为您提供一个选项来打开您的 Xbox One,请参见下面的屏幕截图),然后就可以了!:)

注意:我仅在通过 LAN 连接的 Xbox One 上进行了此测试,Xbox One 配置为高能量模式并且使用 Windows 10 Xbox 应用程序版本 38.38.14002.00000。欢迎评论这是否适用于 WiFi 和低能耗设置。

屏幕截图(荷兰语):

在此处输入图片说明

使用 Cortana

我认为 Cortana 不支持通过自然地使用您的声音来唤醒您的 xbox,因此您需要一个第 3 方脚本或应用程序。脚本或应用程序应使用网络唤醒协议并以您的 xbox one MAC 地址为目标来唤醒它。这个人有一个关于 Cortana 唤醒他的电脑的视频,它也应该适用于你的 xbox 。

另一个可能需要研究的选项是将 IFTT 与 Cortana 集成和其他一些网络唤醒集成一起使用。是使用 Google Assistant 唤醒您的 xbox one 的示例。您可以在不编写任何脚本的情况下创建自己的工作小程序。

作为参考,这里有一些我编写的用于唤醒 Xbox One 的C#通用 Windows 平台(UWP) 代码:

public static async Task XboxWake(IPAddress ipAddress, string liveId, int retries = 5)
{
    using (var socket = new DatagramSocket())
    {
        var connectionProfile = Windows.Networking.Connectivity.NetworkInformation.GetInternetConnectionProfile();
        await socket.BindServiceNameAsync("", connectionProfile.NetworkAdapter);

        using (var stream = await socket.GetOutputStreamAsync(new HostName(ipAddress.ToString()), "5050"))
        {
            using (var writer = new DataWriter(stream))
            {
                for (int retry = 0; retry < retries; retry++)
                {
                    byte[] payload = new byte[3 + liveId.Length];
                    payload[0] = 0x00;
                    payload[1] = (byte)liveId.Length;

                    for (int i = 0; i < liveId.Length; i++)
                        payload[i + 2] = (byte)liveId[i];
                    payload[payload.Length - 1] = 0x00;

                    byte[] header = new byte[6];
                    header[0] = 0xdd;
                    header[1] = 0x02;
                    header[2] = 0x00;
                    header[3] = (byte)payload.Length;
                    header[4] = 0x00;
                    header[5] = 0x00;

                    using (var ms = new MemoryStream(header.Length + payload.Length))
                    {
                        ms.Write(header, 0, header.Length);
                        ms.Write(payload, 0, payload.Length);

                        writer.WriteBytes(ms.ToArray());
                    }
                    await writer.StoreAsync();

                    await Task.Delay(1000);
                }
            }
        }
    }
}

上述代码的 GitHub Gist 链接

我开发了一个名为 XBoot One 的(付费)应用程序,您可以使用它在 Android 和 Windows 中远程打开您的 Xbox。它尚未与 Cortana 集成,但将在未来版本中集成。

Play 商店链接

它将很快在 Microsoft Store 上架。