NSDManager не находит сервисы, только если ищет принтеры в стандартном приложении - PullRequest
0 голосов
/ 04 апреля 2019

Итак, я надеюсь, что я нахожусь в правильном разделе, так как это мой первый пост.

У меня есть следующая проблема: я реализовал NSDManager по примеру этого: https://github.com/ymitis/xamarin-android-nsd-chat Iиспользовал свой NSDHelper-класс и сделал все остальное, чтобы он подходил для моих целей.

Если я сканирую сервисы с помощью этого приложения, я не нахожу ни одного из них.Однако, если я оставлю это приложение работающим, открою заметки и поищу беспроводные принтеры, я неожиданно найду именно эти принтеры в своем NSD-приложении.Похоже, что отсутствует основная функция, и я понятия не имею, что это может быть, так как Git работает нормально, но мое приложение нет.

Итак, на данный момент, что я понял: когда я запускаю телефон,и первое, что я делаю, - это поиск принтеров с помощью стандартного приложения, затем, запустив свое приложение, я нахожу все службы.Но если я просто запускаю устройство, а затем мое приложение, я не нахожу никаких ...

Мой код для моего NSDHelper такой же, как здесь: https://github.com/ymitis/xamarin-android-nsd-chat/blob/master/XamarinAndroidNsdChatApp/XamarinAndroidNsdChatApp/NsdHelper.cs Я просто изменил имя сервераискать.

Моя основная активность выглядит так:

using Android.App;
using Android.Widget;
using Android.OS;
using System.Net.Sockets;
using System.Net;
using System.Threading.Tasks;
using System.Linq;
using System.Text;
using Android.Net.Nsd;
using Android.Content;
using Android.Net.Wifi.P2p;
using Android.Net.Wifi;
using System.Threading;
using Makaretu.Dns;
using Orekaria.Lib.P2P;

[assembly: UsesPermission(Android.Manifest.Permission.ChangeWifiMulticastState)]
[assembly: UsesPermission(Android.Manifest.Permission.AccessWifiState)]
[assembly: UsesPermission(Android.Manifest.Permission.AccessNetworkState)]
[assembly: UsesPermission(Android.Manifest.Permission.ChangeWifiState)]
[assembly: UsesPermission(Android.Manifest.Permission.Internet)]

namespace NetworkDiscoveryTest
{
   [Activity(Label = "NetworkDiscoveryTest", MainLauncher = true)]
   public class MainActivity : Activity
   {

      WifiManager wifi;
      WifiManager.MulticastLock mlock;
      static TextView console;
      NsdHelper nsd;

      protected override async void OnCreate(Bundle savedInstanceState)
      {
         base.OnCreate(savedInstanceState);
         SetContentView(Resource.Layout.Main);

         nsd = new NsdHelper(this);
         await Task.Run(new System.Action(Initialize));


         //Layout naming
         Button startButton = FindViewById<Button>(Resource.Id.startButton);
         Button endButton = FindViewById<Button>(Resource.Id.endButton);
         Button disButton = FindViewById<Button>(Resource.Id.disButton);
         console = FindViewById<TextView>(Resource.Id.console);

         startButton.Click += (s, args) => 
         {
            nsd.RegisterService(5353);
         };

         disButton.Click += (s, args) => 
         {
            nsd.DiscoverServices();
         };

         endButton.Click += (s, args) =>
         {
            nsd.StopDiscovery();
            nsd.TearDown();
         };
      }

      public void Initialize()
      {
         nsd.InitializeNsd();
      }
   }
}

Я не думаю, что это что-то действительно в коде, но, возможно, мне не хватает команды для активации чего-либо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...