xamarin / SicpaXamDevice / trunk / Sicpa.Xam.Device.Droid / Rfid / Agrident / AgridentLecteur.cs @ 5
Historique | Voir | Annoter | Télécharger (3,304 ko)
1 |
using Android.App; |
---|---|
2 |
using Android.Content; |
3 |
using Android.OS; |
4 |
using Android.Runtime; |
5 |
using Android.Views; |
6 |
using Android.Widget; |
7 |
using Sicpa.Xam.Device.Forms.Interfaces; |
8 |
using Sicpa.Xam.Device.Forms.Models; |
9 |
using System; |
10 |
using System.Collections.Generic; |
11 |
using System.Linq; |
12 |
using System.Text; |
13 |
|
14 |
|
15 |
namespace Sicpa.Xam.Device.Droid.Rfid.Agrident |
16 |
{ |
17 |
/// <summary> |
18 |
/// objet lecteur Agrident AgridentWedge |
19 |
/// </summary> |
20 |
public class AgridentLecteur : ILecteurRfid |
21 |
{ |
22 |
//on déclare un AgridentReceiver pour utiliser ces méthodes |
23 |
AgridentReceiver agridentReceiver; |
24 |
|
25 |
//l'événement TagLuReceiver de la classe AgridentReceiver n'est pas visible au niveau Forms. |
26 |
//On va donc le relayer par un événement de l'interface qui elle, communique par le DependencyService |
27 |
public EventHandler<InfosRfid> EvTagLu { get; set; } |
28 |
|
29 |
//variable qui va récupèrer le context de l'application. Necessaire pour utiliser certaine fonction Android |
30 |
private Context contextApp; |
31 |
|
32 |
public AgridentLecteur() |
33 |
{ |
34 |
//Important ! Ici on récupère le context de l'application, ce qui permet de pouvoir utiliser le PackageManager, StartActivity et RegisterReceiver |
35 |
//qui sinon ne sont accessibles que dans la MainActivity |
36 |
contextApp = Android.App.Application.Context.ApplicationContext; |
37 |
} |
38 |
|
39 |
public void Connexion() |
40 |
{ |
41 |
//on instancie un AgridentReceiver pour avoir accés à ses méthode. Ici en l'occurence son événement TagLuReceiver |
42 |
agridentReceiver = new AgridentReceiver(); |
43 |
//on associe ue méthode à l'événement reçu |
44 |
agridentReceiver.TagLuReceiver += OnTagLuReceiver; |
45 |
|
46 |
//maintenant on créer un filtre d'intent avant de s'enregistrer au BroadcastReceiver, AgridentReceiver |
47 |
IntentFilter intentFilter = new IntentFilter(); |
48 |
intentFilter.AddAction(AgridentConstantes.LECTURE_TAG_REUSSI); |
49 |
intentFilter.AddAction(AgridentConstantes.LECTURE_TAG_ECHEC); |
50 |
contextApp.RegisterReceiver(agridentReceiver, intentFilter); |
51 |
} |
52 |
|
53 |
|
54 |
public void Deconnexion() |
55 |
{ |
56 |
throw new NotImplementedException(); |
57 |
} |
58 |
|
59 |
public void LectureTag() |
60 |
{ |
61 |
|
62 |
//récupére les infos du package AGRIDENT_WEDGE pour pouvoir le lancer par l'intent |
63 |
Intent lancePackage = contextApp.PackageManager.GetLaunchIntentForPackage(AgridentConstantes.AGRIDENT_WEDGE); |
64 |
|
65 |
//on lance AgridentWedge par l'intermédiaire d'un intent |
66 |
if (lancePackage != null) |
67 |
{ |
68 |
contextApp.StartActivity(lancePackage); |
69 |
} |
70 |
else |
71 |
throw new Sicpa.Xam.Device.Forms.Exceptions.AgridentExecption("Le package 'AgridentWedge' n'est pas installé."); |
72 |
|
73 |
} |
74 |
|
75 |
private void OnTagLuReceiver(object sender, InfosRfid infos) |
76 |
{ |
77 |
//on relais l'événement pour qu'il soit accessible par le DependencyService |
78 |
EvTagLu?.Invoke(sender, infos); |
79 |
} |
80 |
|
81 |
public void RFOff() |
82 |
{ |
83 |
throw new NotImplementedException(); |
84 |
} |
85 |
|
86 |
public void RFOn() |
87 |
{ |
88 |
throw new NotImplementedException(); |
89 |
} |
90 |
} |
91 |
} |