Итак, я надеюсь, что я нахожусь в правильном разделе, так как это мой первый пост.
У меня есть следующая проблема: я реализовал 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();
}
}
}
Я не думаю, что это что-то действительно в коде, но, возможно, мне не хватает команды для активации чего-либо