0

我有一个类,通过时间选择器从用户那里获取时间,时间选择器动作应该与当前手机时间进行比较,当当前手机时间与用户设置的时间相同时,应用程序应该触发一个mediaplayer像警报一样调用的媒体播放器。现在的问题是我不能用当前手机时间多次检查时间选择器时间。

  import java.util.Calendar;

  import android.app.Activity;
  import android.content.Intent;
  import android.media.MediaPlayer;
  import android.os.Bundle;
  import android.os.Handler;
  import android.view.Menu;
  import android.view.View;
  import android.view.View.OnClickListener;
  import android.widget.Button;
  import android.widget.TimePicker;
  import android.widget.Toast;

public class Sabah2 extends Activity {
Button btn;
Intent i;
int hour,min;
static TimePicker picker;
private Handler hh;
private Runnable rr;
Calendar c = Calendar.getInstance();

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_sabah2);
    final MediaPlayer mp = MediaPlayer.create(Sabah2.this, R.raw.salam);
    picker = (TimePicker) findViewById(R.id.timePicker1);
    btn = (Button) findViewById(R.id.sabah_save);


    btn.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            hour=picker.getCurrentHour();
            min=picker.getCurrentMinute();

            Toast.makeText(getApplicationContext(), "The Alarm has been             
   Activated At "+hour+":"+min, Toast.LENGTH_SHORT).show();


        }
    });
   if(hour==c.get(Calendar.HOUR)&&min==c.get(Calendar.MINUTE))
 {
mp.start();
 }
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.sabah2, menu);
    return true;
}

 }
4

2 回答 2

0

您必须在时间选择器中为时间设置警报管理器。如果时间与当前时间匹配,它将触发警报并播放媒体播放器。像这样

 AlarmManager alarmanager=(AlarmManager) getSystemService(Context.ALARM_SERVICE);
 TimePicker ti = (TimePicker) findViewById(R.id.time_alarm);
ti.setOnTimeChangedListener(new OnTimeChangedListener() {

        public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
            // TODO Auto-generated method stub
            selectedhour = hourOfDay;
            selectedminute = minute;
            count = 2;
        }
    });

现在将 selectedhour 和 selectedminute 转换为毫秒并将其设置为alarmanager

alarmanager.set(AlarmManager.RTC_WAKEUP, time in millisec,pndingIntent) ;
于 2013-10-21T10:04:56.317 回答
0

您必须使用服务来检查时间。在此服务中检查您的时间与当前时间。这将在后台运行,因此即使您的应用程序未运行,也会尝试检查时间实例。

于 2013-10-21T09:47:13.473 回答