fix:
update:优化类名,准备修复闹钟问题
This commit is contained in:
2024-08-24 16:56:05 +08:00
parent 261016b9bd
commit 251b6a3329
51 changed files with 1059 additions and 1959 deletions

View File

@@ -21,11 +21,12 @@ import com.bumptech.glide.Glide;
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import com.bumptech.glide.request.RequestOptions;
import com.xxpatx.os.R;
import com.xxpatx.os.activity.alarmclock.edit.AlarmClockEditActivity;
import com.xxpatx.os.activity.alarm.edit.AlarmEditActivity;
import com.xxpatx.os.utils.FFmpegUtils;
import com.xxpatx.os.utils.ScreenUtils;
import com.xxpatx.os.utils.Utils;
import com.xxpatx.os.view.JzvdStdRound;
import com.xxpatx.os.view.ToggleButton;
import java.io.File;
import java.io.IOException;
@@ -61,7 +62,7 @@ public class AlarmAdapter extends RecyclerView.Adapter<AlarmAdapter.holder> {
@Override
public holder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
mContext = (FragmentActivity) parent.getContext();
return new AlarmAdapter.holder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_alarm_clock, parent, false));
return new AlarmAdapter.holder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_alarm_port, parent, false));
}
@Override
@@ -104,6 +105,28 @@ public class AlarmAdapter extends RecyclerView.Adapter<AlarmAdapter.holder> {
} else {
holder.tv_title.setText(title);
}
int is_onoff = alarmClockData.getIs_onoff();
holder.toggleButton2.setDisable(true);
if (is_onoff == 1) {
holder.tv_status.setText("已开启");
holder.toggleButton2.setToggleOn(false);
} else {
holder.tv_status.setText("已关闭");
holder.toggleButton2.setToggleOff(false);
}
int type = alarmClockData.getClazz();
switch (type){
case 1:
default:
holder.iv_type.setImageDrawable(mContext.getDrawable(R.drawable.icon_alarm_medicine_pressed));
break;
case 2:
holder.iv_type.setImageDrawable(mContext.getDrawable(R.drawable.icon_alarm_look_pressed));
break;
case 3:
holder.iv_type.setImageDrawable(mContext.getDrawable(R.drawable.icon_alarm_reserve_pressed));
break;
}
String voice = alarmClockData.getVoice();
if (TextUtils.isEmpty(voice)) {
holder.cl_voice.setVisibility(View.GONE);
@@ -218,7 +241,7 @@ public class AlarmAdapter extends RecyclerView.Adapter<AlarmAdapter.holder> {
holder.root.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(mContext, AlarmClockEditActivity.class);
Intent intent = new Intent(mContext, AlarmEditActivity.class);
intent.putExtra("id", alarmClockData.getId());
mContext.startActivity(intent);
}
@@ -241,10 +264,11 @@ public class AlarmAdapter extends RecyclerView.Adapter<AlarmAdapter.holder> {
}
class holder extends RecyclerView.ViewHolder {
TextView tv_time, tv_remind_type, tv_title, tv_voice;
TextView tv_time, tv_remind_type, tv_title, tv_voice, tv_status;
ConstraintLayout cl_voice, cl_vp, root;
JzvdStdRound jz_video;
ImageView imageView;
ImageView imageView,iv_type;
ToggleButton toggleButton2;
public holder(@NonNull View itemView) {
super(itemView);
@@ -257,7 +281,9 @@ public class AlarmAdapter extends RecyclerView.Adapter<AlarmAdapter.holder> {
root = itemView.findViewById(R.id.root);
jz_video = itemView.findViewById(R.id.jz_video);
imageView = itemView.findViewById(R.id.imageView);
iv_type = itemView.findViewById(R.id.iv_type);
tv_status = itemView.findViewById(R.id.tv_status);
toggleButton2 = itemView.findViewById(R.id.toggleButton2);
}
}
}

View File

@@ -6,10 +6,8 @@ import android.database.sqlite.SQLiteOpenHelper;
public class AlarmOpenHelper extends SQLiteOpenHelper {
public static final int DATABASE_VERSION = 2;
public static final int DATABASE_VERSION = 3;
public static final String DATABASE_NAME = "AlarmDatabase.db";
// public static final String DATABASE_FILE_NAME = Environment.getExternalStorageDirectory().getPath() + File.separator + DATABASE_NAME;
public static final String DATABASE_FILE_NAME = DATABASE_NAME;
public static final String TABLE_ALARM = " AlarmTable";
@@ -23,6 +21,7 @@ public class AlarmOpenHelper extends SQLiteOpenHelper {
public static final String KEY_FILE_MD5 = "file_md5";
public static final String KEY_REMIND_TYPE = "remind_type";
public static final String KEY_IS_ONOFF = "is_onoff";
public static final String KEY_CLAZZ = "clazz";
public static final String KEY_FINISHED = "finished";
public static final String KEY_IS_LOCAL = "is_local";
@@ -42,6 +41,7 @@ public class AlarmOpenHelper extends SQLiteOpenHelper {
+ KEY_FILE_MD5 + " TEXT,"
+ KEY_REMIND_TYPE + " INTEGER,"
+ KEY_IS_ONOFF + " INTEGER,"
+ KEY_CLAZZ + " INTEGER,"
+ KEY_FINISHED + " BOOLEAN DEFAULT 0,"
+ KEY_IS_LOCAL + " BOOLEAN DEFAULT 0,"
@@ -64,12 +64,15 @@ public class AlarmOpenHelper extends SQLiteOpenHelper {
case 1:
db.execSQL(CREATE_ALARM_TABLE); // 执行修改表,添加字段的逻辑。
case 2:
String sql = "ALTER TABLE " + TABLE_ALARM + " ADD COLUMN " + KEY_EDITED + " BOOLEAN DEFAULT 0";
String sql = "ALTER TABLE " + TABLE_ALARM + " ADD COLUMN " + KEY_EDITED + " BOOLEAN DEFAULT 0";
db.execSQL(sql);
String sql2 = "ALTER TABLE " + TABLE_ALARM + " ADD COLUMN " + KEY_DELETED + " BOOLEAN DEFAULT 0";
String sql2 = "ALTER TABLE " + TABLE_ALARM + " ADD COLUMN " + KEY_DELETED + " BOOLEAN DEFAULT 0";
db.execSQL(sql2);
String sql3 = "ALTER TABLE " + TABLE_ALARM + " ADD COLUMN " + KEY_FILE_MD5 + " TEXT";
String sql3 = "ALTER TABLE " + TABLE_ALARM + " ADD COLUMN " + KEY_FILE_MD5 + " TEXT";
db.execSQL(sql3);
case 3:
String sql4 = "ALTER TABLE " + TABLE_ALARM + " ADD COLUMN " + KEY_CLAZZ + " INTEGER";
db.execSQL(sql4);
}
}
}

View File

@@ -8,11 +8,13 @@ import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Environment;
import android.text.TextUtils;
import android.util.Log;
import com.arialyy.aria.core.Aria;
import com.blankj.utilcode.util.FileUtils;
import com.xxpatx.os.BuildConfig;
import com.xxpatx.os.service.main.MainService;
import com.xxpatx.os.utils.FileUtil;
import com.xxpatx.os.utils.Utils;
@@ -55,13 +57,20 @@ public class AlarmUtils {
public static final int OFF_DAY = 4;
private AlarmUtils(Context context) {
this.mContext = context;
this.mContext = context.getApplicationContext();
// this.mAlarmOpenHelper = new AlarmOpenHelper(context, AlarmOpenHelper.DATABASE_NAME, null, AlarmOpenHelper.DATABASE_VERSION);
this.mAlarmOpenHelper = new AlarmOpenHelper(context,
context.getExternalCacheDir() + File.separator + AlarmOpenHelper.DATABASE_FILE_NAME,
null, AlarmOpenHelper.DATABASE_VERSION);
if (BuildConfig.DEBUG) {
this.mAlarmOpenHelper = new AlarmOpenHelper(context,
Environment.getExternalStorageDirectory() + File.separator + AlarmOpenHelper.DATABASE_NAME,
null, AlarmOpenHelper.DATABASE_VERSION);
} else {
this.mAlarmOpenHelper = new AlarmOpenHelper(context,
context.getExternalCacheDir() + File.separator + AlarmOpenHelper.DATABASE_NAME,
null, AlarmOpenHelper.DATABASE_VERSION);
}
this.mDatabase = mAlarmOpenHelper.getWritableDatabase();
this.mAlarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
pendingIntents = getOldPendingIntentsSet();
}
public static void init(Context context) {
@@ -98,6 +107,7 @@ public class AlarmUtils {
values.put(AlarmOpenHelper.KEY_FILE_MD5, alarmClockData.getFile_md5());
values.put(AlarmOpenHelper.KEY_REMIND_TYPE, alarmClockData.getRemind_type());
values.put(AlarmOpenHelper.KEY_IS_ONOFF, alarmClockData.getIs_onoff());
values.put(AlarmOpenHelper.KEY_CLAZZ, alarmClockData.getClazz());
values.put(AlarmOpenHelper.KEY_FINISHED, alarmClockData.isFinished());
values.put(AlarmOpenHelper.KEY_IS_LOCAL, alarmClockData.isIs_local());
@@ -113,7 +123,6 @@ public class AlarmUtils {
* @return
*/
public boolean addAlarmClock(AlarmClockData alarmClockData) {
openDatabase();
ContentValues values = getValuesFromAlarmClock(alarmClockData);
long id = 0;
mDatabase.beginTransaction();
@@ -129,6 +138,27 @@ public class AlarmUtils {
return id > 0;
}
/**
* 增加数据
*
* @param alarmClockData
* @return
*/
public boolean addLocalAlarmClock(AlarmClockData alarmClockData) {
ContentValues values = getValuesFromAlarmClock(alarmClockData);
long id = 0;
mDatabase.beginTransaction();
try {
id = mDatabase.insertWithOnConflict(AlarmOpenHelper.TABLE_ALARM, null, values, SQLiteDatabase.CONFLICT_REPLACE);
mDatabase.setTransactionSuccessful();
} catch (Exception e) {
Log.e(TAG, "addLocalAlarmClock: " + e.getMessage());
} finally {
mDatabase.endTransaction();
}
return id > 0;
}
/**
* 更新数据
@@ -137,7 +167,6 @@ public class AlarmUtils {
* @return
*/
public boolean updateAlarmClock(AlarmClockData alarmClockData) {
openDatabase();
AlarmClockData old = getDatabaseSingleAlarm(alarmClockData);
if (old != null) {
PendingIntent pendingIntent = getPendingIntent(old);
@@ -161,7 +190,6 @@ public class AlarmUtils {
}
public boolean updateAlarmClock(AlarmClockData alarmClockData, int newId) {
openDatabase();
int oldId = alarmClockData.getId();
AlarmClockData old = getDatabaseSingleAlarm(alarmClockData);
if (old != null) {
@@ -193,7 +221,6 @@ public class AlarmUtils {
* @param list
*/
public void insertAlarmClockList(List<AlarmClockData> list) {
openDatabase();
List<ContentValues> contentValuesList = new ArrayList<>();
for (AlarmClockData alarmClockData : list) {
ContentValues values = getValuesFromAlarmClock(alarmClockData);
@@ -230,7 +257,6 @@ public class AlarmUtils {
}
public boolean deleteAlarmClock(int RowID) {
openDatabase();
long id = 0;
mDatabase.beginTransaction();
try {
@@ -248,6 +274,7 @@ public class AlarmUtils {
* 删除所有闹钟
*/
public void deleteAllAlarmClock() {
Log.e(TAG, "deleteAllAlarmClock: ");
HashSet<PendingIntent> pendingIntents = getOldPendingIntentsSet();
Iterator<PendingIntent> pendingIntentIterator = pendingIntents.iterator();
while (pendingIntentIterator.hasNext()) {
@@ -257,6 +284,10 @@ public class AlarmUtils {
}
List<AlarmClockData> alarmClockData = getDatabaseAlarms();
for (AlarmClockData data : alarmClockData) {
Log.e(TAG, "deleteAllAlarmClock: id = " + data);
if (data.isIs_local()) {
continue;
}
deleteAlarmClock(data.getId());
}
}
@@ -267,27 +298,28 @@ public class AlarmUtils {
* @return
*/
public List<AlarmClockData> getDatabaseAlarms() {
openDatabase();
List<AlarmClockData> list = new ArrayList<>();
String selectQuery = "SELECT * FROM " + AlarmOpenHelper.TABLE_ALARM;
Cursor cursor = mDatabase.rawQuery(selectQuery, null);
if (cursor.moveToFirst()) {
do {
AlarmClockData alarmClockData = new AlarmClockData();
alarmClockData.setId(Integer.parseInt(cursor.getString(0)));
alarmClockData.setType(cursor.getInt(1));
alarmClockData.setTime(cursor.getString(2));
alarmClockData.setTitle(cursor.getString(3));
alarmClockData.setVoice(cursor.getString(4));
alarmClockData.setVoice_md5(cursor.getString(5));
alarmClockData.setFile(cursor.getString(6));
alarmClockData.setFile_md5(cursor.getString(7));
alarmClockData.setRemind_type(cursor.getInt(8));
alarmClockData.setIs_onoff(cursor.getInt(9));
alarmClockData.setFinished(cursor.getInt(10) == 1);
alarmClockData.setIs_local(cursor.getInt(11) == 1);
alarmClockData.setEdited(cursor.getInt(12) == 1);
alarmClockData.setDeleted(cursor.getInt(13) == 1);
alarmClockData.setId(cursor.getInt(cursor.getColumnIndex(AlarmOpenHelper.KEY_ID)));
alarmClockData.setType(cursor.getInt(cursor.getColumnIndex(AlarmOpenHelper.KEY_TYPE)));
alarmClockData.setTime(cursor.getString(cursor.getColumnIndex(AlarmOpenHelper.KEY_TIME)));
alarmClockData.setTitle(cursor.getString(cursor.getColumnIndex(AlarmOpenHelper.KEY_TITLE)));
alarmClockData.setVoice(cursor.getString(cursor.getColumnIndex(AlarmOpenHelper.KEY_VOICE)));
alarmClockData.setVoice_md5(cursor.getString(cursor.getColumnIndex(AlarmOpenHelper.KEY_VOICE_MD5)));
alarmClockData.setFile(cursor.getString(cursor.getColumnIndex(AlarmOpenHelper.KEY_FILE)));
alarmClockData.setFile_md5(cursor.getString(cursor.getColumnIndex(AlarmOpenHelper.KEY_FILE_MD5)));
alarmClockData.setRemind_type(cursor.getInt(cursor.getColumnIndex(AlarmOpenHelper.KEY_REMIND_TYPE)));
alarmClockData.setIs_onoff(cursor.getInt(cursor.getColumnIndex(AlarmOpenHelper.KEY_IS_ONOFF)));
alarmClockData.setClazz(cursor.getInt(cursor.getColumnIndex(AlarmOpenHelper.KEY_CLAZZ)));
alarmClockData.setFinished(cursor.getInt(cursor.getColumnIndex(AlarmOpenHelper.KEY_FINISHED)) == 1);
alarmClockData.setIs_local(cursor.getInt(cursor.getColumnIndex(AlarmOpenHelper.KEY_IS_LOCAL)) == 1);
alarmClockData.setEdited(cursor.getInt(cursor.getColumnIndex(AlarmOpenHelper.KEY_EDITED)) == 1);
alarmClockData.setDeleted(cursor.getInt(cursor.getColumnIndex(AlarmOpenHelper.KEY_DELETED)) == 1);
list.add(alarmClockData);
} while (cursor.moveToNext());
}
@@ -299,27 +331,28 @@ public class AlarmUtils {
* @return 获取单个闹钟
*/
public AlarmClockData getDatabaseSingleAlarm(AlarmClockData data) {
openDatabase();
List<AlarmClockData> list = new ArrayList<>();
String selectQuery = "SELECT * FROM " + AlarmOpenHelper.TABLE_ALARM + " where id =" + data.getId();
Cursor cursor = mDatabase.rawQuery(selectQuery, null);
if (cursor.moveToFirst()) {
do {
AlarmClockData alarmClockData = new AlarmClockData();
alarmClockData.setId(Integer.parseInt(cursor.getString(0)));
alarmClockData.setType(cursor.getInt(1));
alarmClockData.setTime(cursor.getString(2));
alarmClockData.setTitle(cursor.getString(3));
alarmClockData.setVoice(cursor.getString(4));
alarmClockData.setVoice_md5(cursor.getString(5));
alarmClockData.setFile(cursor.getString(6));
alarmClockData.setFile_md5(cursor.getString(7));
alarmClockData.setRemind_type(cursor.getInt(8));
alarmClockData.setIs_onoff(cursor.getInt(9));
alarmClockData.setFinished(cursor.getInt(10) == 1);
alarmClockData.setIs_local(cursor.getInt(11) == 1);
alarmClockData.setEdited(cursor.getInt(12) == 1);
alarmClockData.setDeleted(cursor.getInt(13) == 1);
alarmClockData.setId(cursor.getInt(cursor.getColumnIndex(AlarmOpenHelper.KEY_ID)));
alarmClockData.setType(cursor.getInt(cursor.getColumnIndex(AlarmOpenHelper.KEY_TYPE)));
alarmClockData.setTime(cursor.getString(cursor.getColumnIndex(AlarmOpenHelper.KEY_TIME)));
alarmClockData.setTitle(cursor.getString(cursor.getColumnIndex(AlarmOpenHelper.KEY_TITLE)));
alarmClockData.setVoice(cursor.getString(cursor.getColumnIndex(AlarmOpenHelper.KEY_VOICE)));
alarmClockData.setVoice_md5(cursor.getString(cursor.getColumnIndex(AlarmOpenHelper.KEY_VOICE_MD5)));
alarmClockData.setFile(cursor.getString(cursor.getColumnIndex(AlarmOpenHelper.KEY_FILE)));
alarmClockData.setFile_md5(cursor.getString(cursor.getColumnIndex(AlarmOpenHelper.KEY_FILE_MD5)));
alarmClockData.setRemind_type(cursor.getInt(cursor.getColumnIndex(AlarmOpenHelper.KEY_REMIND_TYPE)));
alarmClockData.setIs_onoff(cursor.getInt(cursor.getColumnIndex(AlarmOpenHelper.KEY_IS_ONOFF)));
alarmClockData.setClazz(cursor.getInt(cursor.getColumnIndex(AlarmOpenHelper.KEY_CLAZZ)));
alarmClockData.setFinished(cursor.getInt(cursor.getColumnIndex(AlarmOpenHelper.KEY_FINISHED)) == 1);
alarmClockData.setIs_local(cursor.getInt(cursor.getColumnIndex(AlarmOpenHelper.KEY_IS_LOCAL)) == 1);
alarmClockData.setEdited(cursor.getInt(cursor.getColumnIndex(AlarmOpenHelper.KEY_EDITED)) == 1);
alarmClockData.setDeleted(cursor.getInt(cursor.getColumnIndex(AlarmOpenHelper.KEY_DELETED)) == 1);
list.add(alarmClockData);
} while (cursor.moveToNext());
}
@@ -328,27 +361,28 @@ public class AlarmUtils {
}
public AlarmClockData getDatabaseSingleAlarm(int id) {
openDatabase();
List<AlarmClockData> list = new ArrayList<>();
String selectQuery = "SELECT * FROM " + AlarmOpenHelper.TABLE_ALARM + " where id =" + id;
Cursor cursor = mDatabase.rawQuery(selectQuery, null);
if (cursor.moveToFirst()) {
do {
AlarmClockData alarmClockData = new AlarmClockData();
alarmClockData.setId(Integer.parseInt(cursor.getString(0)));
alarmClockData.setType(cursor.getInt(1));
alarmClockData.setTime(cursor.getString(2));
alarmClockData.setTitle(cursor.getString(3));
alarmClockData.setVoice(cursor.getString(4));
alarmClockData.setVoice_md5(cursor.getString(5));
alarmClockData.setFile(cursor.getString(6));
alarmClockData.setFile_md5(cursor.getString(7));
alarmClockData.setRemind_type(cursor.getInt(8));
alarmClockData.setIs_onoff(cursor.getInt(9));
alarmClockData.setFinished(cursor.getInt(10) == 1);
alarmClockData.setIs_local(cursor.getInt(11) == 1);
alarmClockData.setEdited(cursor.getInt(12) == 1);
alarmClockData.setDeleted(cursor.getInt(13) == 1);
alarmClockData.setId(cursor.getInt(cursor.getColumnIndex(AlarmOpenHelper.KEY_ID)));
alarmClockData.setType(cursor.getInt(cursor.getColumnIndex(AlarmOpenHelper.KEY_TYPE)));
alarmClockData.setTime(cursor.getString(cursor.getColumnIndex(AlarmOpenHelper.KEY_TIME)));
alarmClockData.setTitle(cursor.getString(cursor.getColumnIndex(AlarmOpenHelper.KEY_TITLE)));
alarmClockData.setVoice(cursor.getString(cursor.getColumnIndex(AlarmOpenHelper.KEY_VOICE)));
alarmClockData.setVoice_md5(cursor.getString(cursor.getColumnIndex(AlarmOpenHelper.KEY_VOICE_MD5)));
alarmClockData.setFile(cursor.getString(cursor.getColumnIndex(AlarmOpenHelper.KEY_FILE)));
alarmClockData.setFile_md5(cursor.getString(cursor.getColumnIndex(AlarmOpenHelper.KEY_FILE_MD5)));
alarmClockData.setRemind_type(cursor.getInt(cursor.getColumnIndex(AlarmOpenHelper.KEY_REMIND_TYPE)));
alarmClockData.setIs_onoff(cursor.getInt(cursor.getColumnIndex(AlarmOpenHelper.KEY_IS_ONOFF)));
alarmClockData.setClazz(cursor.getInt(cursor.getColumnIndex(AlarmOpenHelper.KEY_CLAZZ)));
alarmClockData.setFinished(cursor.getInt(cursor.getColumnIndex(AlarmOpenHelper.KEY_FINISHED)) == 1);
alarmClockData.setIs_local(cursor.getInt(cursor.getColumnIndex(AlarmOpenHelper.KEY_IS_LOCAL)) == 1);
alarmClockData.setEdited(cursor.getInt(cursor.getColumnIndex(AlarmOpenHelper.KEY_EDITED)) == 1);
alarmClockData.setDeleted(cursor.getInt(cursor.getColumnIndex(AlarmOpenHelper.KEY_DELETED)) == 1);
list.add(alarmClockData);
} while (cursor.moveToNext());
}
@@ -357,27 +391,28 @@ public class AlarmUtils {
}
public List<AlarmClockData> getDeletedAlarm() {
openDatabase();
List<AlarmClockData> list = new ArrayList<>();
String selectQuery = "SELECT * FROM " + AlarmOpenHelper.TABLE_ALARM + " where deleted = 1";
Cursor cursor = mDatabase.rawQuery(selectQuery, null);
if (cursor.moveToFirst()) {
do {
AlarmClockData alarmClockData = new AlarmClockData();
alarmClockData.setId(Integer.parseInt(cursor.getString(0)));
alarmClockData.setType(cursor.getInt(1));
alarmClockData.setTime(cursor.getString(2));
alarmClockData.setTitle(cursor.getString(3));
alarmClockData.setVoice(cursor.getString(4));
alarmClockData.setVoice_md5(cursor.getString(5));
alarmClockData.setFile(cursor.getString(6));
alarmClockData.setFile_md5(cursor.getString(7));
alarmClockData.setRemind_type(cursor.getInt(8));
alarmClockData.setIs_onoff(cursor.getInt(9));
alarmClockData.setFinished(cursor.getInt(10) == 1);
alarmClockData.setIs_local(cursor.getInt(11) == 1);
alarmClockData.setEdited(cursor.getInt(12) == 1);
alarmClockData.setDeleted(cursor.getInt(13) == 1);
alarmClockData.setId(cursor.getInt(cursor.getColumnIndex(AlarmOpenHelper.KEY_ID)));
alarmClockData.setType(cursor.getInt(cursor.getColumnIndex(AlarmOpenHelper.KEY_TYPE)));
alarmClockData.setTime(cursor.getString(cursor.getColumnIndex(AlarmOpenHelper.KEY_TIME)));
alarmClockData.setTitle(cursor.getString(cursor.getColumnIndex(AlarmOpenHelper.KEY_TITLE)));
alarmClockData.setVoice(cursor.getString(cursor.getColumnIndex(AlarmOpenHelper.KEY_VOICE)));
alarmClockData.setVoice_md5(cursor.getString(cursor.getColumnIndex(AlarmOpenHelper.KEY_VOICE_MD5)));
alarmClockData.setFile(cursor.getString(cursor.getColumnIndex(AlarmOpenHelper.KEY_FILE)));
alarmClockData.setFile_md5(cursor.getString(cursor.getColumnIndex(AlarmOpenHelper.KEY_FILE_MD5)));
alarmClockData.setRemind_type(cursor.getInt(cursor.getColumnIndex(AlarmOpenHelper.KEY_REMIND_TYPE)));
alarmClockData.setIs_onoff(cursor.getInt(cursor.getColumnIndex(AlarmOpenHelper.KEY_IS_ONOFF)));
alarmClockData.setClazz(cursor.getInt(cursor.getColumnIndex(AlarmOpenHelper.KEY_CLAZZ)));
alarmClockData.setFinished(cursor.getInt(cursor.getColumnIndex(AlarmOpenHelper.KEY_FINISHED)) == 1);
alarmClockData.setIs_local(cursor.getInt(cursor.getColumnIndex(AlarmOpenHelper.KEY_IS_LOCAL)) == 1);
alarmClockData.setEdited(cursor.getInt(cursor.getColumnIndex(AlarmOpenHelper.KEY_EDITED)) == 1);
alarmClockData.setDeleted(cursor.getInt(cursor.getColumnIndex(AlarmOpenHelper.KEY_DELETED)) == 1);
list.add(alarmClockData);
} while (cursor.moveToNext());
}
@@ -386,27 +421,28 @@ public class AlarmUtils {
}
public List<AlarmClockData> getLocalAddAlarm() {
openDatabase();
List<AlarmClockData> list = new ArrayList<>();
String selectQuery = "SELECT * FROM " + AlarmOpenHelper.TABLE_ALARM + " where is_local = 1";
Cursor cursor = mDatabase.rawQuery(selectQuery, null);
if (cursor.moveToFirst()) {
do {
AlarmClockData alarmClockData = new AlarmClockData();
alarmClockData.setId(Integer.parseInt(cursor.getString(0)));
alarmClockData.setType(cursor.getInt(1));
alarmClockData.setTime(cursor.getString(2));
alarmClockData.setTitle(cursor.getString(3));
alarmClockData.setVoice(cursor.getString(4));
alarmClockData.setVoice_md5(cursor.getString(5));
alarmClockData.setFile(cursor.getString(6));
alarmClockData.setFile_md5(cursor.getString(7));
alarmClockData.setRemind_type(cursor.getInt(8));
alarmClockData.setIs_onoff(cursor.getInt(9));
alarmClockData.setFinished(cursor.getInt(10) == 1);
alarmClockData.setIs_local(cursor.getInt(11) == 1);
alarmClockData.setEdited(cursor.getInt(12) == 1);
alarmClockData.setDeleted(cursor.getInt(13) == 1);
alarmClockData.setId(cursor.getInt(cursor.getColumnIndex(AlarmOpenHelper.KEY_ID)));
alarmClockData.setType(cursor.getInt(cursor.getColumnIndex(AlarmOpenHelper.KEY_TYPE)));
alarmClockData.setTime(cursor.getString(cursor.getColumnIndex(AlarmOpenHelper.KEY_TIME)));
alarmClockData.setTitle(cursor.getString(cursor.getColumnIndex(AlarmOpenHelper.KEY_TITLE)));
alarmClockData.setVoice(cursor.getString(cursor.getColumnIndex(AlarmOpenHelper.KEY_VOICE)));
alarmClockData.setVoice_md5(cursor.getString(cursor.getColumnIndex(AlarmOpenHelper.KEY_VOICE_MD5)));
alarmClockData.setFile(cursor.getString(cursor.getColumnIndex(AlarmOpenHelper.KEY_FILE)));
alarmClockData.setFile_md5(cursor.getString(cursor.getColumnIndex(AlarmOpenHelper.KEY_FILE_MD5)));
alarmClockData.setRemind_type(cursor.getInt(cursor.getColumnIndex(AlarmOpenHelper.KEY_REMIND_TYPE)));
alarmClockData.setIs_onoff(cursor.getInt(cursor.getColumnIndex(AlarmOpenHelper.KEY_IS_ONOFF)));
alarmClockData.setClazz(cursor.getInt(cursor.getColumnIndex(AlarmOpenHelper.KEY_CLAZZ)));
alarmClockData.setFinished(cursor.getInt(cursor.getColumnIndex(AlarmOpenHelper.KEY_FINISHED)) == 1);
alarmClockData.setIs_local(cursor.getInt(cursor.getColumnIndex(AlarmOpenHelper.KEY_IS_LOCAL)) == 1);
alarmClockData.setEdited(cursor.getInt(cursor.getColumnIndex(AlarmOpenHelper.KEY_EDITED)) == 1);
alarmClockData.setDeleted(cursor.getInt(cursor.getColumnIndex(AlarmOpenHelper.KEY_DELETED)) == 1);
list.add(alarmClockData);
} while (cursor.moveToNext());
}
@@ -421,6 +457,7 @@ public class AlarmUtils {
* @param data
*/
public void setAlarmClockData(List<AlarmClockData> data) {
Log.e(TAG, "setAlarmClockData: ");
if (pendingIntents == null) {
pendingIntents = getOldPendingIntentsSet();
}
@@ -473,12 +510,15 @@ public class AlarmUtils {
List<AlarmClockData> deleteData = new ArrayList<>();
for (Map.Entry<Integer, AlarmClockData> entry : oldData.entrySet()) {
if (alarmClockDataMap.get(entry.getKey()) == null) {
deleteData.add(entry.getValue());
AlarmClockData alarmClockData = entry.getValue();
if (!alarmClockData.isIs_local()) {
deleteData.add(alarmClockData);
}
}
}
for (AlarmClockData alarmClockData : deleteData) {
if (alarmClockData.isIs_local() || alarmClockData.deleted) {
Log.e(TAG, "mergeData: skip " + alarmClockData.getId());
Log.e(TAG, "mergeData: skip id = " + alarmClockData.getId());
continue;
}
deleteAlarmClock(alarmClockData);
@@ -503,6 +543,18 @@ public class AlarmUtils {
return newData;
}
/**
* 更新完成状态
*
* @param mId 闹钟id
* @return
*/
public boolean updateAlarmFinished(int mId) {
AlarmClockData alarmClockData = getDatabaseSingleAlarm(mId);
alarmClockData.setFinished(true);
return updateAlarmFinished(alarmClockData);
}
/**
* 更新完成状态
*
@@ -510,7 +562,6 @@ public class AlarmUtils {
* @return
*/
public boolean updateAlarmFinished(AlarmClockData alarmClockData) {
openDatabase();
ContentValues values = getValuesFromAlarmClock(alarmClockData);
long id = 0;
mDatabase.beginTransaction();
@@ -531,6 +582,7 @@ public class AlarmUtils {
if (dataBaseAlarms != null && dataBaseAlarms.size() != 0) {
alarmClockData.addAll(dataBaseAlarms);
}
Log.e(TAG, "getOldData: " + alarmClockData);
return alarmClockData;
}
@@ -570,10 +622,13 @@ public class AlarmUtils {
}
private HashSet<PendingIntent> getOldPendingIntentsSet() {
Log.e(TAG, "getOldPendingIntentsSet: ");
HashSet<PendingIntent> pendingIntents = new HashSet<>();
HashMap<Integer, AlarmClockData> data = getOldDataMap();
for (AlarmClockData alarmClockData : data.values()) {
pendingIntents.add(getPendingIntent(alarmClockData));
if (!alarmClockData.isIs_local()) {
pendingIntents.add(getPendingIntent(alarmClockData));
}
}
return pendingIntents;
}
@@ -585,6 +640,7 @@ public class AlarmUtils {
* @return
*/
private PendingIntent getPendingIntent(AlarmClockData alarmClock) {
Log.e(TAG, "getPendingIntent: ");
Intent intent = new Intent(MainService.ALARMWAKEUP);
intent.putExtra("title", alarmClock.getTitle());
intent.putExtra("id", alarmClock.getId());
@@ -647,22 +703,22 @@ public class AlarmUtils {
int type = alarm.getType();
String timeString = alarm.getTime();
String title = alarm.getTitle();
Log.e(TAG, "setAlarm: " + title);
Log.e(TAG, "setAlarm: title = " + title);
Log.e(TAG, "setAlarm: id = " + id);
long timeStamp = getTimestamp(timeString);
Log.e(TAG, "setAlarm: " + timeStamp);
Log.e(TAG, "setAlarm: timeStamp = " + timeStamp);
boolean finished = alarm.isFinished();
String voiceUrl = alarm.getVoice();
String voiceMd5 = alarm.getVoice_md5();
if (!TextUtils.isEmpty(voiceUrl)) {
if (!FileUtil.isLocalPath(voiceUrl))
ariaDownload(voiceUrl, voiceMd5);
ariaDownload(voiceUrl, voiceMd5);
}
String fileUrl = alarm.getFile();
String fileMd5 = alarm.getFile_md5();
if (!TextUtils.isEmpty(fileUrl)) {
if (!FileUtil.isLocalPath(fileUrl))
ariaDownload(fileUrl, fileMd5);
ariaDownload(fileUrl, fileMd5);
}
boolean local = alarm.is_local;
switch (type) {
case ONCE:
if (!finished) {
@@ -672,18 +728,18 @@ public class AlarmUtils {
intent.putExtra("id", id);
mContext.sendBroadcast(intent);
} else {
setOnceAlarm(MainService.ALARMWAKEUP, title, id, timeStamp);
setOnceAlarm(MainService.ALARMWAKEUP, title, id, timeStamp, local);
}
}
break;
case LOOP:
setDayLoopAlarm(MainService.ALARMWAKEUP, title, id, timeString);
setDayLoopAlarm(MainService.ALARMWAKEUP, title, id, timeString, local);
break;
case WORKING_DAY:
setWorkDayAlarm(MainService.ALARMWAKEUP, title, id, timeString);
setWorkDayAlarm(MainService.ALARMWAKEUP, title, id, timeString, local);
break;
case OFF_DAY:
setOffDayAlarm(MainService.ALARMWAKEUP, title, id, timeString);
setOffDayAlarm(MainService.ALARMWAKEUP, title, id, timeString, local);
break;
default:
}
@@ -694,12 +750,14 @@ public class AlarmUtils {
* @param requestCode
* @param timestamp 设置一次性闹钟
*/
public void setOnceAlarm(String action, String extra, int requestCode, long timestamp) {
public void setOnceAlarm(String action, String extra, int requestCode, long timestamp, boolean local) {
Intent intent = new Intent(action);
intent.putExtra("title", extra);
intent.putExtra("id", requestCode);
PendingIntent startPendingIntent = PendingIntent.getBroadcast(mContext, requestCode, intent, PendingIntent.FLAG_CANCEL_CURRENT);
pendingIntents.add(startPendingIntent);
if (!local) {
pendingIntents.add(startPendingIntent);
}
mAlarmManager.setAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, timestamp, startPendingIntent);
Log.e(TAG, "setOnceAlarm: " + "id: " + requestCode + " title: " + extra + " timeString: " + timestamp);
}
@@ -709,7 +767,7 @@ public class AlarmUtils {
* @param requestCode
* @param timeString 设置循环周期为一天的闹钟
*/
public void setDayLoopAlarm(String action, String extra, int requestCode, String timeString) {
public void setDayLoopAlarm(String action, String extra, int requestCode, String timeString, boolean local) {
long timestamp = getTimestamp(timeString);
if (System.currentTimeMillis() > timestamp) {
timestamp += AlarmManager.INTERVAL_DAY;
@@ -718,7 +776,9 @@ public class AlarmUtils {
intent.putExtra("title", extra);
intent.putExtra("id", requestCode);
PendingIntent startPendingIntent = PendingIntent.getBroadcast(mContext, requestCode, intent, PendingIntent.FLAG_CANCEL_CURRENT);
pendingIntents.add(startPendingIntent);
if (!local) {
pendingIntents.add(startPendingIntent);
}
mAlarmManager.setExact(AlarmManager.RTC_WAKEUP, timestamp, startPendingIntent);
Log.e(TAG, "setDayLoopAlarm: " + "title: " + extra + " timeString: " + timestamp);
// setLoopAlarm(action, extra, requestCode, AlarmManager.INTERVAL_DAY, timestamp);
@@ -729,8 +789,8 @@ public class AlarmUtils {
* @param requestCode
* @param timestamp 设置循环周期为一小时的闹钟
*/
public void setHourLoopAlarm(String action, String extra, int requestCode, long timestamp) {
setLoopAlarm(action, extra, requestCode, AlarmManager.INTERVAL_HOUR, timestamp);
public void setHourLoopAlarm(String action, String extra, int requestCode, long timestamp, boolean local) {
setLoopAlarm(action, extra, requestCode, AlarmManager.INTERVAL_HOUR, timestamp, local);
}
/**
@@ -739,17 +799,19 @@ public class AlarmUtils {
* @param intervalMillis
* @param timestamp 循环闹钟
*/
public void setLoopAlarm(String action, String extra, int requestCode, long intervalMillis, long timestamp) {
public void setLoopAlarm(String action, String extra, int requestCode, long intervalMillis, long timestamp, boolean local) {
Intent intent = new Intent(action);
intent.putExtra("title", extra);
intent.putExtra("id", requestCode);
PendingIntent startPendingIntent = PendingIntent.getBroadcast(mContext, requestCode, intent, PendingIntent.FLAG_CANCEL_CURRENT);
pendingIntents.add(startPendingIntent);
if (!local) {
pendingIntents.add(startPendingIntent);
}
mAlarmManager.setWindow(AlarmManager.RTC_WAKEUP, timestamp, intervalMillis, startPendingIntent);
Log.e(TAG, "setLoopAlarm: " + "title: " + extra + " timeString: " + timestamp);
}
public void setWorkDayAlarm(String action, String extra, int requestCode, String timeString) {
public void setWorkDayAlarm(String action, String extra, int requestCode, String timeString, boolean local) {
long timestamp = getTimestamp(timeString);
Calendar calendar = Calendar.getInstance();
int day_of_week = calendar.get(Calendar.DAY_OF_WEEK) - 1;
@@ -768,12 +830,14 @@ public class AlarmUtils {
intent.putExtra("title", extra);
intent.putExtra("id", requestCode);
PendingIntent startPendingIntent = PendingIntent.getBroadcast(mContext, requestCode, intent, PendingIntent.FLAG_CANCEL_CURRENT);
pendingIntents.add(startPendingIntent);
if (!local) {
pendingIntents.add(startPendingIntent);
}
mAlarmManager.setExact(AlarmManager.RTC_WAKEUP, timestamp, startPendingIntent);
Log.e(TAG, "setWorkDayAlarm: " + "title: " + extra + " timeString: " + timestamp);
}
public void setOffDayAlarm(String action, String extra, int requestCode, String timeString) {
public void setOffDayAlarm(String action, String extra, int requestCode, String timeString, boolean local) {
long timestamp = getTimestamp(timeString);
Calendar calendar = Calendar.getInstance();
int day_of_week = calendar.get(Calendar.DAY_OF_WEEK) - 1;
@@ -793,7 +857,9 @@ public class AlarmUtils {
intent.putExtra("title", extra);
intent.putExtra("id", requestCode);
PendingIntent startPendingIntent = PendingIntent.getBroadcast(mContext, requestCode, intent, PendingIntent.FLAG_CANCEL_CURRENT);
pendingIntents.add(startPendingIntent);
if (!local) {
pendingIntents.add(startPendingIntent);
}
mAlarmManager.setExact(AlarmManager.RTC_WAKEUP, timestamp, startPendingIntent);
Log.e(TAG, "setOffDayAlarm: " + "title: " + extra + " timeString: " + timestamp);
}

View File

@@ -1,287 +0,0 @@
package com.xxpatx.os.alarm;
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.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.fragment.app.FragmentActivity;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import com.bumptech.glide.request.RequestOptions;
import com.xxpatx.os.R;
import com.xxpatx.os.utils.FFmpegUtils;
import com.xxpatx.os.utils.ScreenUtils;
import com.xxpatx.os.utils.Utils;
import com.xxpatx.os.view.JzvdStdRound;
import com.xxpatx.os.view.ToggleButton;
import java.io.File;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.regex.Pattern;
import io.reactivex.rxjava3.core.Observer;
import io.reactivex.rxjava3.disposables.Disposable;
public class PortAlarmAdapter extends RecyclerView.Adapter<PortAlarmAdapter.holder> {
private FragmentActivity mContext;
private List<AlarmClockData> mAlarmClockData;
private OnLongClickListener mOnLongClickListener;
public void setAlarmClockData(List<AlarmClockData> alarmClockData) {
this.mAlarmClockData = alarmClockData;
notifyDataSetChanged();
}
public void setOnLongClickListener(OnLongClickListener onLongClickListener) {
this.mOnLongClickListener = onLongClickListener;
}
public interface OnLongClickListener {
void onLongClick(AlarmClockData alarmClockData);
}
@NonNull
@Override
public holder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
mContext = (FragmentActivity) parent.getContext();
return new PortAlarmAdapter.holder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_alarm_port, parent, false));
}
@Override
public void onBindViewHolder(@NonNull holder holder, int position) {
AlarmClockData alarmClockData = mAlarmClockData.get(position);
switch (alarmClockData.getType()) {
case AlarmUtils.ONCE:
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
Date date = sdf.parse(alarmClockData.getTime());
SimpleDateFormat hours = new SimpleDateFormat("HH:mm");
String time = hours.format(date);
holder.tv_time.setText(time);
} catch (ParseException e) {
e.printStackTrace();
}
holder.tv_remind_type.setText("一次");
holder.tv_remind_type.setBackgroundResource(R.drawable.tv_times_bg_once);
break;
case AlarmUtils.LOOP:
holder.tv_time.setText(alarmClockData.getTime());
holder.tv_remind_type.setText("每天");
holder.tv_remind_type.setBackgroundResource(R.drawable.tv_times_bg_loop);
break;
case AlarmUtils.WORKING_DAY:
holder.tv_time.setText(alarmClockData.getTime());
holder.tv_remind_type.setText("周一至周五");
holder.tv_remind_type.setBackgroundResource(R.drawable.tv_times_bg_work);
break;
case AlarmUtils.OFF_DAY:
holder.tv_time.setText(alarmClockData.getTime());
holder.tv_remind_type.setText("周六至周日");
holder.tv_remind_type.setBackgroundResource(R.drawable.tv_times_bg_offday);
break;
default:
}
String title = alarmClockData.getTitle();
if (TextUtils.isEmpty(title)) {
holder.tv_title.setText("无标题");
} else {
holder.tv_title.setText(title);
}
int is_onoff = alarmClockData.getIs_onoff();
holder.toggleButton2.setDisable(true);
if (is_onoff == 1) {
holder.tv_status.setText("已开启");
holder.toggleButton2.setToggleOn(false);
} else {
holder.tv_status.setText("已关闭");
holder.toggleButton2.setToggleOff(false);
}
int type = alarmClockData.getClazz();
switch (type){
case 1:
default:
holder.iv_type.setImageDrawable(mContext.getDrawable(R.drawable.icon_alarm_medicine_pressed));
break;
case 2:
holder.iv_type.setImageDrawable(mContext.getDrawable(R.drawable.icon_alarm_look_pressed));
break;
case 3:
holder.iv_type.setImageDrawable(mContext.getDrawable(R.drawable.icon_alarm_reserve_pressed));
break;
}
String voice = alarmClockData.getVoice();
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();
}
});
}
String fileUrl = alarmClockData.getFile();
if (TextUtils.isEmpty(fileUrl)) {
holder.cl_vp.setVisibility(View.GONE);
} else {
holder.cl_vp.setVisibility(View.VISIBLE);
if (isImgUrl(fileUrl)) {
holder.imageView.setVisibility(View.VISIBLE);
holder.jz_video.setVisibility(View.GONE);
if (!mContext.isDestroyed()) {
RequestOptions options = new RequestOptions().transform(new RoundedCorners(ScreenUtils.dip2px(mContext, 16F)));
Glide.with(mContext).load(fileUrl).apply(options).into(holder.imageView);
}
} else {
holder.imageView.setVisibility(View.GONE);
holder.jz_video.setVisibility(View.VISIBLE);
String fileName = Utils.getFileNamefromURL(fileUrl);
File file = new File(Utils.getDownLoadPath(mContext) + fileName);
String path;
if (file.exists() && !file.isDirectory()) {
path = file.getAbsolutePath();
} else {
path = fileUrl;
}
holder.jz_video.setUp(path, "");
holder.jz_video.startButton.setImageDrawable(mContext.getDrawable(R.drawable.play));
FFmpegUtils.loadVideoScreenshot(path, new Observer<Bitmap>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
}
@Override
public void onNext(@NonNull Bitmap bitmap) {
if (!mContext.isDestroyed()) {
RequestOptions options = new RequestOptions().transform(new RoundedCorners(ScreenUtils.dip2px(mContext, 16F)));
Glide.with(mContext).load(bitmap).apply(options).into(holder.jz_video.posterImageView);
// Glide.with(mContext).load(bitmap).into(holder.imageView);
}
holder.jz_video.startButton.setImageDrawable(mContext.getDrawable(R.drawable.play));
}
@Override
public void onError(@NonNull Throwable e) {
}
@Override
public void onComplete() {
}
});
}
}
holder.root.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
mOnLongClickListener.onLongClick(alarmClockData);
return false;
}
});
holder.root.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Intent intent = new Intent(mContext, AlarmClockEditActivity.class);
// intent.putExtra("id", alarmClockData.getId());
// mContext.startActivity(intent);
}
});
}
private Pattern mCompile = Pattern.compile(".*?(gif|jpeg|png|jpg|bmp|webp)");
private boolean isImgUrl(String url) {
if (TextUtils.isEmpty(url) || url.trim().length() == 0) {
return false;
}
return mCompile.matcher(url).matches();
}
@Override
public int getItemCount() {
return mAlarmClockData == null ? 0 : mAlarmClockData.size();
}
class holder extends RecyclerView.ViewHolder {
TextView tv_time, tv_remind_type, tv_title, tv_voice, tv_status;
ConstraintLayout cl_voice, cl_vp, root;
JzvdStdRound jz_video;
ImageView imageView,iv_type;
ToggleButton toggleButton2;
public holder(@NonNull View itemView) {
super(itemView);
tv_time = itemView.findViewById(R.id.tv_time);
tv_remind_type = itemView.findViewById(R.id.tv_remind_type);
tv_title = itemView.findViewById(R.id.tv_title);
tv_voice = itemView.findViewById(R.id.tv_voice);
cl_voice = itemView.findViewById(R.id.cl_voice);
cl_vp = itemView.findViewById(R.id.cl_vp);
root = itemView.findViewById(R.id.root);
jz_video = itemView.findViewById(R.id.jz_video);
imageView = itemView.findViewById(R.id.imageView);
iv_type = itemView.findViewById(R.id.iv_type);
tv_status = itemView.findViewById(R.id.tv_status);
toggleButton2 = itemView.findViewById(R.id.toggleButton2);
}
}
}