我是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小时并播放警报音。
等待你的回应。
感谢。
答案 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小时。