2016-12-08 2 views
0

Предположим, у меня есть функция ScanData() в проекте Droid, которая срабатывает, когда я нажимаю кнопку сканирования, прикрепленную к устройству. Эта функция дает мне сканированное значение штрих-кода, что я сканировал с помощью устройства Android (Motorola TC70).Как запустить событие от проекта Droid до портативного проекта Xamarin.Forms

Теперь возможно инициировать событие в форме XAML портативного проекта в то же время, когда оно запускается в проекте Droid с отсканированным значением с использованием инъекции зависимостей или чего-то типа класса центра обработки сообщений.

Заранее благодарен!

ответ

0

Я знаю, что это старая тема, но я просто решил это сам, так что вот решение. Вы действительно можете использовать MessagingCenter, это может быть хлопот, чтобы заставить его работать. Это, как я ее решил:

В моем App.xaml.cs У меня есть этот игрок объект:

public static Interfaces.IAudioPlayer player = DependencyService.Get<Interfaces.IAudioPlayer>(); 

В моей Android реализации интерфейса у меня есть это:

public AudioPlayerImplementation() 
    { 
     InitializePlayer(); 
     Player.Prepared += Player_Prepared; 
    } 
private void Player_Prepared(object sender, EventArgs e) 
    { 
     Player.Start(); 
     MessagingCenter.Send<IAudioPlayer>(this, "PlayerPrepared"); 
    } 

И в классе PCL, где я хочу получить сообщение, у меня есть следующее:

MessagingCenter.Subscribe<Interfaces.IAudioPlayer>(App.player, "PlayerPrepared", (args) => 
     { 
      PlayerPrepared(); 
     }); 

Этот факт ks, потребовалось некоторое время, чтобы понять это.

Смежные вопросы