알람앱 1회용
전체소스. 필요하신분께선 마음대로 사용하세요!
import java.util.Calendar;
import java.util.Locale;
import android.app.AlarmManager;
import android.app.Dialog;
import android.app.PendingIntent;
import android.app.TimePickerDialog;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.support.v4.app.FragmentActivity;
import android.text.format.DateFormat;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TimePicker;
import android.widget.Toast;
public class MainActivity extends FragmentActivity {
private Calendar cal;
private int hour;
private int min;
private static Button alarmSetTextBt;
private Button alarmSetOnBt;
private Button alarmSetOffBt;
private long alarmtime;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
cal = Calendar.getInstance();
hour = cal.get(Calendar.HOUR_OF_DAY);
min = cal.get(Calendar.MINUTE);
alarmSetTextBt = (Button)findViewById(R.id.TimeSettingTextBt);
alarmSetTextBt.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
DialogFragment newFragment = new TimePickerFragment();
newFragment.show(getSupportFragmentManager(),"TimePicker");
}
});
alarmSetOnBt = (Button)findViewById(R.id.alaermsetting_bt);
alarmSetOnBt.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(getBaseContext(),ReceiveAlarm.class);
PendingIntent pIntent = PendingIntent.getActivity(getBaseContext(), 0, intent, 0);
calculateTime();
alarmManager.set(AlarmManager.RTC_WAKEUP, alarmtime,pIntent);
Calendar c = Calendar.getInstance();
c.setTimeInMillis(alarmtime);
Toast.makeText(getBaseContext(),c.get(Calendar.HOUR_OF_DAY)+"시"+c.get(Calendar.MINUTE)+"분에 알람이 울립니다.",Toast.LENGTH_SHORT).show();
}
});
alarmSetOffBt = (Button)findViewById(R.id.alaermsettingOff_bt);
alarmSetOffBt.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(getBaseContext(),ReceiveAlarm.class);
PendingIntent pIntent = PendingIntent.getActivity(getBaseContext(), 0, intent, 0);
AlarmManager manager = (AlarmManager)getBaseContext().getSystemService(Context.ALARM_SERVICE);
manager.cancel(pIntent);
}
});
}
private void calculateTime()
{
//알람시간을 milli값으로 나타내기
String time = alarmSetTextBt.getText().toString();
String temp = "";
int hour = -1,min = -1;
boolean a = false;
boolean isAm;
//hour와 min에 값넣기.
for(int i=0;i<time.length();i++)
{
if(time.charAt(i) == ':')
{
//시간값 hour에 넣고
hour = Integer.parseInt(temp);
temp = "";
a = true;
continue;
}
if(time.charAt(i) == ' ' )
continue;
temp += time.charAt(i);
if(a == true && temp.length() == 2)
{
//분값 min에넣고
min = Integer.parseInt(temp);
break;
}
Log.d("msg",String.valueOf(time.charAt(i)));
}
Log.d("msg","설정시각" + hour + "시" + min +"분");
if(time.contains("AM") == true) {
isAm = true;
}
else {
isAm = false;
}
//mill로 저장된 알람시간 계산하기.
alarmtime = hour*1000*60*60;
alarmtime += min*1000*60;
//오후면
if(isAm == false)
alarmtime += 12*1000*60*60;
Log.d("msg", "alarmtime"+alarmtime);
//현재 시간을 milli값으로 나타내기
long milliTime = System.currentTimeMillis();
Calendar c = Calendar.getInstance();
c.setTimeInMillis(milliTime);
long nowTime;
hour = c.get(Calendar.HOUR_OF_DAY);
min = c.get(Calendar.MINUTE);
Log.d("msg","현재시각"+hour + "시" + min +"분");
nowTime = hour * 1000*60*60;
nowTime += min*1000*60;
Log.d("msg","nowtime" +nowTime);
//알람메니저에 시간을알려주는게 어떤시간값을 알려줘야하지. 흠.
//최종 alarmTime계산 : 알람시간과 현재시간과의 관계
//알람시간이 현재시간보다 늦다면 알람시간-현재시간 후 울려야지
if(alarmtime >= nowTime)
{
alarmtime = alarmtime-nowTime;
}
else // 알람시간+24 - 현재시간
{
alarmtime = alarmtime+(1000*60*60*24) -nowTime;
}
//최종적으로 울리는 시간은 System.currentTimeMillis() + alarmtime 인데, 여기서 system시간의 초부분은 빼자.
milliTime -= c.get(Calendar.SECOND)*1000;
Log.d("msg","초 : " + c.get(Calendar.SECOND)*1000 + "");
alarmtime += milliTime;
Log.d("msg","이시간이 지난 후 울립니다 : " + alarmtime + "");
}
public static class TimePickerFragment extends DialogFragment implements
TimePickerDialog.OnTimeSetListener {
public TimePickerFragment() {
}
public Dialog onCreateDialog(Bundle savedInstanceState) {
final Calendar c = Calendar.getInstance();
int hour = c.get(Calendar.HOUR_OF_DAY);
int minute = c.get(Calendar.MINUTE);
return new TimePickerDialog(getActivity(), this, hour, minute,
DateFormat.is24HourFormat(getActivity()));
}
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
// TODO Auto-generated method stub
Locale locale = getResources().getConfiguration().locale;
String time;
String am_pm;
if(hourOfDay > 12) {
time = String.format(locale,"%02d : %02d",hourOfDay - 12,minute);
am_pm = "PM";
} else {
time = String.format(locale,"%02d : %02d",hourOfDay,minute);
am_pm = "AM";
}
alarmSetTextBt.setText(time + " " + am_pm);
}
}
}
'개인공부 > 안드로이드' 카테고리의 다른 글
android alarmmanager.setRepeating (0) | 2014.01.03 |
---|---|
alarm깨달은것 (0) | 2014.01.03 |
android timepickerfragment (0) | 2014.01.03 |
android %02d (0) | 2014.01.03 |
android final (0) | 2014.01.03 |