6

Я начинаю программировать на Android, мне нужно сделать CountdownTimer, который начинается с числа, выбранного пользователем, с помощью двух наборов чисел (один для часов и других в течение нескольких минут).Уведомление таймера обратного отсчета

характеристики должны быть:

-The CountdownTimer должен работать в фоновом режиме и уведомляет пользователя, когда он прибывает в 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); 
    } 

}); 
} 

} 

Я не знаю, как сделать, что CountdownTimer начинается с номера, выбранного пользователем с числом сборщиков и уведомления, когда это будет сделано.

Пожалуйста, помогите мне. :(

ответ

7

Использования Android в Timer и TimerTask классов. Ниже я предполагаю, что вы знаете, как отображение уведомлений, как это кажется, что Вы делаете в вашем вопросе.

вместе с номером сборщиками, имеет Button определенные в статическом макет так:

<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); 
} 
+0

Спасибо, брату ... = D , но знаете ли вы, как свести к минимуму применение к bakground, нажав кнопку .. ??? – jhonand094

+3

Попробуйте 'moveTaskToBack (true);' согласно [этой теме] (http://stackoverflow.com/questions/2041891/sending-activity-to-background-with-out-finishing) – poisondminds

Смежные вопросы