diff --git a/moduleUtil/src/main/assets/draw.mp3 b/moduleUtil/src/main/assets/draw.mp3 new file mode 100644 index 0000000..448b70e Binary files /dev/null and b/moduleUtil/src/main/assets/draw.mp3 differ diff --git a/moduleUtil/src/main/assets/draw_music.mp3 b/moduleUtil/src/main/assets/draw_music.mp3 new file mode 100644 index 0000000..3fe540f Binary files /dev/null and b/moduleUtil/src/main/assets/draw_music.mp3 differ diff --git a/moduleUtil/src/main/java/com/xscm/moduleutil/dialog/giftLottery/GiftLotteryDialog.java b/moduleUtil/src/main/java/com/xscm/moduleutil/dialog/giftLottery/GiftLotteryDialog.java index f6c8985..abc3c20 100644 --- a/moduleUtil/src/main/java/com/xscm/moduleutil/dialog/giftLottery/GiftLotteryDialog.java +++ b/moduleUtil/src/main/java/com/xscm/moduleutil/dialog/giftLottery/GiftLotteryDialog.java @@ -3,6 +3,8 @@ package com.xscm.moduleutil.dialog.giftLottery; import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; +import android.content.res.AssetFileDescriptor; +import android.media.MediaPlayer; import android.os.Bundle; import android.os.Handler; import android.os.Looper; @@ -14,6 +16,7 @@ import androidx.annotation.Nullable; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.alibaba.android.arouter.launcher.ARouter; import com.blankj.utilcode.util.ToastUtils; import com.xscm.moduleutil.R; import com.xscm.moduleutil.activity.IPresenter; @@ -22,10 +25,14 @@ import com.xscm.moduleutil.bean.GiftBean; import com.xscm.moduleutil.bean.blindboxwheel.BlindBoxBean; import com.xscm.moduleutil.bean.blindboxwheel.BlindReslutBean; import com.xscm.moduleutil.databinding.DialogGiftLotteryBinding; +import com.xscm.moduleutil.dialog.WebViewDialog; import com.xscm.moduleutil.http.RetrofitClient; +import com.xscm.moduleutil.utils.ARouteConstants; import com.xscm.moduleutil.widget.GiftCardView; +import java.io.IOException; import java.util.ArrayList; +import java.util.Iterator; import java.util.List; /** @@ -135,10 +142,12 @@ public class GiftLotteryDialog extends BaseMvpDialogFragment iterator = targetArrayIndex.iterator(); + while (iterator.hasNext()) { + int index = iterator.next(); if (currentIndex == index) { GiftCardView targetGiftView = allViewsArray.get(index); targetGiftView.setSelected(true); targetGiftView.setVisibilitymResultTextView(true); targetGiftView.startPulseAnimationWithLayer(); - targetArrayIndex.remove(i); + iterator.remove(); // 安全地移除元素 finishTargetArrayIndex.add(index); + foundTarget = true; + if (!isOpenSound){ + if (player != null) { + player.stop(); + player.release(); + player = null; + } + } + if (!isOpenSpecial){ + playSound("draw.mp3"); + } break; } } @@ -260,6 +287,7 @@ public class GiftLotteryDialog extends BaseMvpDialogFragment 0) { + playMp4(downloadedFile); + mFile = downloadedFile; + } else { + Logger.e(TAG, "Downloaded file is invalid"); + handleDownloadFailure(url, cause, new IOException("Downloaded file is invalid")); + } + } else { + handleDownloadFailure(url, cause, realCause); + } + } + }); + } } } + private void handleDownloadFailure(String url, EndCause cause, Exception realCause) { + Logger.e(TAG, "Download failed: " + cause + ", real cause: " + realCause); + + // 尝试重试一次 + mainHandler.postDelayed(() -> { + // 检查队列是否仍然包含这个项目 + boolean shouldRetry = false; + for (PlayItem item : playQueue) { + if (item.url.equals(url)) { + shouldRetry = true; + break; + } + } + + if (shouldRetry) { + // 重新添加到队列开头 + playQueue.add(new PlayItem(url, mType)); + playNextFromQueue(); + } else { + isPlaying = false; + playNextFromQueue(); + } + }, 1000); // 1秒后重试 + } + // 添加检查进行中任务的方法 + private void attachToExistingTask(DownloadTask task) { + // 为已经在队列中的任务附加监听器 + task.enqueue(new DownloadListener1() { + @Override + public void taskEnd(@NonNull DownloadTask task, @NonNull EndCause cause, @Nullable Exception realCause, @NonNull Listener1Assist.Listener1Model model) { + if (cause == EndCause.COMPLETED) { + playMp4(task.getFile()); + mFile = task.getFile(); + } else { + isPlaying = false; + playNextFromQueue(); + } + } + + // 其他回调方法保持空实现或按需处理 + @Override public void taskStart(@NonNull DownloadTask task, @NonNull Listener1Assist.Listener1Model model) {} + @Override public void retry(@NonNull DownloadTask task, @NonNull ResumeFailedCause cause) {} + @Override public void connected(@NonNull DownloadTask task, int blockCount, long currentOffset, long totalLength) {} + @Override public void progress(@NonNull DownloadTask task, long currentOffset, long totalLength) {} + }); + } private void playMp4(File file) { if (file != null) { mBinding.playView.startPlay(file);