Служба зависимостей MAUI возвращает значение nullC#

Место общения программистов C#
Ответить
Anonymous
 Служба зависимостей MAUI возвращает значение null

Сообщение Anonymous »

Я пытаюсь использовать Bluetooth на своем телефоне в приложении MAUI. Я следил за этой статьей.
Я знаю, что это, возможно, не лучший ресурс, но я не смог найти ничего другого.
Я где-то допустил ошибку или это неправильная стратегия?
Для контекста: я пытаюсь подключиться к своему Arduino через модуль HC-05.
Однако, когда я пытаюсь использовать DependencyService.Get, он возвращает значение null. .
Вот мой интерфейс, расположенный в App.xaml.cs:

Код: Выделить всё

namespace RobotControl
{

public partial class App : Application
{
public App()
{
InitializeComponent();

MainPage = new AppShell();

}
}

public interface IBluetoothConnector
{
List GetConnectedDevices();
void Connect(string deviceName);

public void Write(byte[] data);
}
}
Вот моя реализация, расположенная в Platforms/Android/BluetoothConnector.cs:

Код: Выделить всё

using Android.Bluetooth;
using Java.Util;
using RobotControl.Platforms.Android.Bluetooth;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
[assembly: Dependency(typeof(RobotControl.Platforms.Android.Bluetooth.BluetoothConnector))]
namespace RobotControl.Platforms.Android.Bluetooth
{
class BluetoothConnector : IBluetoothConnector
{

BluetoothAdapter adapter;
private const string SspUuid = "00001101-0000-1000-8000-00805f9b34fb";
private BluetoothSocket? socket;
public void Connect(string deviceName)
{
var device = adapter.BondedDevices.FirstOrDefault(d=> d.Name == deviceName);
socket = device.CreateRfcommSocketToServiceRecord(UUID.FromString(SspUuid));
socket.Connect();

}

public void Write(byte[] data)
{

}

public List GetConnectedDevices()
{
adapter = BluetoothAdapter.DefaultAdapter;
if (adapter == null)
{
throw new Exception("No Bluetooth adapter");
}

if (adapter.IsEnabled)
{
if(adapter.BondedDevices.Count >0)
{
return adapter.BondedDevices.Select(x => x.Name).ToList();
}

}
else
{
Console.WriteLine("BT is not enabled");
}

return new List();

}
}

}
namespace RobotControl
{

public partial class App : Application
{
public App()
{
InitializeComponent();

MainPage = new AppShell();

}
}

public interface IBluetoothConnector
{
List GetConnectedDevices();
void Connect(string deviceName);

public void Write(byte[] data);
}
}

Я пытаюсь получить доступ к сервису. Lhand.xaml.cs

Код: Выделить всё

namespace RobotControl
{

public partial class LHand : ContentPage
{
public int L_PinkyAngle;
public int L_RingAngle;
public int L_MiddleAngle;
public int L_IndexAngle;
public int L_ThumbAngle;
public int L_RotaAngle;

public LHand()
{
InitializeComponent();

}

private async void SPinky_ValueChanged(object sender, ValueChangedEventArgs e)
{

var connector = DependencyService.Get();

if(connector == null)
{
await DisplayAlert("er", "connector is null", "huh");
}
else
{
await DisplayAlert("er", "isnt null", "huh");
}

string x = "";
foreach(string s in connector.GetConnectedDevices())
{
x += s + "\n";
}

await DisplayAlert("er", x+ "", "huh");

}

private void SRing_ValueChanged(object sender, ValueChangedEventArgs e)
{

}

private void SMiddle_ValueChanged(object sender, ValueChangedEventArgs e)
{

}

private void SIndex_ValueChanged(object sender, ValueChangedEventArgs e)
{

}

private void SThumb_ValueChanged(object sender, ValueChangedEventArgs e)
{

}
}
}
Спасибо за помощь.

Подробнее здесь: https://stackoverflow.com/questions/792 ... turns-null
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»