안드로이드 200

스레드(Thread) 대신 AsyncTask(비동기 태스크)를 쓰자!

UI 가 있는 곳에서 스레드 작업을 조금 길게 하면 화면에 버벅거리면서 아예 멈추는 경우도 발생한다. 하지만 스레드 대신 AsyncTask를 사용하면 이런 현상을 말끔히 해결해준다. class MainForReadyInitAsyncTask extends AsyncTask { @Override protected void onPostExecute(Void result) { // 작업이 완료 된 후 할일 super.onPostExecute(result); } @Override protected void onPreExecute() { // 작업을 시작하기 전 할일 super.onPreExecute(); } @Override protected Void doInBackground(Void... params) { /..

Service에서 SharedPreference 사용하기(context와 getApplicationContext차이)

기본적으로 SharedPreferences pref = getContext().getSharedPreferences(key, Context.MODE_PRIVATE); 위와 같은 코드를 사용하면 SharedPreference를 사용하여 앱에서 필요한 부분을 저장하고 불러올 수 있다. 하지만, Service(onReceive 등)와 같은 곳에서는 아래와 같이 getApplicationContext를 사용하여야 sharedPreference를 불러올 수 있다. 만약 위처럼 getContext()를 사용하게 되면 아무것도 얻을 수 없다. mContext.getApplicationContext().getSharedPreferences(key, Context.MODE_PRIVATE); getContext, cont..

서비스가 죽어도 자동으로 다시 실행하기

앱에 서비스를 등록해서 사용하고 있는데, 이러저러한 이유로 갑자기 앱이 죽어버리거나 서비스가 종료되면 정말 난감하다. 이럴 때는 @Override public int onStartCommand(Intent intent, int flags, int startId) { return super.onStartCommand(intent, this.START_STICKY, startId); } 위와 같이 onStartCommand를 사용하여 startService를 하도록 하며, START_STICKY 플래그를 쓰게 하면 죽어도 다시 살아나는 좀비 같은 존재가 된다.

안드로이드 TTS 중복 읽기 방지 (2개 이상의 앱)

아이스크림 샌드위치 버전까지는 안드로이드에서 TTS를 사용할 때 setOnUtteranceCompletedListener를 사용했으나, 이후 버전 부터는 setOnUtteranceProgressListener를 사용해서 Speaking의 시작과 끝에 대응할 수 있다. 또한, HashMap을 사용하도록 한 것도 큰 변화의 특징이다. 1개의 앱에서만 TTS를 사용한다면 문제가 없지만, 만약 2개 이상의 앱에 TTS를 사용할 경우엔 중복 문제가 발생하게된다. 즉, 1번 앱에서 '동해물입니다.' 라고 끝나야하는데, 2번 앱에서 '백두산인가요'라고 입력 되었던 문구가 함께 울리게 되는 것이다. (2번 앱은 실행 후 꺼버렸음에도 불구하고) 이런 문제를 해결 하기 위해서 아래와 같은 조치가 필요하다. speak 할 ..

[안드로이드 스튜디오] minSdkVersion 지정

Holo 테마를 지정하니 API 11부터 지원한다는 메시지가 뜬다. minSDKVersion을 AndroidManifest.xml 파일에서 수정해주었다. 그래도 똑같은 메시지가 남아있다. 안드로이드 스튜디오에서는 다른가 싶어 minSdkVersion 검색해보았다. build.gradle 파일에서 키워드 발견하였다. defaultConfig { applicationId "com.google.a" minSdkVersion 11 targetSdkVersion 11 } 위와 같이 수정해 주니 해결되었다. (팁) 충돌 방지 위해 AndroidManifest.xml 에서는 uses-sdk 부분 삭제하는 것이 좋다. 그리고, 안드로이드 스튜디오 메뉴에서도 가능하다. app - 오른쪽 마우스 - Open Module ..

브로드캐스트리시버 2개 이상 사용시, 부팅후 동적 재등록

1. 브로드캐스트리시버(BroadcastReceiver)를 사용해서 액티비티등에 다시 브로드캐스트를 보낼 수있다. 하지만, 만약 2개 이상의 브로드캐스트리시버를 등록할 경우엔 고려해야 할 점이 있다. public void registerR(){ IntentFilter filter = new IntentFilter(); filter.addAction(DO_1); registerReceiver(mIntentReceiver, filter); IntentFilter filterBoot = new IntentFilter(); filterBoot.addAction(DO_2); registerReceiver(mIntentReceiver, filterBoot); }위와같이 필터를 각각 만들어 주어야 하며, 리시버는 하..

눈 감고도 시간을 확인 할 수있는 숙면 앱

자다가 뒤척이면 으레 현재 시간을 확인하고 싶어진다. 이때 더듬더듬 휴대폰(스마트폰)을 찾은 뒤 전원 버튼을 누르고 눈을 뜨면 천국인지 어디서인지 내려오는 눈 부신 빛이 나를 맞이하고, 멍한 상태에서 시간을 확인하고 나면 잠이 확 깨버린 날들이 많으실 겁니다. 현재시간을 말해줘(몇시?) 그래서 코모가 특별히 제작한 앱을 소개해드립니다.잠 잘때 특히 빛에 취약하신 분들을 위해 '현재 시간을 말해줘(몇시?)'라는 앱을 출시했습니다. 보기만 해도 금방 아시겠죠? 체크박스에 체크만 해두면 언제나 손 안 대고 시간을 알 수 있습니다. 보통 카메라 근처에 근접센서가 있는데요, 이 부분을 공중에서 스치듯이 지나가면 시간을 말해 줍니다. 또는 폰을 뒤집어도 말을 해줍니다. 또 한가지 재미있고 실용적인 부분입니다. 위 ..

손 대지 않아도 현재시간을 말해주는 앱이있다?

자다가 뒤척이면 으레 현재 시간을 확인하고 싶어진다. 이때 더듬더듬 휴대폰(스마트폰)을 찾은 뒤 전원 버튼을 누르고 눈을 뜨면 천국인지 어디서인지 내려오는 눈 부신 빛이 나를 맞이하고, 멍한 상태에서 시간을 확인하고 나면 잠이 확 깨버린 날들이 많으실 겁니다. 현재시간을 말해줘(몇시?) 그래서 코모가 특별히 제작한 앱을 소개해드립니다.잠 잘때 특히 빛에 취약하신 분들을 위해 '현재 시간을 말해줘(몇시?)'라는 앱을 출시했습니다. 보기만 해도 금방 아시겠죠? 체크박스에 체크만 해두면 언제나 손 안 대고 시간을 알 수 있습니다. 보통 카메라 근처에 근접센서가 있는데요, 이 부분을 공중에서 스치듯이 지나가면 시간을 말해 줍니다. 또는 폰을 뒤집어도 말을 해줍니다. 또 한가지 재미있고 실용적인 부분입니다. 위 ..

반응형