Files
XiaoxintongSystemOS/app/src/main/java/com/xxpatx/os/adapter/NotificationAdapter.java
Fanhuitong a8c6e48435 version:1.0.0
update:更换包名
bugfixes:
2024-07-11 10:30:46 +08:00

197 lines
6.6 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package com.xxpatx.os.adapter;
import android.content.Context;
import android.graphics.Bitmap;
import android.media.AudioAttributes;
import android.media.MediaPlayer;
import android.text.TextUtils;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.recyclerview.widget.RecyclerView;
import com.shehuan.niv.NiceImageView;
import com.xxpatx.os.R;
import com.xxpatx.os.alarm.AlarmClockData;
import com.xxpatx.os.utils.FFmpegUtils;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import io.reactivex.rxjava3.core.Observer;
import io.reactivex.rxjava3.disposables.Disposable;
public class NotificationAdapter extends RecyclerView.Adapter<NotificationAdapter.Holder> {
private Context mContext;
private List<AlarmClockData> dataList;
private OnClickListener mOnClickListener;
public void setDataList(List<AlarmClockData> data) {
this.dataList = data;
notifyDataSetChanged();
}
public void setOnClickListener(OnClickListener listener) {
this.mOnClickListener = listener;
}
public interface OnClickListener {
void onClick();
}
@NonNull
@Override
public Holder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
mContext = parent.getContext();
return new Holder(LayoutInflater.from(mContext).inflate(R.layout.item_notification, parent, false));
}
@Override
public void onBindViewHolder(@NonNull Holder holder, int position) {
switch (position%3){
case 1:
holder.root.setBackground(mContext.getDrawable(R.drawable.home_alarm_blue));
break;
case 2:
holder.root.setBackground(mContext.getDrawable(R.drawable.home_alarm_green));
break;
case 0:
holder.root.setBackground(mContext.getDrawable(R.drawable.home_alarm_red));
break;
default:
}
AlarmClockData alarmClockData = dataList.get(position);
// holder.tv_title.setText("提醒事件:" + alarmClockData.getTitle());
String time = alarmClockData.getTime();
if (time.length() > 5) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
SimpleDateFormat hours = new SimpleDateFormat("HH:mm");
try {
Date date = sdf.parse(time);
String hourTime = hours.format(date);
holder.tv_time.setText(hourTime);
} catch (ParseException e) {
e.printStackTrace();
}
} else {
holder.tv_time.setText(time);
}
String file = alarmClockData.getFile();
if (TextUtils.isEmpty(file)) {
// Glide.with(holder.iv_cover).load(R.drawable.home_reminder_icon).into(holder.iv_cover);
} else {
FFmpegUtils.loadVideoScreenshot(file, new Observer<Bitmap>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
}
@Override
public void onNext(@NonNull Bitmap bitmap) {
// Glide.with(holder.iv_cover).load(bitmap).into(holder.iv_cover);
}
@Override
public void onError(@NonNull Throwable e) {
}
@Override
public void onComplete() {
}
});
}
String voice = alarmClockData.getVoice();
holder.root.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (mOnClickListener != null) {
mOnClickListener.onClick();
}
}
});
if (TextUtils.isEmpty(voice)) {
// holder.cl_voice.setVisibility(View.GONE);
} else {
// holder.cl_voice.setVisibility(View.VISIBLE);
MediaPlayer mMediaPlayer = new MediaPlayer();
mMediaPlayer.setAudioAttributes(
new AudioAttributes.Builder()
.setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
.build()
);
mMediaPlayer.setOnCompletionListener(mp -> Log.e("setOnCompletionListener", "onCompletion: "));
mMediaPlayer.setOnPreparedListener(mp -> Log.e("setOnPreparedListener", "onPrepared: "));
mMediaPlayer.setOnErrorListener((mp, what, extra) -> false);
//设置音频文件到MediaPlayer对象中
try {
mMediaPlayer.setDataSource(voice);
} catch (IOException e) {
e.printStackTrace();
}
//让MediaPlayer对象准备用这个方法防止加载时耗时导致anr
mMediaPlayer.prepareAsync();
FFmpegUtils.getDurationInMilliseconds(voice, new Observer<Integer>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
}
@Override
public void onNext(@NonNull Integer integer) {
// holder.tv_voice.setText(integer + "秒");
}
@Override
public void onError(@NonNull Throwable e) {
}
@Override
public void onComplete() {
}
});
// holder.cl_voice.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View v) {
// mMediaPlayer.start();
// }
// });
}
}
@Override
public int getItemCount() {
return dataList == null ? 0 : dataList.size();
}
class Holder extends RecyclerView.ViewHolder {
// TextView tv_title;
TextView tv_time;
// TextView tv_voice;
// ConstraintLayout cl_voice;
ConstraintLayout root;
NiceImageView iv_cover;
public Holder(@NonNull View itemView) {
super(itemView);
root = itemView.findViewById(R.id.root);
// tv_title = itemView.findViewById(R.id.tv_title);
tv_time = itemView.findViewById(R.id.tv_time);
// tv_voice = itemView.findViewById(R.id.tv_voice);
// cl_voice = itemView.findViewById(R.id.cl_voice);
iv_cover = itemView.findViewById(R.id.iv_cover);
}
}
}