如何在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中的指定时间播放闹钟?的主要内容,如果未能解决你的问题,请参考以下文章

Android,如何取消闹钟? alarmManager.cancel 不工作

iOS:App停用后闹钟App如何播放声音?

如何在android中更改闹钟?

带定时器的闹钟?

使用闹钟音量设置的Android闹钟声音?

如何以编程方式为 iPhone 和 iPad 播放闹钟?