Statistiques
| Révision:

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
}