Я пытаюсь написать методы внедрения зависимостей с интерфейсом, чтобы у меня был действительно единый пользовательский интерфейс для Android и UWP.
Обработка и тестирование по одной функции за раз. Схема работает, но моя проблема в том, что на стороне UWP большинство функций асинхронно, а на Android нет.
Так что мой вопрос, должен ли я "подделывать" асинхронные функции на стороне Android, и если да, то как?
Вот мой пример:
using System.Collections.Generic;
using System.Threading.Tasks;
namespace XamarinBTArduinoLed
{
public interface IBlueTooth
{
// as a first test, I will try to get a list of paired devices in both Android and UWP
List<string> PairedDevices();
}
}
Это работает с Android, но для UWP должно быть
public interface IBlueTooth
{
// as a first test, I will try to get a list of paired devices in both Android and UWP
Task<List<string>> PairedDevices();
}
Что не работает для моей текущей реализации Android. Итак, как мне изменить это, чтобы «подделать» асинхронный метод, предполагая, что это будет лучшим выбором? Или есть другой способ, о котором я не думаю?
[assembly: Xamarin.Forms.Dependency(typeof(XamarinBTArduinoLed.Droid.BlueToothInterface))]
namespace XamarinBTArduinoLed.Droid
{
public class BlueToothInterface : IBlueTooth
{
public List<string> PairedDevices()
{
List<string> BTItems = new List<string>();
BluetoothAdapter adapter = BluetoothAdapter.DefaultAdapter;
if (adapter == null) throw new Exception("No BlueTooth Adapter Found.");
if (!adapter.IsEnabled)
{
adapter.Enable();
}
//if (!adapter.IsEnabled)
//{
// throw new Exception("BlueTooth adapter is NOT enabled.");
//}
foreach (var item in adapter.BondedDevices)
{
BTItems.Add(item.Name + " - " + item.Type.ToString());
}
return BTItems;
}
}
}