倒计时计时器通知

8
我是Android编程的初学者,我需要编写一个倒计时器,它从用户选择的数字开始,使用两个数字选择器(一个用于小时,另一个用于分钟)。
以下是该倒计时器的特点:
- 倒计时器必须在后台工作并在到达00:00时通知用户。 这是我目前的代码:
package com.android.application;
import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.NumberPicker;

public class MainActivity extends Activity {
NotificationManager nm;
private static final int ID_NOTIFICACION_PERSONAL =1;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

NumberPicker number1 = (NumberPicker)findViewById(R.id.horas);
NumberPicker number2 = (NumberPicker)findViewById(R.id.minutos);
Button btn_lanzar=(Button)findViewById(R.id.btn_notificacion);
number1.setMaxValue(10);
number1.setMinValue(0);
number2.setMinValue(0);
number2.setMaxValue(59);

int number3=number1.getValue();
int number4=number2.getValue();

nm = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
btn_lanzar.setOnClickListener(new View.OnClickListener(){
    @Override 
    public void onClick(View v) {
    Notification notification = new Notification(R.drawable.estacionamiento,"Estacionamiento Inteligente",System.currentTimeMillis());    
    PendingIntent intencionpendiente = PendingIntent.getActivity(getApplicationContext(),0, new Intent (getApplicationContext(),Segunda_ventana.class),0);
    notification.setLatestEventInfo(getApplicationContext(), "Estacionamiento Inteligente", "Su Tiempo se ha Terminado", intencionpendiente);
    nm.notify(ID_NOTIFICACION_PERSONAL, notification);
    }

});
}

} 

我不知道如何让倒计时器从用户用数字选择器选择的数字开始,并在完成时发出通知。
请有人帮助我。 :(
1个回答

6
使用Android的计时器计时器任务类。在下面的假设中,我认为您知道如何显示通知,因为在您的问题中似乎已经这样做了。
除了您的数字选择器之外,在静态布局中定义一个按钮,如下所示:
<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Start CountDown"
    android:onClick="startCountdown"
 />

我假设你也在同一布局中有你的数字选择器。
Java活动代码可能如下:
NumberPicker hourPicker;
NumberPicker minutePicker;

@Override
protected void onCreate(Bundle savedInstanceState)
{
    hourPicker = (NumberPicker)findViewById(R.id.horas);
    minutePicker = (NumberPicker)findViewById(R.id.minutos);
    hourPicker.setMaxValue(10);
    hourPicker.setMinValue(0);
    minutePicker.setMinValue(0);
    minutePicker.setMaxValue(59);
}

public void startCountdown(View v)
{
    //this fires when button was tapped
    showTimerStartedNotification();

    int hours = hourPicker.getValue();
    int mins = minutePicker.getValue();

    int millis = ((hours*60)+mins)*60000; // Need milliseconds to use Timer


    new Timer().schedule(new TimerTask()
    {
        @Override
        public void run()
        {
            //code that runs when timer is done
            showTimerFinishedNotification();
        }
    }, millis);
}

谢谢兄弟... =D 但是你知道如何通过按一个按钮将应用程序最小化到后台吗..??? - jhonand094
3
根据这个帖子,尝试使用 moveTaskToBack(true);将活动移到后台。 - poisondminds

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接