안드로이드용 공감플러그인APP 스마트폰

안드로이드 브라우저의 페이지 공유 기능을 이용한 싸이 공감APP 프로토타입.

APP이름, 아이콘, 사용방법 디자인 제안 환영.



Java 용 HTMLSpecialChar 변환기 프로그래밍

& " 등등을 &, " 같은 문자로 변환시켜주는 방법이,
php 에는 htmlspecialchars() 같은 함수가 있으나, 
자바에는 없는 것 같아 작성하였다.

w3c.org 에 있는 모든 문자를 등록하였으니 아마 대부분 다 될것이다.
코드가 심플하여 저작권, 수정, 배포 등등 아무런 제한이 없음.

(인코딩은 당근 utf-8 로 되어있음)


싸이월드 어플 장애 스마트폰

어플 사용에 의한 부하를 서버가 견디지 못해서 장애.
장애가 안타깝긴하지만, 그래도 이런 장애는 살짝 기분 좋다.

안드로이드 Service와 Sleep Mode 스마트폰

푸시가 정식 release 되지 않은 안드로이드에서 비슷한 기능을 구현하려면 일정시간마다 폴링(Polling)을 해야 한다.
그런데, 문제는 이게 상당히 까다로운 작업이라는 것. 아직 명확한 해결책을 찾지 못하겠다.

Timer라는 클래스가 있긴 한데, 이게 폰이 deep sleep mode로 빠졌을 경우엔 제대로 동작하지 않는다. 심지어, 다른문제일 가능성은 있으나, 밤새 서비스가 중단되어 버리는 경우도 있는 듯하다.

물론 AlarmManager를 사용하면 정확한 시간에 폴링을 수행할 수 있긴 하겠으나, 그때마다 폰이 sleep mode 에서 깨어난다면 배터리 소모량은 엄청날 것이다.

내가 원하는 정도의 스펙은, 이정도인데 아직 구현 방법을 모르겠다.
스펙1. 평상시에는 정확히 지정된 시간간격으로 수행.
스펙2. deep sleep mode 에서는 정확히 수행되지 않아도 무방함.
스펙3. 폰이 깨어나는 즉시부터는 다시 원래의 시간간격으로 수행.

스펙3을 위해 ACTION_SCREEN_ON을 receive 해서 그때 서비스 구동상태를 체크하도록 해보았으나, 그 이벤트는 코드에서밖에 regist 할 수 없는데 그렇게 되면, 서비스가 내려가버린 단계에서는 무의미해진다.

현재 Timer와 AlaramManager 를 대강 보완하여 사용할 방법이 현재 최선으로 보이는데, 다른 좋은 방법 없을까?



페이스북 알리미 스마트폰

안드로이드용 페이스북 어플이 워낙 엉망인데다, 노티가 제대로 안되는 것 같길래 만들었다.

물론 마무리 직전에, 트윗데크에서 노티 가능하다는 것을 알았고, 페북 어플도 쓸만하게 업데이트되는 비운을 맞기는 하였으나...

혹시 안드로이드 처음 공부하시는 분 코드샘플로나 쓰시라고...

apk: http://code.google.com/p/realmoveprivatespace/downloads/detail?name=facebook.noti_1.0.apk&can=2&q=#makechanges
svn repository: http://realmoveprivatespace.googlecode.com/svn/trunk/android.facebook.noti/



이런 리스트 화면이 있는 것이고...

이렇게 위젯으로 만들 수도 있고...



알림 세팅하면 체크해가며 노티도 띄워준다.
알림이 오랜기간동안 잘 동작할지는 보장할 수 없다.
아직 서비스에서의 타이머는 풀지못한 비밀이 남아서리...

[안드로이드] 본문중 URL 줄여주는 앱 스마트폰

트위터에서 만든 트위터어플을 사용중인데,

뉴시 보다가 간혹 공유하고 싶어서 트위터로 보내면,
URL 만 보내면 트위터어플이 알아서 줄여주지만,
기사 본문까지 함께 보내면 줄여주지 않는다.

불편해서 만들었다.
본문중 URL 을 추출하여 bit.ly 로 줄여주는 어플을 작성했다.

APK: http://code.google.com/p/realmoveprivatespace/downloads/detail?name=UrlShortener_1.0.apk&can=2&q=#makechanges
SVN Repository: http://realmoveprivatespace.googlecode.com/svn/trunk/UrlShortener/


1. 요렇게 보내기할 때, URLShortener 를 선택하면,


2. 요런 창이 뜨는데, URL 은 bit.ly 로 줄어있다.

3. 적당히 편집한 후, 요렇게 트위터로 보내주면 된다.


안드로이드 프로젝트 중, 미사용 png 찾아주는 유틸 스마트폰

안드로이드 프로젝트를 진행하고 나면,
사용 안하는 png파일들이 주욱 싸이게 되는데...

그런것들 찾아서, 지울 수 있는 유틸 하나 만들었습니다.

정확도는 보증 못하니... 실행전 백업 필수!!!


GUI도 붙이겠다고 맘먹고 시작했으나...
귀차니즘에... 소스에서 디렉토리 적당히 수정해서 돌리시기 바랍니다.

SVN Repository: http://realmoveprivatespace.googlecode.com/svn/trunk/ResourceChecker/

싸이월드 미니홈피 어플 출시!!!

싸이월드 미니홈피 어플이 대폭 버전업 되었습니다.

다운받아보세요!!



안드로이드 네트워크 스마트폰

이책 발제입니다: "시작하세요! 안드로이드 프로그래밍" – 위키북스

네트워크 사용패키지

  • p.337
  • J2SE 내의 네트워크, 스트림 관련 패키지 full spec 이 구현된 듯
  • java.net : TCP, UDP, HTTP관련 클래스 등등 사용, java.net.ssl, javax.net도 사용가능
  • java.io : 스트림 사용, java.nio도 사용가능
  • apache HTTPClient : org.apache.http 패키지 사용 - HTTP연결은 java.net 보다 이것을 사용할 것
    HttpClient httpclient = new DefaultHttpClient();
    HttpGet httpget = new HttpGet("http://localhost/");
    HttpResponse response = httpclient.execute(httpget);
    HttpEntity entity = response.getEntity();
    if (entity != null) {
    InputStream instream = entity.getContent();
    int l;
    byte[] tmp = new byte[2048];
    while ((l = instream.read(tmp)) != -1) {
    }
    }

XML 파싱

  • p.340
  • 네트워크든 File이든, 생성된 XML이든 결국 Stream 또는 String, char[] 등등으로 반환: 이것을 기존 방식대로 파싱하면 됨
  • XML, DOM 등의 기본 xml parsing method 사용 가능
  • org.xmlpull.v1.XmlPullParser 도 사용 가능
  • org.json 도 포함되어 있음

Thread 사용

  • p.342
  • 네트워킹, 파싱 등 시간이 걸리는 작업이 UI쓰레드내에서 진행되면 작업 시간 동안 UI가 반응하지 않는다: 시간이 걸리는 작업은 별도 Thread 사용
  • 기존의 Thread 와 Handler 사용 vs. AsyncTask

안드로이드 기기의 네트워크 상태 조회

  • p.348
  • android.net 패키지 안의 클래스들
  • DHCP, GPRS, WIFI 등등 정보

WebView

  • p.350
  • WebKit 이라는 렌더링 엔진 이용하게 됨
  • WebView 컴포넌트 사용하면 된다.
  • 또는, Intent 를 생성하여 브라우저 띄워준다.

안드로이드에서 위치정보 및 GPS 이용 스마트폰

이책 발제입니다: "시작하세요! 안드로이드 프로그래밍" – 위키북스

위치 얻기

  1. Service 얻기 (p.356)
    • LocationManager locationManager = (LocationManager) getSystemService( Context.LOCATION_SERVICE );
  2. Provider 얻기와 현재위치 얻기
    • String bestProvider = locationManager .getBestProvider(criteria, true ); //AndroidManifest.xml 에서 권한 설정 필요
    • Location location = locationManager.getLastKnownLocation( bestProvider );
  3. Listener 구현 및 등록

주요 클래스들

화면에 지도 보여주기

  • 외부어플리케이션 로드 (p.362)
    • URI:"geo:위도,경도" 를 사용한 Intent 로 startActivity()
  • 내부컴포넌트로 사용 (p.363)
    • com.google.android.maps.MapView 사용
    • 위성뷰사용여부, 이동가능여부, 확대가능여부 등 프로퍼티 설정 가능
    • Google 지도 API 키를 얻어야 한다.
  • 지도상에 위치 표시 (p.369)
    • 방법1: map.addView(마커이미지, 마커위치)
    • 방법2: ItemizedOverlay 를 extends 하여 구현. <== 출처가 뭘까? javadoc 에서 찾을 수 없음.

Emulator 에서 Mock Location Data 사용하기

  • 책참조

1 2 3 4 5