123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316 |
- package com.bgy.autosale.helpers;
- import android.media.MediaPlayer;
- import android.os.Handler;
- import android.os.Message;
- import android.text.TextUtils;
- import android.util.SparseArray;
- import com.bgy.autosale.App;
- import com.bgy.autosale.Constant;
- import com.hboxs.base_library.constant.Global;
- import com.hboxs.base_library.constant.Name;
- import com.orhanobut.hawk.Hawk;
- import java.io.File;
- import java.io.IOException;
- import java.math.BigDecimal;
- import java.math.RoundingMode;
- import java.util.concurrent.TimeUnit;
- import io.reactivex.android.schedulers.AndroidSchedulers;
- import io.reactivex.disposables.Disposable;
- /**
- * Created by cjx on 2021-01-20
- * 说明:
- */
- public class UISoundHelper implements Handler.Callback, MediaPlayer.OnPreparedListener {
- final int SCENE_GUIDE_1 = 1; // 揽客1
- final int SCENE_GUIDE_2 = 2; // 揽客2
- final int SCENE_SELECT_FLAVOR_4 = 4; // 选择口味
- final int SCENE_SELECT_FLAVOR_5 = 5; // 选择口味
- final int SCENE_PAY_BC = 13; // 付款
- final int SCENE_PAY_CB = 14; // 付款
- final int SCENE_MAKE_FINISH = 15; // 制作完成,请取餐
- final int SCENE_TAKE_FINISH = 16; // 订单结束
- final int SCENE_CLEAN = 17; // 清洗
- final int SCENE_ROBOT_ENTER = 18; // 机器人进场
- final int SCENE_PAY_POS = 19; // 付款
- final int SCENE_START_MAKE = 20; // 付款
- private MediaPlayer voiceMediaPlayer;
- private MediaPlayer videoMediaPlayer;
- private static UISoundHelper helper;
- private boolean isVisible = true;
- private Disposable playDelayDisposable;
- private SparseArray<String> sceneVoices;
- private Handler handler;
- private String bgVoicePath = null;
- private MediaPlayer.OnCompletionListener bgVoiceCompleteListener = new MediaPlayer.OnCompletionListener() {
- @Override
- public void onCompletion(MediaPlayer mp) {
- if (!isVisible) {
- return;
- }
- playDelayDisposable = AndroidSchedulers.mainThread().scheduleDirect(new Runnable() {
- @Override
- public void run() {
- voiceMediaPlayer.start();
- }
- }, 3, TimeUnit.SECONDS);
- }
- };
- private MediaPlayer.OnCompletionListener guideVoiceCompleteListener = new MediaPlayer.OnCompletionListener() {
- @Override
- public void onCompletion(MediaPlayer mp) {
- if (!isVisible) {
- return;
- }
- playDelayDisposable = AndroidSchedulers.mainThread().scheduleDirect(new Runnable() {
- @Override
- public void run() {
- if (videoMediaPlayer != null) {
- setVolume(videoMediaPlayer, 0.5f, 0.5f);
- } else {
- playBgVoice();
- }
- }
- }, 1, TimeUnit.SECONDS);
- }
- };
- public static UISoundHelper getInstance() {
- if (helper == null) {
- synchronized (UISoundHelper.class) {
- if (helper == null) {
- helper = new UISoundHelper();
- }
- }
- }
- return helper;
- }
- private UISoundHelper() {
- handler = new Handler(this);
- sceneVoices = new SparseArray<>();
- if (Constant.LANGUAGE_ZH.equals(App.app.language)) {
- sceneVoices.put(SCENE_GUIDE_1, Constant.DIR_VOICE + "/scene_guide_1.mp3");
- sceneVoices.put(SCENE_GUIDE_2, Constant.DIR_VOICE + "/scene_guide_2.mp3");
- sceneVoices.put(SCENE_SELECT_FLAVOR_4, Constant.DIR_VOICE + "/scene_select_1.mp3");
- sceneVoices.put(SCENE_SELECT_FLAVOR_5, Constant.DIR_VOICE + "/scene_select_2.mp3");
- sceneVoices.put(SCENE_PAY_BC, Constant.DIR_VOICE + "/scene_pay_bc.mp3");
- sceneVoices.put(SCENE_PAY_CB, Constant.DIR_VOICE + "/scene_pay_cb.mp3");
- sceneVoices.put(SCENE_MAKE_FINISH, Constant.DIR_VOICE + "/scene_make_finish.mp3");
- sceneVoices.put(SCENE_TAKE_FINISH, Constant.DIR_VOICE + "/scene_take_finish.mp3");
- } else if (!Constant.LANGUAGE_EN.equals(App.app.language)) {
- sceneVoices.put(SCENE_GUIDE_1, Constant.DIR_VOICE_EN + "/scene_guide_1.mp3");
- sceneVoices.put(SCENE_GUIDE_2, Constant.DIR_VOICE_EN + "/scene_guide_2.mp3");
- sceneVoices.put(SCENE_SELECT_FLAVOR_4, Constant.DIR_VOICE_EN + "/scene_select_1.mp3");
- sceneVoices.put(SCENE_SELECT_FLAVOR_5, Constant.DIR_VOICE_EN + "/scene_select_2.mp3");
- sceneVoices.put(SCENE_PAY_POS, Constant.DIR_VOICE_EN + "/scene_pay_pos.mp3");
- sceneVoices.put(SCENE_START_MAKE, Constant.DIR_VOICE_EN + "/scene_start_make.mp3");
- sceneVoices.put(SCENE_MAKE_FINISH, Constant.DIR_VOICE_EN + "/scene_make_finish.mp3");
- sceneVoices.put(SCENE_TAKE_FINISH, Constant.DIR_VOICE_EN + "/scene_take_finish.mp3");
- } else {
- }
- sceneVoices.put(SCENE_CLEAN, Constant.DIR_VOICE + "/scene_clean_close.mp3");
- sceneVoices.put(SCENE_ROBOT_ENTER, Constant.DIR_VOICE + "/scene_robot_enter.mp3");
- voiceMediaPlayer = new MediaPlayer();
- voiceMediaPlayer.setOnPreparedListener(this);
- }
- @Override
- public void onPrepared(MediaPlayer mp) {
- voiceMediaPlayer.start();
- }
- @Override
- public boolean handleMessage(Message msg) {
- switch (msg.what) {
- case SCENE_CLEAN:
- playClean(true);
- break;
- case SCENE_SELECT_FLAVOR_4:
- play(SCENE_SELECT_FLAVOR_4);
- break;
- case SCENE_PAY_CB:
- playOrderPay(false, true);
- break;
- case SCENE_PAY_BC:
- playOrderPay(true, true);
- break;
- }
- return false;
- }
- public void setBgVoicePath(String path) {
- this.bgVoicePath = path;
- }
- public void setVideoMediaPlayer(MediaPlayer mp) {
- videoMediaPlayer = mp;
- setVolume(videoMediaPlayer, 0.5f, 0.5f);
- }
- public void resetVideoMediaPlayerVolume() {
- try {
- if (videoMediaPlayer != null) {
- setVolume(videoMediaPlayer, 0.5f, 0.5f);
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- public void playBgVoice() {
- playVoice(bgVoicePath, true);
- }
- public void playVoice(String path, boolean isBgVoice) {
- if (playDelayDisposable != null) {
- playDelayDisposable.dispose();
- }
- if (TextUtils.isEmpty(path)) {
- return;
- }
- File f = new File(path);
- if (!f.exists()) {
- return;
- }
- voiceMediaPlayer.reset();
- if (isBgVoice) {
- setVolume(voiceMediaPlayer, 0.5f, 0.5f);
- voiceMediaPlayer.setOnCompletionListener(bgVoiceCompleteListener);
- } else {
- if (isVisible) {
- // 关闭视频的声音
- if (videoMediaPlayer != null) {
- setVolume(videoMediaPlayer, 0f, 0f);
- }
- voiceMediaPlayer.setOnCompletionListener(guideVoiceCompleteListener);
- } else {
- voiceMediaPlayer.setOnCompletionListener(null);
- }
- setVolume(voiceMediaPlayer, 1.0f, 1.0f);
- }
- try {
- voiceMediaPlayer.setDataSource(path);
- voiceMediaPlayer.prepareAsync();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- public void setVisible(boolean visible) {
- this.isVisible = visible;
- if (playDelayDisposable != null) {
- playDelayDisposable.dispose();
- }
- if (!visible) {
- voiceMediaPlayer.pause();
- }
- }
- /**
- * 播放选中口味的语音
- */
- public void playSelectFlavor(boolean enable) {
- if (enable) {
- handler.sendEmptyMessageDelayed(SCENE_SELECT_FLAVOR_4, 10000);
- play(SCENE_SELECT_FLAVOR_4);
- } else {
- handler.removeMessages(SCENE_SELECT_FLAVOR_4);
- }
- }
- /**
- * 播放提示付款的语音
- *
- * @param scanGun 是否使用扫码枪收款
- */
- public void playOrderPay(boolean scanGun, boolean enable) {
- int scene;
- if (App.app.payChannel == Constant.PAY_POS_DEVICE) {
- scene = SCENE_PAY_POS;
- } else {
- scene = scanGun ? SCENE_PAY_BC : SCENE_PAY_CB;
- }
- if (enable) {
- play(scene);
- handler.sendEmptyMessageDelayed(scene, 10000);
- } else {
- handler.removeMessages(scene);
- }
- }
- public void playOrderMake() {
- play(SCENE_START_MAKE);
- }
- /**
- * 播放取餐提示
- */
- public void playOrderTake() {
- play(SCENE_MAKE_FINISH);
- }
- /**
- * 播放订单完成提示
- */
- public void playOrderFinish() {
- play(SCENE_TAKE_FINISH);
- if (Hawk.get(Name.VALUE_ZERO,false)){
- Global.hasmoney = new BigDecimal("0").setScale(2, RoundingMode.HALF_UP);
- Global.hascoin = new BigDecimal("0").setScale(2, RoundingMode.HALF_UP);
- }
- }
- public void playRadarGuide(boolean isJump) {
- UISoundHelper.getInstance().play(isJump ? SCENE_GUIDE_1 : SCENE_GUIDE_2);
- }
- public void playGuideEnter() {
- play(SCENE_ROBOT_ENTER);
- }
- public void playClean(boolean enable) {
- if (!enable) {
- handler.removeMessages(SCENE_CLEAN);
- } else {
- play(SCENE_CLEAN);
- handler.sendEmptyMessageDelayed(SCENE_CLEAN, 8000);
- }
- }
- private void play(int scene) {
- if (Hawk.get(Name.VOICE_MEAL_PICKUP_PROMPTS,true)) {
- playVoice(sceneVoices.get(scene), false);
- }
- }
- private void setVolume(MediaPlayer mediaPlayer, float left, float right) {
- try {
- mediaPlayer.setVolume(left, right);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
|