如何在android中的指定时间播放闹钟?
Posted
技术标签:
【中文标题】如何在android中的指定时间播放闹钟?【英文标题】:How to play alarm on specified time in android? 【发布时间】:2015-11-29 14:59:20 【问题描述】:我是 android 开发的初学者。
我正在开发一个应用程序,该应用程序需要在单击按钮后的 8 小时内准确播放警报。
我创建了一条获取当前时间的线路,但我坚持从当前时间计算 8 小时并播放警报音。
这是我的代码:
import android.os.Bundle;
import android.app.Activity;
import android.widget.ToggleButton;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import android.widget.Toast;
import android.view.View.OnClickListener;
import android.view.*;
public class MainActivity extends Activity
public ToggleButton tgb1;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tgb1 = (ToggleButton) findViewById(R.id.toggleButton1);
tgb1.setOnClickListener(new OnClickListener()
@Override
public void onClick(View arg0)
if (tgb1.getText().toString().equals("Click to Turn Off"))
Calendar c = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm");
String strDate = sdf.format(c.getTime());
c.add(Calendar.HOUR,8);
但我不知道从这里继续前进。请帮我计算从当前时间开始的 8 小时并播放警报音。
等待您的友好回复。
谢谢。
【问题讨论】:
【参考方案1】:您必须在以后使用 AlarmManager 来运行您的代码。根据 Android 文档
警报管理器适用于您希望应用程序代码在特定时间运行的情况,即使您的应用程序当前没有运行。
因为你已经有了 Calendar 对象 c
AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), pendingIntent);
pendingIntent 可以调用一个服务类来播放音频。
【讨论】:
【参考方案2】:您可以使用AlarmManager。
this 也可以帮助您。在格式化和分配值给 String 之前,总是在 Calendar 实例中添加 (c.Add) 分钟/小时/天,因为现在您的“strDate”等于实际时间,而没有后面添加 8 小时。
【讨论】:
您不能使用仅链接答案吗?我知道这些是 android 文档和 SO 问题,但是如果文档的位置移动了怎么办?如果问题以某种方式被删除怎么办?这个答案将失效。添加一些解释可以帮助解决问题。以上是关于如何在android中的指定时间播放闹钟?的主要内容,如果未能解决你的问题,请参考以下文章