用JAVA语言实现一款基于手机安卓系统的定时提醒老人吃药的app
时间: 2023-12-17 20:05:02 浏览: 25
好的,下面是一份简单的代码实现,供您参考:
1. 在AndroidManifest.xml中添加权限:
```xml
<uses-permission android:name="android.permission.VIBRATE" />
```
2. 创建一个MainActivity类,实现如下功能:
- 显示当前时间
- 设置提醒时间
- 开启或关闭提醒
- 播放声音和震动
```java
public class MainActivity extends AppCompatActivity {
private TextView currentTimeTextView;
private TimePicker timePicker;
private Switch remindSwitch;
private Button confirmButton;
private MediaPlayer mediaPlayer;
private Vibrator vibrator;
private boolean isRemindOn = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
currentTimeTextView = findViewById(R.id.current_time_textview);
timePicker = findViewById(R.id.time_picker);
remindSwitch = findViewById(R.id.remind_switch);
confirmButton = findViewById(R.id.confirm_button);
// 显示当前时间
updateTime();
// 设置提醒时间
timePicker.setIs24HourView(true);
// 开启或关闭提醒
remindSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
isRemindOn = isChecked;
if (isChecked) {
startRemind();
} else {
stopRemind();
}
}
});
// 播放声音和震动
mediaPlayer = MediaPlayer.create(this, R.raw.remind_sound);
vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);
// 确认按钮
confirmButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
updateTime();
if (isRemindOn) {
startRemind();
}
}
});
}
// 显示当前时间
private void updateTime() {
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
String currentTime = sdf.format(new Date());
currentTimeTextView.setText(currentTime);
}
// 开启提醒
private void startRemind() {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, timePicker.getHour());
calendar.set(Calendar.MINUTE, timePicker.getMinute());
calendar.set(Calendar.SECOND, 0);
Intent intent = new Intent(this, RemindReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);
}
// 关闭提醒
private void stopRemind() {
Intent intent = new Intent(this, RemindReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.cancel(pendingIntent);
}
// 播放声音和震动
private void playRemind() {
mediaPlayer.start();
long[] pattern = {0, 1000, 1000};
vibrator.vibrate(pattern, -1);
}
}
```
3. 创建一个RemindReceiver类,实现接收提醒的功能:
```java
public class RemindReceiver extends BroadcastReceiver {
private Context context;
@Override
public void onReceive(Context context, Intent intent) {
this.context = context;
playRemind();
}
// 播放声音和震动
private void playRemind() {
MediaPlayer mediaPlayer = MediaPlayer.create(context, R.raw.remind_sound);
mediaPlayer.start();
Vibrator vibrator = (Vibrator) context.getSystemService(VIBRATOR_SERVICE);
long[] pattern = {0, 1000, 1000};
vibrator.vibrate(pattern, -1);
}
}
```
这份代码实现了基本的提醒功能,您可以根据具体需求进行修改和优化。同时,为了保证老人的安全,建议您在开发过程中严格测试和验证您的app,确保其稳定可靠。