달력

5

« 2024/5 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
2012. 8. 11. 11:10

안드로이드 - 알람 소스2 안드로이드 이야기2012. 8. 11. 11:10

728x90
반응형

안드로이드 - 알람 소스2

1. 버튼 잘리는 경우 있음
2. 서버 정보 못가져 오는 경우 있음. 3트 하고 한번이라도 가져오면 정상 처리 해야할듯...
3. 정보 페이지 부정확...이건 어쩔수 없는데 가져올 만한 곳이 없을까...
4. c2dm...이건 좀 빡셀듯
5. WAKEUP...

------------------------------------------------------------------

package com.lge.alarm;

import java.util.Calendar;

import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;
import android.widget.TimePicker;
import android.widget.Toast;
import android.widget.ToggleButton;

public class AlarmTestActivity extends Activity {

public static final int REQUEST_CODE = 01;
public static boolean mStatus = true;

private final class MyToggleButtonListener implements OnClickListener {
private final ToggleButton tBtn;

private MyToggleButtonListener(ToggleButton tBtn) {
this.tBtn = tBtn;
}

public void onClick(View v)
{
if(tBtn.isChecked())
regAlarm(getApplicationContext());
else
unregAlarm(getApplicationContext());

//set ctrl
setCtrl();
}
}

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {

Intent intent = new Intent(this, AlarmSplash.class);
startActivityForResult(intent, REQUEST_CODE);

super.onCreate(savedInstanceState);
setContentView(R.layout.main);

//server status
setTitle();

//set time picker, 요일 toggle
SharedPreferences pref = getSharedPreferences("alarmPref", MODE_PRIVATE);
int hour = pref.getInt("hour",-1);
int min = pref.getInt("min",-1);
int date = pref.getInt("date",-1);
if(hour != -1 && min != -1 && date != -1)
{
setTimePicker(hour, min);
setDateCtrl(date);
}

//set toggle on/off button
final ToggleButton tBtn = (ToggleButton)findViewById(R.id.toggleButton1);
tBtn.setOnClickListener(new MyToggleButtonListener(tBtn));
tBtn.setChecked(isActivated(getApplicationContext()));

//set ctrl
setCtrl();
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(resultCode == Activity.RESULT_OK){
if(requestCode == REQUEST_CODE){
mStatus = data.getBooleanExtra("ServerStatus", true);
}
}
}

private void setTitle() {
final TextView title = (TextView)findViewById(R.id.serverStatus);
if(!mStatus)
title.setText(title.getText()+" On");
else
title.setText(title.getText()+" Off");
}

private void setTimePicker(int hour, int min) {
TimePicker timepicker = (TimePicker)findViewById(R.id.timePicker1);
timepicker.setCurrentHour(hour);
timepicker.setCurrentMinute(min);
}

private void setDateCtrl(int date) {
final ToggleButton tBtn2 = (ToggleButton)findViewById(R.id.toggleButton2);
final ToggleButton tBtn3 = (ToggleButton)findViewById(R.id.toggleButton3);
final ToggleButton tBtn4 = (ToggleButton)findViewById(R.id.toggleButton4);
final ToggleButton tBtn5 = (ToggleButton)findViewById(R.id.toggleButton5);
final ToggleButton tBtn6 = (ToggleButton)findViewById(R.id.toggleButton6);
final ToggleButton tBtn7 = (ToggleButton)findViewById(R.id.toggleButton7);
final ToggleButton tBtn8 = (ToggleButton)findViewById(R.id.toggleButton8);

if((date & 0x01000000)!=0) tBtn2.setChecked(true);
if((date & 0x00100000)!=0) tBtn3.setChecked(true);
if((date & 0x00010000)!=0) tBtn4.setChecked(true);
if((date & 0x00001000)!=0) tBtn5.setChecked(true);
if((date & 0x00000100)!=0) tBtn6.setChecked(true);
if((date & 0x00000010)!=0) tBtn7.setChecked(true);
if((date & 0x00000001)!=0) tBtn8.setChecked(true);
}

public int dateToInt() {
int retVal = 0;
final ToggleButton tBtn2 = (ToggleButton)findViewById(R.id.toggleButton2);
final ToggleButton tBtn3 = (ToggleButton)findViewById(R.id.toggleButton3);
final ToggleButton tBtn4 = (ToggleButton)findViewById(R.id.toggleButton4);
final ToggleButton tBtn5 = (ToggleButton)findViewById(R.id.toggleButton5);
final ToggleButton tBtn6 = (ToggleButton)findViewById(R.id.toggleButton6);
final ToggleButton tBtn7 = (ToggleButton)findViewById(R.id.toggleButton7);
final ToggleButton tBtn8 = (ToggleButton)findViewById(R.id.toggleButton8);

if(tBtn2.isChecked()) retVal |= 0x01000000;
if(tBtn3.isChecked()) retVal |= 0x00100000;
if(tBtn4.isChecked()) retVal |= 0x00010000;
if(tBtn5.isChecked()) retVal |= 0x00001000;
if(tBtn6.isChecked()) retVal |= 0x00000100;
if(tBtn7.isChecked()) retVal |= 0x00000010;
if(tBtn8.isChecked()) retVal |= 0x00000001;

return retVal;
}

private void setCtrl(){
boolean ctrlEnabled;
if(isActivated(getApplicationContext()))
ctrlEnabled = false;
else
ctrlEnabled = true;

TimePicker timepicker = (TimePicker)findViewById(R.id.timePicker1);
final ToggleButton tBtn2 = (ToggleButton)findViewById(R.id.toggleButton2);
final ToggleButton tBtn3 = (ToggleButton)findViewById(R.id.toggleButton3);
final ToggleButton tBtn4 = (ToggleButton)findViewById(R.id.toggleButton4);
final ToggleButton tBtn5 = (ToggleButton)findViewById(R.id.toggleButton5);
final ToggleButton tBtn6 = (ToggleButton)findViewById(R.id.toggleButton6);
final ToggleButton tBtn7 = (ToggleButton)findViewById(R.id.toggleButton7);
final ToggleButton tBtn8 = (ToggleButton)findViewById(R.id.toggleButton8);

timepicker.setEnabled(ctrlEnabled);
tBtn2.setEnabled(ctrlEnabled);
tBtn3.setEnabled(ctrlEnabled);
tBtn4.setEnabled(ctrlEnabled);
tBtn5.setEnabled(ctrlEnabled);
tBtn6.setEnabled(ctrlEnabled);
tBtn7.setEnabled(ctrlEnabled);
tBtn8.setEnabled(ctrlEnabled);
}

private boolean isActivated(Context context) {
Intent intent = new Intent(context, AlarmService.class);
PendingIntent sender = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_NO_CREATE);
return (sender != null);
}

private long setTriggerTime(TimePicker timepicker) {
//current Time
long atime = System.currentTimeMillis();
//timepicker
Calendar curTime = Calendar.getInstance();
curTime.set( Calendar.HOUR_OF_DAY, timepicker.getCurrentHour());
curTime.set( Calendar.MINUTE, timepicker.getCurrentMinute() );
curTime.set( Calendar.SECOND, 0 );
curTime.set( Calendar.MILLISECOND, 0 );
long btime = curTime.getTimeInMillis();

long triggerTime = btime;
if(atime>btime)
triggerTime += 1000*60*60*24;
return triggerTime;
}

public void regAlarm(Context context) {
Intent intent = new Intent(context, AlarmService.class);
PendingIntent sender = PendingIntent.getBroadcast(context, 0, intent, 0);
AlarmManager manager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
TimePicker timepicker = (TimePicker)findViewById(R.id.timePicker1);

long triggerTime = setTriggerTime(timepicker);

manager.setRepeating(AlarmManager.RTC, triggerTime,AlarmManager.INTERVAL_DAY, sender);
Toast.makeText(context, "뒤 설정되었습니다", Toast.LENGTH_SHORT).show();

//db에 저장
SharedPreferences pref = getSharedPreferences("alarmPref", MODE_PRIVATE);
Editor ed = pref.edit();
ed.putInt("hour", timepicker.getCurrentHour());
ed.putInt("min", timepicker.getCurrentMinute());
ed.putInt("date", dateToInt());
ed.commit();
}

public static void unregAlarm(Context context) {
Intent intent = new Intent(context, AlarmService.class);
PendingIntent sender = PendingIntent.getBroadcast(context, 0, intent, 0);
AlarmManager manager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
manager.cancel(sender);
sender.cancel();
Toast.makeText(context, "해제되었습니다", Toast.LENGTH_SHORT).show();
}

}

--------------------------------------------------------------------------------------------------

package com.lge.alarm;

import java.io.IOException;
import java.util.Calendar;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.widget.Toast;

public class AlarmService extends BroadcastReceiver {

private boolean checkDate(int date){

Calendar curTime = Calendar.getInstance();
int day = curTime.get(Calendar.DAY_OF_WEEK);
if(day == 1 && (date & 0x01000000)!=0) return true;
if(day == 2 && (date & 0x00100000)!=0) return true;
if(day == 3 && (date & 0x00010000)!=0) return true;
if(day == 4 && (date & 0x00001000)!=0) return true;
if(day == 5 && (date & 0x00000100)!=0) return true;
if(day == 6 && (date & 0x00000010)!=0) return true;
if(day == 7 && (date & 0x00000001)!=0) return true;

return false;
}

private boolean getServerStatus() {
Document doc = null;
try {
doc = Jsoup.connect("http://kr.battle.net/d3/ko/status").get();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
boolean status = doc.select("div[class=column column-3]").select("div[class=status-icon up]").isEmpty();
return status;
}

@Override
public void onReceive(Context context, Intent intent) {

//요일 체크
SharedPreferences pref = context.getSharedPreferences("alarmPref", Context.MODE_PRIVATE);
int date = pref.getInt("date",-1);
if(date == -1 || !checkDate(date))
{
return;
}

//서버상태 체크
boolean status = getServerStatus();

// TODO Auto-generated method stub
if(!status)
//울린다
Toast.makeText(context, "on", Toast.LENGTH_SHORT).show();
else
//안울린다
;//Toast.makeText(context, "off", Toast.LENGTH_SHORT).show();
}

}
--------------------------------------------------------------------------------------------------

package com.lge.alarm;

import java.io.IOException;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

import android.app.Activity;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;

public class AlarmSplash extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);

initialize();
}

private void initialize()
{
Thread thread = new Thread(null, getStatus); //스레드 생성후 스레드에서 작업할 함수 지정(getDATA)
thread.start();
showDialog(PROGRESS_DIALOG); //다이얼로그 팝업
}

private boolean getServerStatus() {
Document doc = null;
try {
doc = Jsoup.connect("http://kr.battle.net/d3/ko/status").get();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
boolean status = doc.select("div[class=column column-3]").select("div[class=status-icon up]").isEmpty();
return status;
}

ProgressDialog progressDialog;

final private int PROGRESS_DIALOG = 0;

//자료 처리
private Runnable getStatus = new Runnable() {
public void run() {
try{
boolean sStatus = getServerStatus();
progressDialog.dismiss();
removeDialog(PROGRESS_DIALOG);
Intent intent = new Intent();
intent.putExtra("ServerStatus", sStatus);
setResult(Activity.RESULT_OK, intent);
finish();
}catch(Exception e){
Log.e("getDATA", e.toString());
}

}
};

@Override
protected Dialog onCreateDialog (int id) {
switch (id) {
case (PROGRESS_DIALOG):
progressDialog = new ProgressDialog(this);
progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progressDialog.setMessage("Now loading..");
return progressDialog;

}
return null;
}
}

728x90
반응형
:
Posted by mapagilove