Android(C#) - 传入udp广播的服务

时间:2017-08-10 15:49:07

标签: c# android service broadcast wakelock

我对Android编程很陌生,这就是我需要你的建议的原因。

现状:
我构建了一个Android应用程序(C#)以及在Raspberry Pi上运行的常规服务器应用程序(C ++)。两个程序都通过UDP进行通信在服务器应用程序收到信号时,它会发出Android应用程序正在侦听的广播消息。在Android设备入睡/闲置的那一刻,一切正常,这导致了我的问题。

问题:
我怎样才能实现Android应用程序'当设备入睡时,听众仍然有效吗?我不期望任何解决方案,但任何建议,所以我不会浪费时间与错误的方法。

研究
- 我阅读并尝试了将继续在后台运行的服务,但是当设备进入睡眠状态时服务也停止了 - 我读到了广播接收器,它允许应用程序/服务获得系统的更多信息 - 我读到了WAKELOCK,它允许我保持CPU活着,但为了我的目的,它应该一直在上升'这会消耗很多能量。

我想在后台运行的代码:

public void AsyncReceive()
{
    // ...
    Task.Run(() =>
    {
        while (this.isActive)
        { 
            byte[] buffer = new byte[1];
            DatagramPacket incoming = new DatagramPacket(buffer,  
            buffer.Length);

            try
            {
                sock.Receive(incoming);
            }
            catch (...)
            {
                // Exception handling goes here...
            }

            // Communicate with the Android application
            this.FireBroadCastReceivedEvent();
        }
    });
}  


修改
我还需要注意有关传入消息的应用程序(@the' FireBroadCastReceivedEvent()'部分代码)。有什么好办法呢?

1 个答案:

答案 0 :(得分:0)

我认为您必须阅读以下链接:https://developer.android.com/training/run-background-service/index.html

希望你能找到你想要的东西。