전체 글 327

안드로이드 오버라이드의 비밀과 함정 -Preference

PreferenceActivity의 기본 아이템들은 타이틀, 서머리 또는 체크박스만 있기 때문에 너무 단조롭다. 그래서 안드로이드는 오버라이드해서 내 맘대로 UI를 바꿀수 있도록 제공한다. 결국, 아래 그림처럼 seekbar를 넣어서 좀 더 다이나믹하고 인터랙티비한 형태로 바꿀 수 있다. 방법은1. Preference를 extends 하는 클래스를 하나 만든 다.2. 새로 만든 클래스에서 반드시 onCreateView를 만들어 줘야한다. @Override protected View onCreateView( ViewGroup parent ) { super.onCreateView(parent); mLayoutInFlater = (LayoutInflater) getContext().getSystemServic..

잠잘때 필요한 필수 숙면 앱 -v1.1.2

잠(취침, 낮잠) 잘 때 시간은 알고 싶은데 휴대폰(스마트폰)을 찾느라 손을 이리저리 움직이는 것도 모자라, 눈 뜨고 빛나는 시간을 확인 해야 한 적이 많으신가요? 이렇게 시간을 확인 했다면 이미 잠은 깨버린거죠. '잠이 오지 않을 때 잠깐만 시간 확인 하면 잘 잘것 같은데....' 자다가 잠깐 깨어났는데 시간만 확인 하고 싶은데....' '알람이 울릴 때가 되었는데 지금은 몇시인지... 확인 하면 잠 다 깰 것 같고...' 이런적이 많으신가요? 그렇다면 숙면 시계 어플을 만나보세요. 주무시던 잠 그대로 반 수면 상태에서 확인 하고 깊은 수면 상태로 다시 보내드립니다. 또한, 불면증으로 시달리는데... 시간을 확인하면 눈 부신 상태에서 또 다시 잠이 드는데 오래 걸리시는 분들께도 조용히 시간만 확인 시켜..

[안드로이드] 홈키 5초룰을 아시나요?

앱을 테스트 하던 중, 이벤트를 받고 startActivity를 했는데, mainActivity가 화면에 2-3초 후에 나타나는 현상이 발생했습니다. 왜 이렇게 느리지 하는 생각이 들어 개선점을 찾아 보기로 했지요. 속도를 개선해야 겠다 화면을 많이 그려서 그런가... 리소스를 잡아먹는 코드가 있나 고민에 빠졌죠.코드를 이것저것 빼도 전혀 빨라지지가 않네요. 그런데 이것저것 테스트를 하는 중에 Back 키로 앱을 나간 후 실행하면 바로 뜨고, Home 키로 나간 후 실행하면 뜨지 않는다는 차이점을 발견했지요. 홈 키는 뭐가 다를까?검색을 해 보니 안드로이드에는 일명 5초 룰 이라는 것이 있네요.홈키로 앱을 숨기면 그 activity는 백그라운드에서 startActivity를 해도 5초 동안 꼼짝하지 않는..

내 맘대로 목소리와 문장을 만들어 쓰는 정각알림앱 -스마트폰 v1.1.3

현재 시간 앞/뒤로 듣고 싶은 그리고 말하고 싶은 문장을 만들어 보세요. (명언, 좌우명, 속담, 암기, 공부, 일정, 메모, 상큼하고 활기찬 문구등으로 만들수 있습니다.) 매 시간 정각이 되면 시간과 함께 읽어 드립니다. 오늘 1.1.3 버전으로 업데이트 되었습니다. (새로운 기능은요 ?) 1. 남여 성우 변경 가능, 읽어주는 속도 변경, 언어 변경(영어 공부하세요), 말하기 엔진 변경 가능 (단, 제조사 및 단말기에 따라 다름.) (취향대로 변경하세요. 당신만의 읽어주는 비서가 됩니다.) 2. 미리듣기 UI 변경(플레이/포즈) 3. 현재 시간 말하기에서 '오후12시.' '. '을 점으로 읽어주는 현상 제거(일부 삼성 단말기) 그럼 기본 기능을 한 번 살펴 볼까요?**** 정말 정확합니다. 절대 정시를..

시간의 흐름과 함께 호흡하는 낭만앱 -v1.1.2

시간이 흘러간다는 것은 아시나요? 시간의 흐름과 함께 가고 계신건 아시나요?시간의 흐름 속에서 세월의 흐름을 잊고 계신건 아시나요? 이제 당신의 시간을 되찾아 와보세요. 시간을 세상에 맡겨두지 마시고, 이젠 항상 곁에 두세요. 소중한 나의 인생의 흐름을 느껴보세요.시간과 함께 호흡하며 살아 보세요.가을 하늘 높아지는 낭만과 함께... 현재 시간 앞/뒤로 듣고 싶은 그리고 말하고 싶은 문장을 만들어 보세요. (명언, 좌우명, 속담, 암기, 공부, 일정, 메모, 상큼하고 활기찬 문구등으로 만들수 있습니다.) 매 시간 정각이 되면 시간과 함께 읽어 드립니다. 오늘 1.1.2 버전으로 업데이트 되었습니다. (새로운 기능은요 ?) 1. 남여 성우 변경 가능, 읽어주는 속도 변경, 언어 변경(영어 공부하세요), 말..

[안드로이드] 볼륨 롱키 인식하기

타이머를 써야 하나 flag를 써야 하나 고민도 해봤는데, 안드로이드에서 volume long key 인식하는 방법입니다. @Override public boolean onKeyLongPress(int keycode, KeyEvent event){ if(keycode == KeyEvent.KEYCODE_VOLUME_UP || keycode == KeyEvent.KEYCODE_VOLUME_DOWN) { Log.d(TAG, "Long press KEYCODE_VOLUME_UP"); return true; } return super.onKeyLongPress(keycode, event); } @Override public boolean onKeyDown(int keycode, KeyEvent event) { ..

비동기 작업은 아버지가 살아있을 때 해라!

일반적으로 뷰 속에 버튼등을 넣을 수 있다. 그리고 이 뷰를 오버라이드 하면 새로운 커스텀 뷰를 만들수도 있다. 그러나 조심해야 할 점이 있으니... 뷰는 닫히면 사라진다. 만약 닫을 때 제거 하지 않으면 다음에 열 때 '니 자식의 애비가 살아 있으니 애비를 저리 치우고 다시 나와라'라는 말을 듣게 될 것이다. 즉, 무조건 제거를 해주어야 하는데 여기서 문제가 발생한다. 비동기 태스크가 문제다... 얘는 뷰가 닫혀도 언제든 갑자기 툭하고 나와서 실행 될 수 있다. 해당 클래스에 있다고 무심결에 이 뷰를 불러다 쓰면 죽느다. 이건 문제가 참 쉽다. 하지만 뷰 속에 있는 아이템을 불러다 쓰면 살아 있을 수도 있다. 뷰만 제거 하고 속 살은 제거 하지 않았기 때문에 아직 가비지 청소가 되지 않았다면 속살은 살..

자전거 라이딩시 현재 시간 확인 앱(손만 올리면 현재 시간을 말해줘요)

자전거 라이딩시 현재 시간을 확인 하고 싶을 때 손목시계를 들여다 보거나, 폰을 켜서 보는 등 어떻게든 눈으로 확인을 하고 계신가요? 그렇다면 이제 눈은 정면만 주시 하세요. 안전 운전 해야죠! 시간을 알고 싶을 때는 거치대에 올려 놓은 폰 위에 손만 슬쩍 스쳐주시면 현재 시간을 바로 말해줍니다. 여기에 오늘의 목표를 입력 해보세요. '오늘 화창한 가을날 30Km를 완주 할테야. 지금은 오후 2시 33분. 조금만 더 가자! 아자 아자!' 등과 같이 현재 시간 앞 뒤로 원하는 문구를 넣으면 시간 확인 시 마다 음성으로 알려 드립니다. 정말 편하고 재미있고 쉽죠? 그럼, 자전거에만 활용 하냐고요? 쓰임새가 정말 많답니다. 잠잘(취침) 때 시간은 알고 싶은데 휴대폰(스마트폰)을 찾느라 손을 이리저리 움직이는 ..

당신은 반드시 아이의 부모를 먼저 제거 해야 합니다?

오버라이드를 하다 보면... 또는 여러가지 뷰 작업등을 하다 보면 저런 경고 아니... 죽여 놓고 내 뱉는 문장을 만나게 된다. 유아이가 정말 복잡하게 되어있자면... 정말 난감하기 따름이 없을 것이다. 이번엔 Preference Override 에서 발생하는 문구에 대해 보겠다. 그냥 답만 내 놓자. onCreateView를 통해 1개만 만든다면 문제 없지만, 여기에다가 onCreateDialogView까지 만들게 되면 다음에 뷰를 띄울 때는 반드시 죽여야 한다. 그러지 않으면 아래 뻘건 문구와 함께 앱이 죽어 있을 것이다. java.lang.IllegalStateException: The specified child already has a parent. You must call removeView(..

백그라운드 리소스를 비 동기 태스크에서 사용하기

BackgroundResource를 asyncTask에서 사용할 때는 반드시 onPostExecute 또는 onProgressExcute 에서 사용 하도록 하자. doInBackground에서 사용 할 경우에는 시스템이 스레드를 돌면서 BackgroundResource를 해결 하러 다니는데... 따로 스레드를 돌려서 사용하면 죽는다. 시스템이 하는 일은 스레드에서 하지 말자. 아빠가 하는일은 아빠가 하도록 하자.

반응형