Android实现一个具有日程提醒功能,能自己输入事件,到时间会响起闹铃的代码和布局文件
时间: 2024-03-10 09:47:37 浏览: 32
以下是一个简单的Android应用程序,它具有日程提醒功能,能够自己输入事件,到时间会响起闹铃。这个应用程序包括一个活动(Activity)和一个广播接收器(BroadcastReceiver)。
1. 布局文件
activity_main.xml
```xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp">
<EditText
android:id="@+id/event_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="输入事件"/>
<Button
android:id="@+id/set_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="设置提醒"/>
</LinearLayout>
```
2. 活动代码
MainActivity.java
```java
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import java.util.Calendar;
public class MainActivity extends AppCompatActivity {
private EditText eventText;
private Button setButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
eventText = findViewById(R.id.event_text);
setButton = findViewById(R.id.set_button);
setButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String event = eventText.getText().toString();
if (event.isEmpty()) {
Toast.makeText(MainActivity.this, "请输入事件", Toast.LENGTH_SHORT).show();
return;
}
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.add(Calendar.MINUTE, 1); // 设置提醒时间为当前时间1分钟后
Intent intent = new Intent(MainActivity.this, AlertReceiver.class);
intent.putExtra("event", event);
PendingIntent pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
Toast.makeText(MainActivity.this, "提醒已设置", Toast.LENGTH_SHORT).show();
}
});
}
}
```
3. 广播接收器代码
AlertReceiver.java
```java
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.media.Ringtone;
import android.media.RingtoneManager;
import android.net.Uri;
import android.widget.Toast;
public class AlertReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String event = intent.getStringExtra("event");
Toast.makeText(context, "提醒:" + event, Toast.LENGTH_LONG).show();
Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
Ringtone ringtone = RingtoneManager.getRingtone(context, notification);
ringtone.play();
}
}
```
这个应用程序的基本思路是:当用户输入事件并点击设置提醒按钮时,它会创建一个日历对象,设置提醒时间为当前时间1分钟后。然后它将创建一个带有事件信息的意图,并将其发送到广播接收器。广播接收器会在提醒时间到达时接收到这个意图,并使用系统默认铃声响起提醒。
注意:为了使广播接收器能够接收到意图,需要在AndroidManifest.xml文件中注册它。在<application>标签下添加以下内容:
```xml
<receiver android:name=".AlertReceiver"/>
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)