java
package com.example.memo;
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;
import android.app.AlarmManager;
import android.app.DatePickerDialog;
import android.app.PendingIntent;
import android.app.TimePickerDialog;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.TimePicker;
import android.widget.Toast;
import android.widget.Toolbar;
import com.example.memo.sql.MyDatabaseHelper;
import java.util.Calendar;
public class Add extends AppCompatActivity implements View.OnClickListener {
private Button button,button2,button3;
private String day=null,time=null;
private TextView textView,textView2;
private EditText editText;
private MyDatabaseHelper dbHelper;
private AlarmManager alarmManager;
long time2;
Calendar calendar2=Calendar.getInstance();
String jday,jtime,jcontent;int jid,q=0;
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add);
Toolbar toolBar = findViewById(R.id.toolbar);
toolBar.setTitle("返回");//设置主标题名称
toolBar.setNavigationIcon(R.drawable.back);
toolBar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity (new Intent(Add.this,MainActivity.class));
finish();
}
});
jday = getIntent().getStringExtra("day");
jtime = getIntent().getStringExtra("time");
jcontent = getIntent().getStringExtra("content");
jid = getIntent().getIntExtra("id",jid);
textView = findViewById(R.id.edit_day);
textView2=findViewById(R.id.edit_time);
editText=findViewById(R.id.add_content);
if(jday!=null)
{
day=jday; time=jtime;
textView.setText(jday);
textView2.setText(jtime);
editText.setText(jcontent);
}
button = findViewById(R.id.add_day);
button2=findViewById(R.id.add_time);
button3=findViewById(R.id.add_submit);
button.setOnClickListener(this);
button2.setOnClickListener(this);
button3.setOnClickListener(this);
dbHelper = new MyDatabaseHelper(this,"bbb.db",null,1);
}
@Override
public void onClick(View v) {
switch (v.getId())
{
case R.id.add_day:
Calendar calendar = Calendar.getInstance();
DatePickerDialog dialog = new DatePickerDialog(Add.this,
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
if(jday!=null&q==0)
{
textView2.setText("");
Toast.makeText(getApplicationContext(),"请重新选择时间!",Toast.LENGTH_SHORT).show();
q=1;
}
day = String.format("%d年%d月%d日", year, month+1, dayOfMonth);
textView.setText(day);
calendar2.set(Calendar.YEAR,year);
calendar2.set(Calendar.MONTH,month);
}
},
calendar.get(Calendar.YEAR),
calendar.get(Calendar.MONTH),
calendar.get(Calendar.DAY_OF_MONTH));
dialog.show();
break;
case R.id.add_time:
Calendar c=Calendar.getInstance();
TimePickerDialog dialog2 =new TimePickerDialog(Add.this, new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
if(jday!=null&q==0)
{
textView.setText("");
Toast.makeText(getApplicationContext(),"请重新选择日期!",Toast.LENGTH_SHORT).show();
q=1;
}
time=String.format("%d时%d分",hourOfDay,minute);
textView2.setText(time);
calendar2.set(Calendar.HOUR_OF_DAY,hourOfDay);
calendar2.set(Calendar.MINUTE,minute);
calendar2.set(Calendar.SECOND,0);
calendar2.set(Calendar.MILLISECOND,0);
time2= calendar2.getTimeInMillis();
Log.d("Add","idd:"+time2);
}
},c.get(Calendar.HOUR_OF_DAY),c.get(Calendar.MINUTE),true);
dialog2.show();
break;
case R.id.add_submit:
if(day!=null&&time!=null&&!editText.getText().toString().equals(""))
{
SQLiteDatabase db1=dbHelper.getWritableDatabase();
if(jday==null)
{
ContentValues values = new ContentValues();
values.put("day",textView.getText().toString());
values.put("time",textView2.getText().toString());
values.put("content",editText.getText().toString());
values.put("idd",(int)(time2/1000/60));
db1.insert("bbb",null,values);
db1.close();
alarm();
startActivity (new Intent(Add.this,MainActivity.class));
finish();
Toast.makeText(getApplicationContext(),"新建成功!",Toast.LENGTH_SHORT).show();
}
else
{
if(q==0)
{
ContentValues values=new ContentValues();
values.put("day",jday);
values.put("time",jtime);
values.put("content",editText.getText().toString());
values.put("idd",jid);
db1.update("bbb",values,"idd=?",new String[]{String.valueOf(jid)});
db1.close();
}
else
{
ContentValues values=new ContentValues();
values.put("day",textView.getText().toString());
values.put("time",textView2.getText().toString());
values.put("content",editText.getText().toString());
values.put("idd",(int)(time2/1000/60));
db1.update("bbb",values,"idd=?",new String[]{String.valueOf(jid)});
db1.close();
alarm();
alarmManager= (AlarmManager)getApplicationContext().getSystemService(Context.ALARM_SERVICE);
alarmManager.cancel(PendingIntent.getBroadcast(getApplicationContext(),jid,new Intent(getApplicationContext(),AlarmReceiver.class),0));
}
startActivity (new Intent(Add.this,MainActivity.class));
finish();
}
}
else
Toast.makeText(getApplicationContext(),"有输入为空,请重新检查输入内容!",Toast.LENGTH_SHORT).show();
break;
}
}
private void alarm() {
alarmManager= (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP,
time2,
PendingIntent.getBroadcast(this,
(int)(time2/1000/60),
new Intent(this,AlarmReceiver.class),0));
}
}
xml
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@drawable/bj"
xmlns:android="http://schemas.android.com/apk/res/android" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="53dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@android:drawable/divider_horizontal_textfield"
/>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="45dp">
<TextView
android:id="@+id/edit_day"
android:layout_width="match_parent"
android:layout_height="50dp"
android:hint="请输入日期"
android:background="@null"
android:paddingLeft="5dp"
android:gravity="center_vertical"
android:textColor="@color/colorPrimaryDark"
/>
<DatePicker
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_gravity="center"
android:layout_marginTop="50dp" />
<Button
android:id="@+id/add_day"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
android:layout_marginEnd="1dp"
android:layout_marginRight="1dp"
android:layout_marginBottom="0dp"
android:text="选择日期" />
</RelativeLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@android:drawable/divider_horizontal_textfield"
/>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="45dp">
<TextView
android:id="@+id/edit_time"
android:layout_width="match_parent"
android:layout_height="50dp"
android:hint="请输入时间"
android:background="@null"
android:paddingLeft="5dp"
android:gravity="center_vertical"
android:textColor="@color/colorPrimaryDark"
/>
<Button
android:id="@+id/add_time"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
android:layout_marginEnd="1dp"
android:layout_marginRight="1dp"
android:layout_marginBottom="0dp"
android:text="选择时间" />
</RelativeLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@android:drawable/divider_horizontal_textfield"
/>
<EditText
android:id="@+id/add_content"
android:layout_width="match_parent"
android:layout_height="242dp"
android:background="@null"
android:gravity="center_vertical"
android:hint="请输入内容"
android:paddingLeft="5dp"
android:textColor="@color/colorPrimaryDark" />
<Button
android:id="@+id/add_submit"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="30dp"
android:background="@drawable/normal"
android:text="立 即 提 交" />
</LinearLayout>
</ScrollView>
AlarmReceiver
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
AlarmManager am=(AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
am.cancel(PendingIntent.getBroadcast(context,getResultCode(),new Intent(context,AlarmManager.class),0));
Intent i=new Intent(context,PlayAlarmAty.class);
Bundle bundleRet = new Bundle();
bundleRet.putString("STR_CALLER", "");
i.putExtras(bundleRet);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
}
PlayAlarmAty
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.media.MediaPlayer;
import android.os.Bundle;
import com.example.memo.sql.MyDatabaseHelper;
public class PlayAlarmAty extends Activity {
private MediaPlayer mp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mp = MediaPlayer.create(this,R.raw.clockmusic2);
mp.start();
new AlertDialog.Builder(PlayAlarmAty.this)
.setIcon(R.mipmap.ic_launcher)
.setTitle("闹钟")
.setMessage("备忘录-闹钟提醒")
.setNegativeButton("关闭", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
PlayAlarmAty.this.finish();
mp.stop();
}
})
.show();
}
@Override
protected void onPause(){
super.onPause();
finish();
}
protected void onDestroy(){
super.onDestroy();
mp.stop();
mp.release();
}
}