Вещательный приемник нуждается в Wi-Fi для каждого приема. Безопасно ли использовать Wi-Fi Lock и Wake Lock для каждого приема? - PullRequest
1 голос

Я создал приемник, который он читает, когда поступает входящий вызов. Когда я получаю звонок, я отправляю его через httpclient на сервер. Моя проблема в том, что иногда он отправляет его Вот мой код:

  [BroadcastReceiver()]
[IntentFilter(new[] { "android.intent.action.PHONE_STATE" })]

public class BroadcastReceiverClass : BroadcastReceiver
{
    private string ipAdress = "";

    public void BroadcastReceiverSetIp(string ip)
    {
        ipAdress = ip;
    }
    public override void OnReceive(Context context, Intent intent)
    {
        // ensure there is information
        if (intent.Extras != null)
        {
            // get the incoming call state
            string state = intent.GetStringExtra(TelephonyManager.ExtraState);

            // check the current state
            if (state == TelephonyManager.ExtraStateRinging)
            {
                // read the incoming call telephone number...
                string telephone = intent.GetStringExtra(TelephonyManager.ExtraIncomingNumber);

                if (string.IsNullOrEmpty(telephone))
                    telephone = string.Empty;

                sendTelephone(telephone,context);

            }

        }
    }
    private async void sendTelephone(string telephone, Context context)
    {
        try
        {

            if (!string.IsNullOrWhiteSpace(ipAdress))
            {


                if (telephone.Length == 13)
                    telephone = telephone.Substring(3);

                using (var client = new HttpClient())
                {
                    client.Timeout = TimeSpan.FromMilliseconds(20000);
                    var response = await client.PostAsync("http://" + ipAdress + ":9090/api/SqlAction/", new StringContent("20:" + telephone, Encoding.UTF8, "application/json"));

                }

            }




        }
        catch (Exception ex)
        {
            CatchException.LogFile(this.Class.SimpleName, ex);
        }
    }
}

Я зарегистрировал свой приемник Broadcast внутри от активности.

  var receiver = new BroadcastReceiverClass();
                    receiver.BroadcastReceiverSetIp(MyIp);
                    RegisterReceiver(receiver, new IntentFilter("android.intent.action.PHONE_STATE"));
                    this.MoveTaskToBack(true);

Безопасно ли использовать wake? Блокировка и блокировка Wi-Fi каждый раз, когда я получаю получить? Как пример ниже

   private async void sendTelephone(string telephone, Context context)
    {
        try
        {

            var pm = (PowerManager)context.GetSystemService(Context.PowerService);
            var wakeLock = pm.NewWakeLock(WakeLockFlags.Partial, "MyWakeLock");
            wakeLock.Acquire();


            var wm = (WifiManager)context.GetSystemService(Context.WifiService);
            var wifiLock = wm.CreateWifiLock(WifiMode.FullHighPerf, "MyWifiLock");
            wifiLock.Acquire();

            if (!string.IsNullOrWhiteSpace(ipAdress))
            {
                if (telephone.Length == 13)
                    telephone = telephone.Substring(3);

                using (var client = new HttpClient())
                {
                    client.Timeout = TimeSpan.FromMilliseconds(20000);
                    var response = await client.PostAsync("http://" + ipAdress + ":9090/api/SqlAction/", new StringContent("20:" + telephone, Encoding.UTF8, "application/json"));

                }
            }
            if (wakeLock != null && wakeLock.IsHeld)
                wakeLock.Release();

            if (wifiLock != null && wifiLock.IsHeld)
                wifiLock.Release();

        }
        catch (Exception ex)
        {
            CatchException.LogFile(this.Class.SimpleName, ex);
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...