diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index ea04c20..8962fa3 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -43,7 +43,13 @@ android {
dependencies {
implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar", "*.aar"))))
implementation(libs.room.runtime)
+ implementation("com.github.NaikSoftware:StompProtocolAndroid:1.6.6")
+
+ // RxJava (déjà présent normalement)
+ implementation("io.reactivex.rxjava2:rxjava:2.2.21")
+ implementation("io.reactivex.rxjava2:rxandroid:2.1.1")
annotationProcessor(libs.room.compiler)
+ implementation(libs.stompprotocolandroid)
implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.1.0")
implementation("androidx.camera:camera-camera2:1.2.3")
implementation("androidx.camera:camera-lifecycle:1.2.3")
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index c7929de..c6c6ad2 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -14,6 +14,8 @@
android:usesPermissionFlags="neverForLocation" />
+
+
@@ -50,10 +52,6 @@
android:theme="@style/Theme.Quiz"
tools:targetApi="31"
android:usesCleartextTraffic="true">
-
+
+
diff --git a/app/src/main/res/layout/agent_item.xml b/app/src/main/res/layout/agent_item.xml
new file mode 100644
index 0000000..347bbf8
--- /dev/null
+++ b/app/src/main/res/layout/agent_item.xml
@@ -0,0 +1,128 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_agent_details.xml b/app/src/main/res/layout/fragment_agent_details.xml
new file mode 100644
index 0000000..c1af809
--- /dev/null
+++ b/app/src/main/res/layout/fragment_agent_details.xml
@@ -0,0 +1,178 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_agent_management.xml b/app/src/main/res/layout/fragment_agent_management.xml
new file mode 100644
index 0000000..25465ec
--- /dev/null
+++ b/app/src/main/res/layout/fragment_agent_management.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_update_pin.xml b/app/src/main/res/layout/fragment_update_pin.xml
new file mode 100644
index 0000000..dae2e63
--- /dev/null
+++ b/app/src/main/res/layout/fragment_update_pin.xml
@@ -0,0 +1,130 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/multi_type_of_bet_item.xml b/app/src/main/res/layout/multi_type_of_bet_item.xml
new file mode 100644
index 0000000..d49985f
--- /dev/null
+++ b/app/src/main/res/layout/multi_type_of_bet_item.xml
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/pin_view.xml b/app/src/main/res/layout/pin_view.xml
index 785bd64..511b959 100644
--- a/app/src/main/res/layout/pin_view.xml
+++ b/app/src/main/res/layout/pin_view.xml
@@ -35,7 +35,7 @@
android:layout_width="match_parent"
android:layout_height="45dp"
android:hint="@string/code_message"
- android:inputType="number"
+ android:inputType="text"
android:textSize="18sp"
android:layout_marginVertical="13sp"
android:textFontWeight="600"
diff --git a/app/src/main/res/mipmap-anydpi/ic_launcher.xml b/app/src/main/res/mipmap-anydpi/ic_launcher.xml
index 6f3b755..f81f677 100644
--- a/app/src/main/res/mipmap-anydpi/ic_launcher.xml
+++ b/app/src/main/res/mipmap-anydpi/ic_launcher.xml
@@ -1,6 +1,6 @@
-
-
-
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-anydpi/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi/ic_launcher_round.xml
index 6f3b755..fbe923e 100644
--- a/app/src/main/res/mipmap-anydpi/ic_launcher_round.xml
+++ b/app/src/main/res/mipmap-anydpi/ic_launcher_round.xml
@@ -1,6 +1,6 @@
-
-
-
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 2dfa387..f668a80 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -10,6 +10,7 @@
#333333
#501C5A29
#50C31617
+ #F5F5F5
#e8e8e8
#00000000
#ffffff
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index b33b484..78cb5ac 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -17,9 +17,12 @@ playServicesMaps = "18.1.0"
recyclerviewV7 = "28.0.0"
retrofit = "2.11.0"
rxandroid = "1.2.1"
+rxandroidVersion = "2.1.1"
rxjava = "1.3.8"
kotlin = "1.9.24"
coreKtx = "1.17.0"
+rxjavaVersion = "2.2.21"
+stompprotocolandroid = "1.6.6"
swiperefreshlayout = "1.1.0"
core = "1.5.0"
fragmentTesting = "1.6.2"
@@ -59,6 +62,9 @@ room-runtime = { module = "androidx.room:room-runtime", version.ref = "roomCommo
rxandroid = { module = "io.reactivex:rxandroid", version.ref = "rxandroid" }
rxjava = { module = "io.reactivex:rxjava", version.ref = "rxjava" }
core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" }
+rxjava2-rxandroid = { module = "io.reactivex.rxjava2:rxandroid", version.ref = "rxandroidVersion" }
+stompprotocolandroid = { module = "com.github.NaikSoftware:StompProtocolAndroid", version.ref = "stompprotocolandroid" }
+rxjava2-rxjava = { module = "io.reactivex.rxjava2:rxjava", version.ref = "rxjavaVersion" }
swiperefreshlayout = { module = "androidx.swiperefreshlayout:swiperefreshlayout", version.ref = "swiperefreshlayout" }
core = { module = "androidx.test:core", version.ref = "core" }
fragment-testing = { module = "androidx.fragment:fragment-testing", version.ref = "fragmentTesting" }
diff --git a/printama/src/main/java/com/anggastudio/printama/Printama.java b/printama/src/main/java/com/anggastudio/printama/Printama.java
index aed5753..9728176 100644
--- a/printama/src/main/java/com/anggastudio/printama/Printama.java
+++ b/printama/src/main/java/com/anggastudio/printama/Printama.java
@@ -311,6 +311,11 @@ public class Printama {
});
}
+
+ public int checkPaperStatus(){
+ return _util.checkPaperStatus();
+ }
+
public boolean isConnected() {
return _util.isConnected();
}
@@ -385,6 +390,29 @@ public class Printama {
});
}
+ public void printSold(Bitmap bitmap, String title, StringBuilder text){
+ _printama.connect(printama -> {
+ _util.resetPrinter();
+ _util.setBold();
+ _util.printImage(bitmap);
+ _util.printText(lineSeparator());
+ _util.setAlign(PA.CENTER);
+ _util.setBold();
+ _util.printText(title+"\n");
+ _util.setNormalText();
+ _util.printText(lineSeparator()+"\n");
+ _util.setNormalText();
+ _util.setAlign(PA.LEFT);
+ _util.printText(text.toString());
+ _util.printText(lineSeparator());
+ _util.setAlign(PA.CENTER);
+ _util.printText("Powered by PMU-MALI"+"\n");
+ _util.printText(lineSeparator());
+ printama.feedPaper();
+ printama.close();
+ });
+ }
+
//----------------------------------------------------------------------------------------------
// PRINTER COMMANDS
diff --git a/printama/src/main/java/com/anggastudio/printama/PrinterUtil.java b/printama/src/main/java/com/anggastudio/printama/PrinterUtil.java
index a9d6a12..ea26021 100644
--- a/printama/src/main/java/com/anggastudio/printama/PrinterUtil.java
+++ b/printama/src/main/java/com/anggastudio/printama/PrinterUtil.java
@@ -17,6 +17,7 @@ import com.anggastudio.printama.constants.PW;
import com.anggastudio.printama.util.StrUtil;
import java.io.IOException;
+import java.io.InputStream;
import java.io.OutputStream;
import java.util.Arrays;
import java.util.UUID;
@@ -54,6 +55,7 @@ class PrinterUtil {
private final BluetoothDevice printer;
private BluetoothSocket btSocket = null;
private OutputStream btOutputStream = null;
+ private InputStream btInputStream = null;
private boolean is3InchPrinter;
PrinterUtil(BluetoothDevice printer) {
@@ -67,6 +69,7 @@ class PrinterUtil {
btSocket = socket;
try {
btOutputStream = socket.getOutputStream();
+ btInputStream = socket.getInputStream();
successListener.onConnected();
} catch (IOException e) {
failedListener.onFailed();
@@ -80,8 +83,27 @@ class PrinterUtil {
}).execute(printer);
}
- boolean isConnected() {
- return btSocket != null && btSocket.isConnected();
+ boolean isConnected() {
+ if (btSocket == null) {
+ return false;
+ }
+
+ try {
+ // Tester la connexion en vérifiant le flux d'entrée
+ if (btSocket.isConnected()) {
+ // Vérifier si le flux est accessible
+ InputStream inputStream = btSocket.getInputStream();
+ // Tenter de lire avec un timeout très court
+ if (inputStream.available() >= 0) {
+ return true;
+ }
+ }
+ return false;
+ } catch (IOException e) {
+ // Exception signifie que la connexion est perdue
+ Log.e("Bluetooth", "Socket non connecté: " + e.getMessage());
+ return false;
+ }
}
void finish() {
@@ -243,6 +265,40 @@ class PrinterUtil {
}
}
+ public int checkPaperStatus() {
+ try {
+ // Certaines imprimantes doivent être en mode "real-time"
+ // Commande GS a 1 pour activer le mode "real-time"
+ byte[] realtimeMode = new byte[]{0x1D, 0x61, 0x01};
+ btOutputStream.write(realtimeMode);
+ btOutputStream.flush();
+
+ Thread.sleep(50);
+
+ // Ensuite la commande de statut
+ byte[] statusCommand = new byte[]{0x1D, 0x72, 0x01};
+ btOutputStream.write(statusCommand);
+ btOutputStream.flush();
+
+ Thread.sleep(200);
+
+ // Lire la réponse
+ byte[] response = new byte[4];
+ int bytesRead = btInputStream.read(response);
+
+ if (bytesRead > 0) {
+ // Traiter la réponse...
+ return 0;
+ }
+
+ return -1;
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ return -1;
+ }
+ }
+
boolean printImage(Bitmap bitmap, int width) {
return printImage(PA.CENTER, bitmap, width);
}
diff --git a/printama/src/main/res/layout/activity_choose_printer.xml b/printama/src/main/res/layout/activity_choose_printer.xml
index b82fc09..743544a 100644
--- a/printama/src/main/res/layout/activity_choose_printer.xml
+++ b/printama/src/main/res/layout/activity_choose_printer.xml
@@ -17,7 +17,7 @@
android:layout_height="wrap_content"
android:gravity="center"
android:padding="20dp"
- android:text="Choose Printer"
+ android:text="Choisir une imprimante"
android:textSize="16sp"
android:textStyle="bold" />
@@ -36,7 +36,7 @@
android:layout_margin="20dp"
android:backgroundTint="@color/colorGray5"
android:gravity="center"
- android:text="Test"
+ android:text="Tester"
android:textColor="@android:color/white"
android:textSize="14sp" />
@@ -49,7 +49,7 @@
android:layout_marginBottom="20dp"
android:backgroundTint="@color/colorGray5"
android:gravity="center"
- android:text="Save"
+ android:text="Valider"
android:textColor="@android:color/white"
android:textSize="14sp" />
diff --git a/printama/src/main/res/layout/fragment_device_list.xml b/printama/src/main/res/layout/fragment_device_list.xml
index 83e20f0..fbcec9c 100644
--- a/printama/src/main/res/layout/fragment_device_list.xml
+++ b/printama/src/main/res/layout/fragment_device_list.xml
@@ -20,7 +20,7 @@
android:layout_height="wrap_content"
android:gravity="center"
android:padding="20dp"
- android:text="Choose Printer"
+ android:text="Choissez une imprimante"
android:textColor="@color/colorBlack"
android:textSize="16sp"
android:textStyle="bold" />
@@ -36,7 +36,7 @@
android:textColor="@color/colorBlack"
android:textSize="14sp"
android:visibility="gone"
- tools:text="No paired Bluetooth printers found.\n\nTap the button below to open Bluetooth settings and pair a printer."
+ tools:text="Aucune imprimante Bluetooth jumelée trouvée.\n\nAppuyez sur le bouton ci-dessous pour ouvrir les paramètres Bluetooth et jumeler une imprimante."
tools:visibility="visible" />
@@ -74,7 +74,7 @@
android:layout_weight="1"
android:backgroundTint="@color/colorGray5"
android:gravity="center"
- android:text="Save"
+ android:text="Valider"
android:textColor="@android:color/white"
android:textSize="14sp" />
diff --git a/settings.gradle.kts b/settings.gradle.kts
index 0b85237..f8fcb6f 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -16,6 +16,12 @@ dependencyResolutionManagement {
repositories {
google()
mavenCentral()
+ maven{
+ url = uri("https://jitpack.io")
+ content {
+ includeGroup("com.github.NaikSoftware")
+ }
+ }
}
}