1 package com.example.groom;
4 import android.app.AlertDialog;
5 import android.bluetooth.BluetoothAdapter;
6 import android.bluetooth.BluetoothDevice;
7 import android.content.DialogInterface;
8 import android.content.Intent;
9 import android.os.Bundle;
10 import android.os.Handler;
11 import android.os.Message;
12 import android.util.Log;
13 import android.view.View;
14 import android.widget.Button;
15 import android.widget.EditText;
16 import android.widget.TextView;
17 import android.widget.Toast;
19 import androidx.appcompat.app.AppCompatActivity;
20 import androidx.core.app.NotificationCompat;
21 import androidx.core.app.NotificationManagerCompat;
35 public class IHMGroom extends AppCompatActivity implements View.OnClickListener {
39 private static final String TAG =
"IHMGroom";
59 private BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
69 protected void onCreate(Bundle savedInstanceState)
71 super.onCreate(savedInstanceState);
72 setContentView(R.layout.activity_groom);
74 Intent intent = getIntent();
75 groom = (
Groom) intent.getSerializableExtra(
"Groom");
81 Set<BluetoothDevice> devices = bluetoothAdapter.getBondedDevices();
83 for (BluetoothDevice bluetoothDevice : devices)
86 if(bluetoothDevice.getName().equals(groom.
getNomDevice()))
88 Log.d(TAG,
"BluetoothDevice Groom trouvé : " + bluetoothDevice.getName() +
" [" + bluetoothDevice.getAddress() +
"]");
93 if(communication != null)
123 boutonPerso = findViewById(R.id.bouttonMessagePersonnalise);
124 boutonEntrer = findViewById(R.id.boutonLibre);
125 boutonAbsent = findViewById(R.id.boutonAbsent);
126 boutonOccupe = findViewById(R.id.boutonOccupe);
127 boutonModeSonnette = findViewById(R.id.boutonSonnette);
128 boutonDeconnexion = findViewById(R.id.boutonDeconnexion);
130 boutonPerso.setOnClickListener(
this);
131 boutonEntrer.setOnClickListener(
this);
132 boutonAbsent.setOnClickListener(
this);
133 boutonOccupe.setOnClickListener(
this);
134 boutonModeSonnette.setOnClickListener(
this);
135 boutonDeconnexion.setOnClickListener(
this);
137 disponibiliteActuelle = (TextView) findViewById(R.id.disponibiliteActuelle);
155 public void onClick(DialogInterface dialog,
int which) {
156 messagePerso = (EditText) ((AlertDialog) dialog).findViewById(R.id.saisieMessagePerso);
157 Log.v(TAG,
"Saisie : " + messagePerso.getText().toString());
158 communication.
envoyer(
"$MSGPERSO;" + messagePerso.getText() +
"\r\n");
161 saisieMessagePerso.setNegativeButton(
"Annuler",
new DialogInterface.OnClickListener() {
163 public void onClick(DialogInterface dialog,
int which) {
164 Log.v(TAG,
"Saisie annulée");
178 switch (element.getId()) {
179 case R.id.bouttonMessagePersonnalise:
183 case R.id.boutonLibre:
189 case R.id.boutonAbsent:
195 case R.id.boutonOccupe:
201 case R.id.boutonSonnette:
202 if (boutonModeSonnette.getText().equals(getString(R.string.desactiverSonnette)))
208 boutonModeSonnette.setText(R.string.activerSonnette);
217 boutonModeSonnette.setText(R.string.desactiverSonnette);
222 case R.id.boutonDeconnexion:
241 toast = Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT);
253 if(communication != null)
255 Intent data =
new Intent();
256 data.putExtra(
"Groom", groom);
257 setResult(RESULT_OK, data);
270 boutonModeSonnette.setText(R.string.desactiverSonnette);
274 boutonModeSonnette.setText(R.string.activerSonnette);
284 public void handleMessage(Message msg)
286 super.handleMessage(msg);
291 Log.v(TAG,
"Groom connecté");
295 Log.v(TAG,
"Trame reçue " + msg.obj);
296 String trame[] = msg.obj.toString().split(
";");
300 Log.v(TAG,
"Groom déconnecté");
315 if (trame[0].equals(
"$GROOM"))
319 if(trame[2].equals(
"1"))
323 if(trame[3].equals(
"1"))
340 NotificationCompat.Builder builder =
new NotificationCompat.Builder(
this,
"channelId")
341 .setSmallIcon(R.drawable.ic_launcher_background)
342 .setContentTitle(
"GrOOm")
343 .setContentText(texte)
344 .setPriority(NotificationCompat.PRIORITY_DEFAULT);
345 NotificationManagerCompat notificationSonnette = NotificationManagerCompat.from(
this);
346 notificationSonnette.notify(
id, builder.build());
347 Log.v(TAG,
"Notification Groom : " + texte);
Button boutonModeSonnette
Le bouton pour activer/désactiver la sonnette.
void onStart()
Méthode appelée au lancement de l'activité IHMGroom.
Communication communication
l'objet communication pour communiquer avec le portier groom
final Handler handler
objet Handler utiliser pour la reception du code de retour de la communication
Déclaration de la classe Groom.
boolean deconnecter()
Méthode pour se déconnecter de l'appareil.
int getDisponibiliteToInt()
Retourne la disponibilité sous forme entière.
Button boutonDeconnexion
Le bouton pour se déconnecter.
void envoyer(String data)
Méthode pour envoyer une trame.
void onCreate(Bundle savedInstanceState)
Méthode appelée à la création de l'activité IHMGroom.
void initialiserRessourcesIHM()
Méthode appelée pour initialiser les différentes ressources nécessaire à l'affichage de l'IHM...
int boolToInt(boolean b)
Méthode qui convertit un bool en un int.
static final int CODE_CONNEXION
Code de connexion.
Déclaration de la classe IHMGroom.
Toast toast
Le toast qui permet d'afficher des informations à l'utilisateur.
void creerNotification(String texte, int id)
Méthode qui permet de créer une notification pour avertir l'utilisateur si quelqu'un à sonné et/ou si...
void setDisponibilite(String disponibilite)
Accesseur set de la disponibilité
void verifierModeSonnette()
Méthode appelée pour vérifier le mode de sonnette et changer le texte du boutton. ...
void setDisponibiliteToInt(int dispo)
Fixe la disponibilité à partir de ss forme entière.
boolean getDetectionPresence()
Accesseur get de la détection de présence.
Button boutonPerso
Le bouton pour envoyer un message personnalisé
EditText messagePerso
Le champ de texte pour écrire son message personnalisé
void onClick(View element)
Méthode appelé au click d'un bouton et appelle une méthode celon le bouton qui a été cliqué ...
void decoderTrameRecue(String trame[])
Méthode qui permet de décoder la trame reçue.
Button boutonOccupe
Le bouton pour définir sa disponibilité en Occupé
void setModeSonnette(boolean modeSonnette)
Accesseur set du mode de la sonnette.
Button boutonEntrer
Le bouton pour définir sa disponibilité en Libre.
String getNomDevice()
Accesseur get du nomDevice.
static final int CODE_DECONNEXION
Code de déconnexion.
String getDisponibilite()
Accesseur get de la disponibilité
void afficherToast(String message)
Méthode appelée pour donner des informations supplémentaires à l'utilisateur.
void initialiserSaisieMessagePerso()
Méthode appelée pour initialiser la boite de dialogue personnalisé pour la saisie d'un message person...
static final int CODE_RECEPTION
Code de réception d'une trame.
Déclaration de la classe Communication.
void finish()
Méthode appelée à la fin de l'activité
TextView disponibiliteActuelle
Le texte qui affiche la dernière disponiblité définie.
AlertDialog.Builder saisieMessagePerso
Le builder qui permet de créer une fenêtre de dialogue de saisie personnalisé
void connecter()
Méthode pour se connecter à l'appareil.
Button boutonAbsent
Le bouton pour définir sa disponibilité en Absent.
boolean getModeSonnette()
Accesseur get du mode de la sonnette.