package com.uiuios.aios.activity; import android.content.Context; import android.content.Intent; import android.media.AudioManager; import android.media.MediaPlayer; import android.os.Bundle; import android.os.PowerManager; import android.os.Vibrator; import android.text.TextUtils; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; import androidx.appcompat.app.AppCompatActivity; import androidx.constraintlayout.widget.ConstraintLayout; import com.blankj.utilcode.util.FileUtils; import com.bumptech.glide.Glide; import com.bumptech.glide.load.resource.bitmap.RoundedCorners; import com.bumptech.glide.request.RequestOptions; import com.uiuios.aios.R; import com.uiuios.aios.alarm.AlarmClockData; import com.uiuios.aios.alarm.AlarmUtils; import com.uiuios.aios.bean.BaseResponse; import com.uiuios.aios.network.NetInterfaceManager; import com.uiuios.aios.utils.FileUtil; import com.uiuios.aios.utils.ScreenUtils; import com.uiuios.aios.utils.Utils; import com.uiuios.aios.utils.WakeUpUtils; import com.uiuios.aios.view.JzvdStdAssert; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.net.URI; import java.util.HashMap; import butterknife.BindView; import butterknife.ButterKnife; import cn.jzvd.JZDataSource; import cn.jzvd.Jzvd; import io.reactivex.rxjava3.annotations.NonNull; import io.reactivex.rxjava3.core.Observer; import io.reactivex.rxjava3.disposables.Disposable; public class NoticeInfoActivity extends AppCompatActivity { private String TAG = NoticeInfoActivity.class.getSimpleName(); @BindView(R.id.tv_title) TextView tv_title; @BindView(R.id.bt_ok) Button bt_ok; @BindView(R.id.cl_voice) ConstraintLayout cl_voice; @BindView(R.id.cl_vp) ConstraintLayout cl_vp; @BindView(R.id.jz_video) JzvdStdAssert jz_video; @BindView(R.id.imageView) ImageView imageView; private AlarmClockData mAlarmClockData; private int mId; private MediaPlayer mMediaPlayer; private PowerManager mPowerManager; private PowerManager.WakeLock mWakeLock; private AudioManager mAudioManager; private Vibrator mVibrator; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_notice_info); ButterKnife.bind(this); Intent intent = getIntent(); mId = intent.getIntExtra("id", -1); mPowerManager = (PowerManager) getSystemService(Context.POWER_SERVICE); mWakeLock = mPowerManager.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.SCREEN_DIM_WAKE_LOCK, "WakeAndLock"); mVibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); int maxVolume = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC); mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, maxVolume, AudioManager.FLAG_PLAY_SOUND); mMediaPlayer = new MediaPlayer(); if (mId == -1) { finish(); } else { mWakeLock.acquire(60 * 1000L); long[] pattern = {1000, 5000, 1000, 5000}; mVibrator.vibrate(pattern, 0); WakeUpUtils.wakeUpAndUnlockScreen(this); HashMap oldData = AlarmUtils.getInstance().getOldDataMap(); mAlarmClockData = oldData.get(mId); if (mAlarmClockData == null) { finish(); } Log.e(TAG, "onCreate: " + mAlarmClockData); showPic(mAlarmClockData); jz_video.postDelayed(new Runnable() { @Override public void run() { showData(mAlarmClockData); } }, 123); } } private void showPic(AlarmClockData alarmClockData) { tv_title.setText(alarmClockData.getTitle()); bt_ok.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { HashMap oldData = AlarmUtils.getInstance().getOldDataMap(); AlarmClockData alarm = oldData.get(mId); if (alarm != null) { alarm.setFinished(true); AlarmUtils.getInstance().updateAlarmFinished(alarm); } NetInterfaceManager.getInstance() .getUpdateAlarmObservable(alarmClockData.getId()) .subscribe(new Observer() { @Override public void onSubscribe(@NonNull Disposable d) { Log.e("showData", "onSubscribe: "); } @Override public void onNext(@NonNull BaseResponse baseResponse) { Log.e("showData", "onNext: " + baseResponse); } @Override public void onError(@NonNull Throwable e) { Log.e("showData", "onError: " + e.getMessage()); onComplete(); } @Override public void onComplete() { Log.e("showData", "onComplete: "); finish(); } }); } }); String voiceUrl = alarmClockData.getVoice(); String voicemd5 = alarmClockData.getVoice_md5(); if (!TextUtils.isEmpty(voiceUrl)) { cl_voice.setVisibility(View.VISIBLE); String fileName = Utils.getFileNamefromURL(voiceUrl); File file = new File(Utils.getDownLoadPath(NoticeInfoActivity.this) + fileName); String fileMD5 = FileUtils.getFileMD5ToString(file); // if (!md5.equals(fileMD5)) { // // TODO: 2021/12/16 // } else { try { // 切歌之前先重置,释放掉之前的资源 mMediaPlayer.reset(); FileInputStream fis = new FileInputStream(file); mMediaPlayer.setDataSource(fis.getFD()); // 设置播放源 // mediaPlayer.setDataSource(file.getAbsolutePath()); // 开始播放前的准备工作,加载多媒体资源,获取相关信息 mMediaPlayer.prepare(); // 开始播放 mMediaPlayer.start(); } catch (IOException e) { e.printStackTrace(); Log.e(TAG, "showData: " + e.getMessage()); } // } } else { cl_voice.setVisibility(View.GONE); } String filePath = alarmClockData.getFile(); RequestOptions options = new RequestOptions().transform(new RoundedCorners(ScreenUtils.dip2px(this, 16F))); String fileName = filePath.substring(filePath.lastIndexOf("/") + 1, filePath.length()); String realPath = Utils.getDownLoadPath(NoticeInfoActivity.this) + fileName; File file = new File(realPath); if (file.exists()){ Glide.with(NoticeInfoActivity.this).load(file).apply(options).error(R.drawable.icon_nodata).into(imageView); }else { Glide.with(NoticeInfoActivity.this).load(filePath).apply(options).error(R.drawable.icon_nodata).into(imageView); } } private void showData(AlarmClockData alarmClockData) { String filePath = alarmClockData.getFile(); if (!TextUtils.isEmpty(filePath)) { cl_vp.setVisibility(View.VISIBLE); String fileType = FileUtil.getFileType(filePath); Log.e(TAG, "showData: " + fileType); if (FileUtil.isPictureFile(fileType)) { jz_video.setVisibility(View.GONE); imageView.setVisibility(View.VISIBLE); RequestOptions options = new RequestOptions().transform(new RoundedCorners(ScreenUtils.dip2px(this, 16F))); String fileName = filePath.substring(filePath.lastIndexOf("/") + 1, filePath.length()); String realPath = Utils.getDownLoadPath(NoticeInfoActivity.this) + fileName; File file = new File(realPath); if (file.exists()){ Glide.with(NoticeInfoActivity.this).load(file).apply(options).error(R.drawable.icon_nodata).into(imageView); }else { Glide.with(NoticeInfoActivity.this).load(filePath).apply(options).error(R.drawable.icon_nodata).into(imageView); } } else if (FileUtil.isVideoFile(fileType)) { jz_video.setVisibility(View.VISIBLE); imageView.setVisibility(View.GONE); String fileName = filePath.substring(filePath.lastIndexOf("/") + 1, filePath.length()); String realPath = Utils.getDownLoadPath(NoticeInfoActivity.this) + fileName; File file = new File(realPath); JZDataSource jzDataSource; if (!file.exists()) { jzDataSource = new JZDataSource(filePath, ""); Log.e(TAG, "showData: not exists"); } else { Log.e(TAG, "showData: exists " + file); URI uri = file.toURI(); jzDataSource = new JZDataSource(uri.toString(), ""); } jzDataSource.looping = true; jz_video.setUp(jzDataSource, Jzvd.SCREEN_NORMAL); jz_video.startPreloading(); jz_video.startVideoAfterPreloading(); jz_video.startVideo(); } } else { cl_vp.setVisibility(View.GONE); } } @Override protected void onDestroy() { super.onDestroy(); if (mMediaPlayer != null) { if (mMediaPlayer.isPlaying()) { mMediaPlayer.stop(); } mMediaPlayer.release(); mMediaPlayer = null; } } @Override public void onBackPressed() { if (Jzvd.backPress()) { return; } super.onBackPressed(); } @Override protected void onPause() { super.onPause(); Jzvd.releaseAllVideos(); } }