Files
XiaoxintongSystemOS/app/src/main/java/com/uiuios/aios/activity/NoticeInfoActivity.java
Fanhuitong 3e440de562 version:3.5
fix:
update:优化退出,增加闹钟
2023-05-29 10:21:55 +08:00

268 lines
10 KiB
Java

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<Integer, AlarmClockData> 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<Integer, AlarmClockData> 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<BaseResponse>() {
@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();
}
}