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 に答える