如何在android中的指定时间播放闹钟?

时间:2015-11-29 14:59:20

标签: android timer alarmmanager alarm

我是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小时并播放警报音。

等待你的回应。

感谢。

2 个答案:

答案 0 :(得分:1)

您必须使用AlarmManager稍后运行您的代码。根据 Android文档

  

警报管理器适用于您希望在特定时间运行应用程序代码的情况,即使您的应用程序当前未运行。

由于您已经拥有了Calendar对象c

AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);

am.set(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), pendingIntent);

其中pendingIntent可以调用一个播放音频的服务类。

答案 1 :(得分:0)

您可以使用AlarmManager

this也可以帮到你。在格式化并为String赋值之前,始终将(c.Add)分钟/小时/天添加到Calendar实例,因为现在您的“strDate”等于实际时间,而不是稍后添加8小时。