'직접만든어플모음' 카테고리의 다른 글
초간단 구글 맵 찾기 앱 구현 (0) | 2011.03.30 |
---|---|
바로바로 찾는 영어단어 후딱 찾기 (1) | 2011.01.26 |
직접만든 ExpandableListView 의 아주 간단한 예제 (17) | 2011.01.13 |
UDP 에코 서비랑 클라이언트 (0) | 2011.01.02 |
[왕초보팁]서비스연결후 현재 보여지고 있는 엑티비티에 값 넘겨줄때 (5) | 2010.12.08 |
초간단 구글 맵 찾기 앱 구현 (0) | 2011.03.30 |
---|---|
바로바로 찾는 영어단어 후딱 찾기 (1) | 2011.01.26 |
직접만든 ExpandableListView 의 아주 간단한 예제 (17) | 2011.01.13 |
UDP 에코 서비랑 클라이언트 (0) | 2011.01.02 |
[왕초보팁]서비스연결후 현재 보여지고 있는 엑티비티에 값 넘겨줄때 (5) | 2010.12.08 |
[마켓/무료]아이스마터 출시[스마트폰 사고 돈도 얻는 어플] (0) | 2011.09.02 |
---|---|
바로바로 찾는 영어단어 후딱 찾기 (1) | 2011.01.26 |
직접만든 ExpandableListView 의 아주 간단한 예제 (17) | 2011.01.13 |
UDP 에코 서비랑 클라이언트 (0) | 2011.01.02 |
[왕초보팁]서비스연결후 현재 보여지고 있는 엑티비티에 값 넘겨줄때 (5) | 2010.12.08 |
[마켓/무료]아이스마터 출시[스마트폰 사고 돈도 얻는 어플] (0) | 2011.09.02 |
---|---|
초간단 구글 맵 찾기 앱 구현 (0) | 2011.03.30 |
직접만든 ExpandableListView 의 아주 간단한 예제 (17) | 2011.01.13 |
UDP 에코 서비랑 클라이언트 (0) | 2011.01.02 |
[왕초보팁]서비스연결후 현재 보여지고 있는 엑티비티에 값 넘겨줄때 (5) | 2010.12.08 |
초간단 구글 맵 찾기 앱 구현 (0) | 2011.03.30 |
---|---|
바로바로 찾는 영어단어 후딱 찾기 (1) | 2011.01.26 |
UDP 에코 서비랑 클라이언트 (0) | 2011.01.02 |
[왕초보팁]서비스연결후 현재 보여지고 있는 엑티비티에 값 넘겨줄때 (5) | 2010.12.08 |
[왕초보시리즈3]간단한 탐색기 (14) | 2010.12.01 |
바로바로 찾는 영어단어 후딱 찾기 (1) | 2011.01.26 |
---|---|
직접만든 ExpandableListView 의 아주 간단한 예제 (17) | 2011.01.13 |
[왕초보팁]서비스연결후 현재 보여지고 있는 엑티비티에 값 넘겨줄때 (5) | 2010.12.08 |
[왕초보시리즈3]간단한 탐색기 (14) | 2010.12.01 |
(왕초보시리즈1)그림메모어플 (3) | 2010.11.29 |
01.
PendingIntent pIntent =
02.
PendingIntent.getService(getBaseContext(), 0,
03.
new
Intent(ExamService.ACTION_FILTER), PendingIntent.FLAG_ONE_SHOT);
04.
try {
05.
pIntent.send();
06.
} catch (Exception e) {
07.
// TODO: handle exception
08.
e.printStackTrace();
09.
}
10.
11.
//브로드 리시버 등록
12.
this.registerReceiver(receiver,
new
IntentFilter(ExamService.ACTION_FILTER));
1.
super.onStart(intent, startId);
2.
3.
//PendingIntent에 Intent 첨부해서 보내므로 바로 인자로 넣어주면 실행됨
4.
intent.putExtra(
"msg"
,
"안드로이드가 맛있다눈!!^^"
);
5.
6.
this.sendBroadcast(intent);
7.
8.
this.onDestroy();
01.
private
BroadcastReceiver receiver =
02.
new
BroadcastReceiver(){
03.
@Override
04.
public
void onReceive(Context context, Intent intent) {
05.
// TODO Auto-generated method stub
06.
process.append(
"SERVICE BROADCATING THIS!!\n"
);
07.
String msg = intent.getStringExtra(
"msg"
);
08.
if
(msg!=null)
09.
doProcess(msg);
10.
process.append(
"IT'S DONE!!\n"
);
11.
}
12.
};
직접만든 ExpandableListView 의 아주 간단한 예제 (17) | 2011.01.13 |
---|---|
UDP 에코 서비랑 클라이언트 (0) | 2011.01.02 |
[왕초보시리즈3]간단한 탐색기 (14) | 2010.12.01 |
(왕초보시리즈1)그림메모어플 (3) | 2010.11.29 |
(왕초보시리즈2)매시간 알리미 (4) | 2010.11.29 |
UDP 에코 서비랑 클라이언트 (0) | 2011.01.02 |
---|---|
[왕초보팁]서비스연결후 현재 보여지고 있는 엑티비티에 값 넘겨줄때 (5) | 2010.12.08 |
(왕초보시리즈1)그림메모어플 (3) | 2010.11.29 |
(왕초보시리즈2)매시간 알리미 (4) | 2010.11.29 |
[안드로이드]아주 간단한 로그인화면 구현하기 (1) | 2010.11.03 |
작성자의 티스토리 : http://javaexpert.tistory.com
다름이 아니라 이번에 처음으로 만든 어플이 있어서 올려봅니다.
올리는 이유는 펍가족님들에게 조언 좀 얻을려구영..^^;
용기있는 왕초보의 프로젝트입니다..이름은 허접한 그림메모 어플..^^;;;;;; ==;
어플 기능 소개
1.기본적인 리스트
2.미리보기 기능 구현
3.프리드로우 기능 구현(자바 그대로 구현)
4.옵션 메뉴 기능 구현
학습된 내용
1.커스텀 CursorAdapter 공부
2.인텐트 기본 공부
3.Bitmap 기본 변환 공부
4.기본 입출력 공부
5.기본 직렬화 IO 공부
6.DB 기본 컨트롤 공부 등등
단 2장짜리 어플이지만 상당히 공부된 걸로 판단됩니다..^^;;
최적화는 못했습니다..아직 실력이..T.T
사인안된 .apk하나랑 (unsigned랑 sign이랑 있는데 뭔지 잘 모르겠음..ㅋ)
풀소스 올려봅니다. 아주 초보분들은 조금이라도 도움될듯..고수분들에게 보이기엔 상당히 부끄럽습니다..^^;
이제 몇개월만 더 하면 과정 끝나서 안드로이드 취업해야 하는데.... 더 분발해야 할듯..
혹시 여기 올리면 안되면 바로 지우겠습니다..
UDP 에코 서비랑 클라이언트 (0) | 2011.01.02 |
---|---|
[왕초보팁]서비스연결후 현재 보여지고 있는 엑티비티에 값 넘겨줄때 (5) | 2010.12.08 |
[왕초보시리즈3]간단한 탐색기 (14) | 2010.12.01 |
(왕초보시리즈2)매시간 알리미 (4) | 2010.11.29 |
[안드로이드]아주 간단한 로그인화면 구현하기 (1) | 2010.11.03 |
작성자 블로그 : http://javaexpert.tistory.com
작성자 메일주소 : bear2u@naver.com
저번 발로 만든 어플 첫번째인 그림메모에 이어 두번째 어플을 만들긴 했습니다.
너무 소스가 부끄러워 그냥 제 블로그에다 넣을려고 했으나 저랑 비슷한 왕초보분들이 상당히 많이 계신것 같아서 또 용기있게 올려봅니다.
개략 설명============================================================================
일반 핸드폰에 있는 매시간 알림
서비스입니다.
기본 UI는 한장이며(솔직히 디자인도 어려운 안드로이드임..==;)
소스또한 그리 어렵지는
않습니다..하지만 이걸 구현하기 위한 저의 개발시간은 또 일주일..^^;
그리고 AlarmManager 의 setRepeating도
있는 데 Interval로 주기적으로 하는 건데 이상하게 하다 꼬여
서 그냥 주기적으로 Set하면 다시 Set하는 방식으로
했는데..참 난감합니다..^^;;
학습내용
1.broadreceive 기본적인 사용방법 숙지
2.Service 기본
구현방법 숙지
3.인텐트 필터 공부
4.알람메니저 기본 구현방법 숙지
5.Preference 사용방법 숙지..(이것도 하다
BroadReceive에서 받아올줄 몰라서 DB로 바꿔서 이 소스에선 안씀..^^;;
아무튼 간단한 거라도 만드니 상당한 공부가
되는 건 확실하네요^^
그럼 간략하게 소스 설명해드리겠습니다.
하지만 먼저..버그가 좀 있습니다.
1.알람시간이 정확하게 정해지지가 않습니다.
예)5시에 올려야 하는 데 5시 10초정도에 울린다던가..그런경우..도저히 못 잡겠음..T.T
...아시는 분 댓글 부탁..
2.BroadReceive나 Service에서 preference에 접근할려면 어떻게 해야 하는 지 모르겠네요
(아시는 분 댓글 부탁드립니다)
소스는 다음과 같습니다..
대략적인 프로세스 흐름은
1.엑티비티를 실행하면 위와 같은 한장의 UI가 나옵니다.
2. 그럼 실행 클릭합니다.
3.인텐트 액션명을 지정해서 Broad합니다.그럼 Receiver가 받겠죠?
1.
intent =
new
Intent();
2.
intent.setAction(
"org.exam.Alarm_action"
);
3.
this
.sendBroadcast(intent);
4.Receiver에선 서비스를 실행합니다.
1.
Intent mIntent =
new
Intent(context,AlarmService.
class
);
2.
mIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
3.
if
(!dbHandler.getIsFirst())
4.
new
MyThread(context).start();
1.
context.startService(mIntent);
1.
5.서비스에서 AlarmManager를 객체 생성후 배운대로 PendingIntent를 설정합니다..(책보고 하긴 했지만 아직 머하는 놈인지 자세히는..)
1.
AlarmManager manager =
2.
(AlarmManager)getSystemService(Context.ALARM_SERVICE);
3.
4.
Intent mIntent =
new
Intent(AlarmService.
this
,BroadAlarmManager.
class
);
5.
mIntent.putExtra(
"id"
,
1
);
6.
PendingIntent sender = PendingIntent.getBroadcast(AlarmService.
this
,
0
,mIntent,
0
);
6.이제 문제의 Calendar를 설정합니다..(솔직히 이부분에서 조언을 받았으면 합니다..)
01.
Calendar calendar = Calendar.getInstance();
02.
calendar.setTimeInMillis(System.currentTimeMillis());
03.
04.
int
mHour = calendar.get(Calendar.HOUR);
05.
int
mHin = calendar.get(Calendar.MINUTE);
06.
int
mSec = calendar.get(Calendar.HOUR);
07.
08.
Log.i(
"Time"
,
"1:"
+mHour);
09.
Log.i(
"Time"
,
"2:"
+mHin);
10.
Log.i(
"Time"
,
"3:"
+mSec);
11.
12.
calendar.add(Calendar.MINUTE,
59
-mHin);
13.
calendar.add(Calendar.SECOND,
60
-mSec);
14.
15.
mHour = calendar.get(Calendar.HOUR);
16.
mHin = calendar.get(Calendar.MINUTE);
17.
mSec = calendar.get(Calendar.HOUR);
대략 위의 소스대로 하면 다음 알람 시간은 예) 6시 00분 07초에서 10초사이에 설정됨
7.이제 AlarmManager으 Set으로 설정합니다.
1.
manager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), sender);
2.
3.
Toast.makeText(
this
,
"알람등록완료"
, Toast.LENGTH_SHORT).show();
8.그럼 시간이 지나고 또 지나고 매시간 정각이 되는 순간이 아니라..좀 몇초지나서..ㅋㅋ 소리가 나옵니다..(띵똥 몇시..)
소리 나오는 건 Receiver에서 옵션을 잡아서 재생하게 합니다.
여기선 쓰레드를 이용해서 하긴 했지만 뭐 굳이 안해도 될것 같더군요...^^;
01.
MyThread(Context ctx){
02.
this
.mCtx = ctx;
03.
calendar = Calendar.getInstance();
04.
calendar.setTimeInMillis(System.currentTimeMillis());
05.
AudioManager mAudioManager = (AudioManager) ctx.getSystemService(Context.AUDIO_SERVICE);
06.
volume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
07.
}
08.
public
void
run(){
09.
10.
11.
/*
12.
int hour = calendar.get(Calendar.MINUTE);
13.
14.
String sHour = String.valueOf(hour);
15.
16.
if(sHour.length() >1)
17.
sHour = sHour.substring(1, sHour.length());
18.
19.
Log.i("Receive","hour:"+sHour);
20.
*/
21.
//int am = calendar.get(Calendar.AM);
22.
23.
int
tHour = calendar.get(Calendar.HOUR);
24.
Log.i(
"Time"
,
"thread hour : "
+tHour);
25.
//if(am==0)
26.
//tHour--;
27.
MediaPlayer mp = MediaPlayer.create(mCtx, getHourVal(tHour));
1.
mp.setVolume(volume, volume);
2.
mp.start();
3.
4.
5.
}
그럼 여기서 생기는 의문은 왜 Activity에서 바로 알람을 실행안하고 이렇게 약간 복잡하게 할까..
그건 부팅후에도 실행할려고 하기 때문입니다.
인텐트 필터를 적용해 액션 및 부팅 후 Broad도 잡게끔 되어있습니다.
서비스 등록및 filter 적용한 부분입니다.
1.
<service android:name=
"AlarmService"
/>
2.
<receiver android:name=
".BroadAlarmManager"
>
3.
<intent-filter>
4.
<action android:name=
"android.intent.action.BOOT_COMPLETED"
/>
5.
<action android:name=
"org.exam.Alarm_action"
/>
6.
7.
</intent-filter>
8.
</receiver>
이상으로 간략적인 흐름은 끝냈습니다.
적다보니 상당히 간단하지만....하지만..힘들지만 재미있네요^^
풀소스는 여전히 밑에 첨부되어 있으니 보고 마구 지적해주세요. 지적은 대환영입니다..^^
여담이지만 이 어플은 항상 요양원에 계시는 아버지께서 갤럭시를 사드렸는데 시간알리미가 없어서 불편하다가 해서 기존에 있는 걸 까는 것 보다 자식이 만든 걸 깔아 드리게 되었습니다. 지금 만족하시네요^^
그럼 다들 수고하세요.
UDP 에코 서비랑 클라이언트 (0) | 2011.01.02 |
---|---|
[왕초보팁]서비스연결후 현재 보여지고 있는 엑티비티에 값 넘겨줄때 (5) | 2010.12.08 |
[왕초보시리즈3]간단한 탐색기 (14) | 2010.12.01 |
(왕초보시리즈1)그림메모어플 (3) | 2010.11.29 |
[안드로이드]아주 간단한 로그인화면 구현하기 (1) | 2010.11.03 |
UDP 에코 서비랑 클라이언트 (0) | 2011.01.02 |
---|---|
[왕초보팁]서비스연결후 현재 보여지고 있는 엑티비티에 값 넘겨줄때 (5) | 2010.12.08 |
[왕초보시리즈3]간단한 탐색기 (14) | 2010.12.01 |
(왕초보시리즈1)그림메모어플 (3) | 2010.11.29 |
(왕초보시리즈2)매시간 알리미 (4) | 2010.11.29 |