diff --git a/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java b/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java index a86f047a..1cbe3cec 100644 --- a/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java +++ b/app/src/main/java/it/integry/integrywmsnative/MainApplicationModule.java @@ -43,6 +43,7 @@ import it.integry.integrywmsnative.core.rest.consumers.ProductionLinesRESTConsum import it.integry.integrywmsnative.core.rest.consumers.SystemRESTConsumer; import it.integry.integrywmsnative.core.services.inventario.InventarioService; import it.integry.integrywmsnative.core.settings.SettingsManager; +import it.integry.integrywmsnative.core.sound.SoundAlertService; import it.integry.integrywmsnative.core.update.UpdatesManager; import it.integry.integrywmsnative.gest.contab_doc_interni.rest.DocInterniRESTConsumer; import it.integry.integrywmsnative.gest.prod_fabbisogno_linee_prod.rest.ProdFabbisognoLineeProdRESTConsumer; @@ -291,4 +292,12 @@ public class MainApplicationModule { return new MagazzinoBufferRESTConsumer(); } + @Provides + @Singleton + SoundAlertService provideSoundAlertService() { + SoundAlertService soundAlertService = new SoundAlertService(mApplication.getApplicationContext()); + soundAlertService.init(); + return soundAlertService; + } + } diff --git a/app/src/main/java/it/integry/integrywmsnative/core/sound/SoundAlertService.java b/app/src/main/java/it/integry/integrywmsnative/core/sound/SoundAlertService.java new file mode 100644 index 00000000..04cb10d8 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/core/sound/SoundAlertService.java @@ -0,0 +1,40 @@ +package it.integry.integrywmsnative.core.sound; + +import android.content.Context; +import android.media.MediaPlayer; + +import it.integry.integrywmsnative.R; + +import javax.inject.Inject; +import javax.inject.Singleton; + +@Singleton +public class SoundAlertService { + + private final Context mApplicationContext; + + private MediaPlayer successPlayer; + private MediaPlayer warningPlayer; + + public SoundAlertService(Context context) { + this.mApplicationContext = context; + } + + @Inject + public void init() { + successPlayer = MediaPlayer.create(this.mApplicationContext, R.raw.success_sound); + warningPlayer = MediaPlayer.create(this.mApplicationContext, R.raw.warning_sound); + } + + public void success() { + if (successPlayer != null) { + successPlayer.start(); + } + } + + public void warning() { + if (warningPlayer != null) { + warningPlayer.start(); + } + } +} diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_riposizionamento_da_prod/ProdRiposizionamentoDaProdModule.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_riposizionamento_da_prod/ProdRiposizionamentoDaProdModule.java index 9741ec07..754a1168 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_riposizionamento_da_prod/ProdRiposizionamentoDaProdModule.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_riposizionamento_da_prod/ProdRiposizionamentoDaProdModule.java @@ -7,13 +7,14 @@ import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsume import it.integry.integrywmsnative.core.rest.consumers.GiacenzaRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.MagazzinoAutomaticoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.PosizioniRESTConsumer; +import it.integry.integrywmsnative.core.sound.SoundAlertService; @Module(subcomponents = ProdRiposizionamentoDaProdComponent.class) public class ProdRiposizionamentoDaProdModule { @Provides - ProdRiposizionamentoDaProdViewModel providesProdRiposizionamentoDaProdViewModel(GiacenzaRESTConsumer giacenzaRESTConsumer, BarcodeRESTConsumer barcodeRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer) { - return new ProdRiposizionamentoDaProdViewModel(giacenzaRESTConsumer, barcodeRESTConsumer, colliMagazzinoRESTConsumer); + ProdRiposizionamentoDaProdViewModel providesProdRiposizionamentoDaProdViewModel(GiacenzaRESTConsumer giacenzaRESTConsumer, BarcodeRESTConsumer barcodeRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, SoundAlertService soundAlertService) { + return new ProdRiposizionamentoDaProdViewModel(giacenzaRESTConsumer, barcodeRESTConsumer, colliMagazzinoRESTConsumer, soundAlertService); } } \ No newline at end of file diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/prod_riposizionamento_da_prod/ProdRiposizionamentoDaProdViewModel.java b/app/src/main/java/it/integry/integrywmsnative/gest/prod_riposizionamento_da_prod/ProdRiposizionamentoDaProdViewModel.java index 299f904e..f22dd800 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/prod_riposizionamento_da_prod/ProdRiposizionamentoDaProdViewModel.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/prod_riposizionamento_da_prod/ProdRiposizionamentoDaProdViewModel.java @@ -13,6 +13,8 @@ import java.util.Map; import java.util.Objects; import java.util.stream.Collectors; +import javax.inject.Inject; + import it.integry.barcode_base_android_library.model.BarcodeScanDTO; import it.integry.integrywmsnative.core.exception.NoLUFoundException; import it.integry.integrywmsnative.core.exception.ScannedPositionNotExistException; @@ -25,13 +27,14 @@ import it.integry.integrywmsnative.core.rest.consumers.BarcodeRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.ColliMagazzinoRESTConsumer; import it.integry.integrywmsnative.core.rest.consumers.GiacenzaRESTConsumer; import it.integry.integrywmsnative.core.settings.SettingsManager; +import it.integry.integrywmsnative.core.sound.SoundAlertService; import it.integry.integrywmsnative.core.utility.UtilityBarcode; import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.gest.prod_riposizionamento_da_prod.dto.ArtsInGiacenzaDTO; public class ProdRiposizionamentoDaProdViewModel { - + private final SoundAlertService mSoundAlertService; private final GiacenzaRESTConsumer mGiacenzaRESTConsumer; private final BarcodeRESTConsumer mBarcodeRESTConsumer; private final ColliMagazzinoRESTConsumer mColliMagazzinoRESTConsumer; @@ -40,10 +43,11 @@ public class ProdRiposizionamentoDaProdViewModel { private final MutableLiveData> mMvwSitArtUdcDetInventarioLiveData = new MutableLiveData<>(); private Listener mListener; - public ProdRiposizionamentoDaProdViewModel(GiacenzaRESTConsumer giacenzaRESTConsumer, BarcodeRESTConsumer barcodeRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer) { + public ProdRiposizionamentoDaProdViewModel(GiacenzaRESTConsumer giacenzaRESTConsumer, BarcodeRESTConsumer barcodeRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, SoundAlertService soundAlertService) { this.mGiacenzaRESTConsumer = giacenzaRESTConsumer; this.mBarcodeRESTConsumer = barcodeRESTConsumer; this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer; + this.mSoundAlertService = soundAlertService; } public void processBarcodeDTO(BarcodeScanDTO barcodeScanDTO, Runnable onComplete) { @@ -72,6 +76,7 @@ public class ProdRiposizionamentoDaProdViewModel { if (!UtilityString.isNullOrEmpty(ean128Model.Sscc)) { this.executeEtichettaLU(ean128Model.Sscc, false, onBarcodeScanComplete); } else { + this.mSoundAlertService.warning(); this.sendError(new NoLUFoundException()); } @@ -86,6 +91,7 @@ public class ProdRiposizionamentoDaProdViewModel { private void executeEtichettaLU(String sscc, boolean isAnonima, Runnable onComplete) { this.mColliMagazzinoRESTConsumer.getBySSCC(sscc, true, false, mtbColt -> { if (mtbColt == null && !isAnonima) { + this.mSoundAlertService.warning(); this.sendError(new NoLUFoundException()); } else { List mvwSitArtUdcDetInventario = Stream.of(Objects.requireNonNull(itemsInventario.getValue())) @@ -102,10 +108,12 @@ public class ProdRiposizionamentoDaProdViewModel { x.getNumCollo().equals(mtbColt.getNumCollo())); if (isPresent && mtbColt != null) { + this.mSoundAlertService.success(); mtbColt.setDisablePrint(true); onComplete.run(); this.onLUOpened(mtbColt); } else { + this.mSoundAlertService.warning(); this.sendError(new NoLUFoundException()); } } @@ -171,7 +179,10 @@ public class ProdRiposizionamentoDaProdViewModel { this.sendOnDataSaved(); } }, this::sendError); - } else this.sendError(new NoLUFoundException()); + } else { + this.mSoundAlertService.warning(); + this.sendError(new NoLUFoundException()); + } } } diff --git a/app/src/main/res/raw/success_sound.mp3 b/app/src/main/res/raw/success_sound.mp3 new file mode 100644 index 00000000..2c45524c Binary files /dev/null and b/app/src/main/res/raw/success_sound.mp3 differ diff --git a/app/src/main/res/raw/warning_sound.mp3 b/app/src/main/res/raw/warning_sound.mp3 new file mode 100644 index 00000000..b15e5257 Binary files /dev/null and b/app/src/main/res/raw/warning_sound.mp3 differ