Android 在应用程序之间发送实时数据而无延迟的最佳方式是什么

Android 在应用程序之间发送实时数据而无延迟的最佳方式是什么,android,unity3d,Android,Unity3d,在Android中,我有一个后台应用程序,它收集一些传感数据,进行处理,并将其作为意图发送到前台运行的Unity应用程序,该应用程序使用它来更新对象的变换。正如你可能猜到的,我需要每秒做60次。使用intent作为应用程序之间的通信方式,确实增加了Unity中转换的延迟和缓慢。有没有更好的方式在两个Android应用程序之间进行实时通信?如果时间是您最关心的,您应该使用TCP或UDP。但是,根据您正在制作的应用类型,UDP和TCP的功能可能有所不同: 如果您可以使用AIDL远程回调,那么您可以用

在Android中,我有一个后台应用程序,它收集一些传感数据,进行处理,并将其作为意图发送到前台运行的Unity应用程序,该应用程序使用它来更新对象的变换。正如你可能猜到的,我需要每秒做60次。使用intent作为应用程序之间的通信方式,确实增加了Unity中转换的延迟和缓慢。有没有更好的方式在两个Android应用程序之间进行实时通信?如果时间是您最关心的,您应该使用TCP或UDP。但是,根据您正在制作的应用类型,UDP和TCP的功能可能有所不同:


如果您可以使用AIDL远程回调,那么您可以用非常低的延迟来完成

第141页aidl回调解释了这一点


在我的例子中,我使用的是每秒1500次的频率,因此它仍然以非阻塞方式工作。

你不能发送没有延迟的数据。是的,这对我来说是一个很好的解决方案,Google play games(Google real time multiplayer),它主要基于房间的max 8播放器,它建立点对点连接,你可以发送TCP和UDP消息。但每秒的次数表示您正在从FixeUpdate功能发送消息。我建议您不要发送太快,每4帧发送一条消息(取决于您将如何进行网络同步),TCP可能会堆叠,您永远不会得到想要的结果。UDP更有效,无连接协议和消息可能会传递,也可能不会。无论如何,您必须进行一些网络同步。

这取决于数据的类型。你在发送什么数据?嗨,我只是发送一个json对象,带有一个模拟的Android运动事件和一个四元数值。TCP应该是fineHello,我终于在我的后台应用程序和Unity应用程序之间实现了UDP通信。我尝试了两种不同的方法:a)C#side上的UDP;b)Unity中的Android插件中的Java中的UDP。在这两种情况下,我都有很多延迟。我很惊讶UDP会导致延迟,因为它会丢弃数据包,但这就是我所经历的。有关于如何处理的提示吗?@arunyoganadan您好,虽然UDP比TCP快,因为它不需要响应,但是您仍然需要优化发送的包。一个更大的软件包肯定会导致更大的延迟。嗨,我按照你的例子,用AIDL构建了两个android应用程序,以接近1ms的延迟进行通信。虽然这看起来很有希望,但我正在努力将这一知识传授给Unity。您知道在Unity front上演示如何使用AIDL回调的资源吗?。我想这个链接应该会有帮助。试着调试这个