android 闹钟提醒

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();
    }
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Android系统中,闹钟提醒结合通知是一种常见的功能,它可以让用户设置指定时间的闹钟,并在达到设定时间时通过通知进行提醒。 首先,用户可以通过系统提供的闹钟应用或其他支持闹钟功能的应用程序进行设置。用户可以选择特定的时间、重复日期和提醒模式来设置闹钟。一旦设置完成,系统会在设定的时间触发相应的闹钟事件。 当闹钟时间到达时,系统会弹出一个通知通知栏上会显示闹钟提醒的相关信息,如闹钟标签、时间等。用户可以通过点击通知栏上的提醒来进入相应的应用程序或进行其他操作。 通知不仅可以在通知栏显示,还可以通过声音、震动或闪光等方式进行提醒。用户可以在系统设置中自定义闹钟提醒的方式。例如,用户可以选择只通过声音提醒、只通过震动提醒,或者同时使用声音和震动进行提醒。 通过闹钟提醒结合通知,用户可以方便地设置和管理自己的闹钟提醒,不再需要依赖传统的闹钟设备。而且,通过通知的形式进行提醒,用户可以更加及时地知道闹钟触发的信息,提高闹钟提醒的效果。 总而言之,Android系统提供了闹钟提醒结合通知的功能,用户可以通过设置闹钟来实现定时提醒,并在达到设定时间时通过通知进行提醒。这个功能方便实用,可以在日常生活和工作中帮助用户实时掌握时间。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

方圆几里tb

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值