본문 바로가기

자료

안드로이드 디자인 가이드 안드로이드 디자인 가이드 안드로이드 디자인 방법에 대해 설명해 달라던 디자이너에게 보냈던 메일입니다. 안드로이드 개발자라면 다들 아는 사항이지만 의외로 모르는 디자이너들이 많더군요 ..-_- 모바일앱 디자인 하는 디자이너라면 좀 공부해도 괜찮을텐데..라고 푸념해 봅니다..;;여튼 참고하셔서 디자이너와 커뮤니케이션 할 때 이용하시면 좋겠네요;; 안드로이드 디자인 가이드 1. 디자인은 480*800 해상도를 기준으로 해주세요. : 현재 일반적으로 사용되는 안드로이드 폰의 화면 사이즈는 두가지 입니다. 480 * 800 과 720 * 1280 원칙대로라면 동일한 하나의 디자인을 각 화면 사이즈에 맞게 두벌 제작해 적용을 하는 것이 가장 아름답겠지만 용량이 커지고 로딩속도가 느려지고 메모리에 부하를 줄 수 있기.. 더보기
ListView에 WebView를 넣었을때 ClickListener 처리 인터넷 검색 하면 많이 나온다 기본적으론... oneHolder.imagePhotoMeet = (WebView) convertView.findViewById(R.id.imagePhotoMeet); oneHolder.imagePhotoMeet.setFocusable(false); oneHolder.imagePhotoMeet.setClickable(false); oneHolder.imagePhotoMeet.setLongClickable(false); oneHolder.imagePhotoMeet.setFocusableInTouchMode(false); oneHolder.imagePhotoMeet.setHorizontalScrollBarEnabled(false); oneHolder.imagePhotoMeet.s.. 더보기
apk 파일 다운로드 후 바로 설치 화면 띄우기 지금 까지는 apk를 파일 첨부 하거나 링크를 걸어두면 사용자가 다운로드후 파일관리자(ex Astro)를 이용해 따로 설치를 해야만 했다. 이게 귀찮아서리 바로 다운 받으면 설치 하게 할 수 없을까? 있다. apk down click 이렇게 하면 되더라... 물론 서버측 에서 설정을 해야 하는 것이지만.. 다운로드 후 자동 설치 되면 좋겠지만 그렇게 까지는 안되고~! 상태바에서 다운로드 완료 되었다는 알림을 선택하면 설치 화면으로 이동을 한다 그리고 나서 바로 설치~~~! 끝~! 전제조건 : 설정 에서 "알 수 없는 소스 설치" 가 체크 되어 있어야함~! 더보기
바이너리 XML 을 읽을 수 있는 XML 로 변환하는 방법 안드로이드 언팩을 하다가 알게 되었다. java -jar AXMLPrinter2.jar AndroidManifest.xml >> 1.txt 그런데 디컴파일을 해도 그닥 쓸모 없더라는... 수정이 더 시간이 걸릴듯.. ㅠ.ㅠ 더보기
안드로이드 버전별 특징ppt 안드로이드 버전 발표일 점유율(2012년 9월 4일) 4.1.x (Jelly Bean) 2012년 06월 28일 1.20% 4.0.x (IceCream Sandwich) 2011년 10월 19일 20.90% 3.x.x (Honeycomb) 2011년 02월 22일 2.10% 2.3.x (Gingerbread) 2010년 12월 06일 57.50% 2.2 (Froyo) 2010년 05월 20일 14% 2.0, 2.1(Eclair) 2009년 10월 26일 3.70% 1.6 (Donut) 2009년 09월 15일 0.40% 1.5 (Cupcake) 2009년 04월 30일 0.20% 구분 옵티머스뷰 갤럭시노트 갤럭시S III 갤럭시 노트2 옵티머스G OS 2.3 진저브레드 2.3 진저브레드 4.0 아이스크림.. 더보기
탭 버튼에 badge 달기 // 탭 설정 tabHost = (TabHost) findViewById(R.id.tab_host); tabHost.setup(getLocalActivityManager()); TabHost.TabSpec spec; CustomTabBadge mTabWidget1 = new CustomTabBadge(this); mTabWidget1.setImage(getResources().getDrawable(R.drawable.tab_photo_indicator)); mTabWidget1.setCount(0); Intent intent1 = new Intent(this, PhotoMeetGroup.class); spec = tabHost.newTabSpec("메뉴").setIndicator(mTabWidget1)... 더보기
SMS Receiver 출처 : http://blog.naver.com/PostView.nhn?blogId=gigar&logNo=60125551492 안드로이드 폰에서 SMS 메세지를 수신했을때 어플에서 수신된 SMS메세지를 처리 하고 싶다면 BroadcastReceiver를 사용하면 된다. 우선 안드로이드 프로젝트를 하나 생성하자. 그리고 SMS관련 receiver를 사용하기 위해 AndroidManifest.xml 파일에 권한과 receiver 정보를 추가 한다. 더보기
보안서버 웹페이지를 웹뷰에서 보기 private class MyWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); finish(); } @Override public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { // TODO Auto-generated m.. 더보기
뒤로가기 두번으로 앱 종료 하기 우선 Activity를 하나 만든다 이 엑티비티는 메니페스트에 등록할 필요 없다.. 그냥 하나의 클래스라 생각하자 public class MyBaseActivity extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //백버튼 종료 mHandler = new Handler() { @Override public void handleMessage(Message msg) { if(msg.what == 0) { // mFlag = false; ChatRaderMain.MFLAG = false; } } }; } private Handler mHandler; public void .. 더보기
MapActivity를 호출 할때 꼭 빼먹는것... public class MyMap extends MapActivity { } ## 메니페스트에 이것을 빼먹었을때 발생하는 에러는.. Caused by: java.lang.NoClassDefFoundError: 난 을 추가했는데.. 왜 에러가 나는지 한참을 해맸다 문제는 저 빨간색 부분.. 을 추가 해야 하는것이였다 Activity 자체가 mapActivity이기에... 더보기
c2dm 잘 정리된 post 출처 : http://susemi99.tistory.com/683 이 중에 내가 몰랐던 부분은... 등록 / 해지 부분... 등록만 할 줄 알았지.. 해지는 생각 안해봤다.. 프로그램상으로 막으려고 삽질했던 기억이 ㅠ.ㅠ 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 32 33 34 35 package mint.TestC2dm; import android.app.Activity; import android.app.PendingIntent; import android.content.Intent; import android.os.Bundle; import android.view.View; public cl.. 더보기
웹뷰에서 화면이 약간씩 움직임이 가능 할때 nWebView.setHorizontalScrollBarEnabled(false); nWebView.setVerticalScrollBarEnabled(false); nWebView.getSettings().setJavaScriptEnabled(true); 기본적으로 위의 세게는 정해주는게 좋을듯 하다... 스크롤바가 안보인다는것 뿐이지 기능을 안하는것 아니기 때문에... 스크롤은 되더라~! 더보기
소프트 키보드 확인창 입력후 키보드 사라짐 문제... 채팅을 하려고 만들었다... editText 박스에 문자를 넣고 내가 만든 "보내기" 버튼을 터치 하면... 키보드는 유지되고 이벤트는 실행된다. 텍스트 박스를 다시 선택 안해도 키보드가 유지 되는 것이였다. 문제는... 소프트 키보드에 있는 확인or전송 버튼의 이벤트를 받아서 실행하면....실행은 되는데... 매번 키보드가 사라지는 문제가 있었다. 이를 해결 하려고 별의 별짓을 다해봤다. 텍스트박스에 포커스를 유지시켜보기. 소프트 키보드 다시 띄우기 등등 해결은...editChatMsg.setOnEditorActionListener(new OnEditorActionListener() { public boolean onEditorAction(TextView v, int actionId, KeyEvent .. 더보기
EditText 가로모드 입력시 UI 보이기 세로모드에서는 텍스트 입력하는데... UI를 유지하면서 할 수 있다.. 문제는 가로모드다.... 가로모드에서 입력하려면.. 전화면이 입력창으로 바뀐다... 어찌 세로모드처럼 UI를 유지 하면서 입력 할 수 없을까?? 간단했다.... 이러면 되더라... 더보기
Customize Gallery ListView는 많이 커스텀해서 사용했다. 이번엔 가로 ListView가 필요해서 찾아보니.. 지원하지 않고 결국 Gallery를 이용해다 한단다... 제일큰 난관은 갤러리가 사진만 받게 되어 있다는것이다... 이걸... ListView처럼 내가 만든 레이아웃으로 넣는것이 문제였다... 모든 문제가 그렇듯 방법을 알면 간단 한것이였다 ㅠ.ㅠ //1개의 이미지를 대신할 1개의 레이아웃 one_home_gal.xml //갤러리를 표시할 레이아웃 (메인임) //실행 엑티비티 public class GalMain extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle save.. 더보기
안드로이드 화면 전환시 이벤트 받기 출처 : http://sugniandroid.springnote.com/pages/6029095 아래 코드와 같이 Activity 코드 내에 onConfigurationChanged() 함수를 오버라이딩하여 사용하면 폰의 가로 or 세로 전환시의 이벤트를 받아, 이에 대응하는 처리를 삽입할 수 있습니다. public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); Log.i(LOGTAG, "=== onConfigurationChanged is called !!! ==="); if (newConfig.orientation == Configuration.ORIENTATION_PORTRA.. 더보기
C2DM 종료~! GCM 시작~! 역시 대단한 사람들이 많다~! 내가 처음으로 GCM 프로젝트를 만들어서 포스팅 하려 했는데... 워낙 잘되어 있는 곳이 있어 그대로 가져왔다~! 저 블로거의 쥔장이 부럽다~! 어찌 저리 빨리도 하는지.... 혹시나 이 포스팅이 문제가 된다면 자삭하겠습니다~! 출처 : http://blog.naver.com/0677haha/60165740039 C2DM 에서 대체된 GCM 샘플 프로젝트를 만들어 봅시다!! 영어를 잘 못하지만 더 못하시는 분들을 위해 한번 한글로 번역해서 작성해 봅니다. http://developer.android.com/guide/google/gcm/gs.html#libs 위의 사이트에서 나온 내용을 토대로 해보면서 작성한 내용이니 더 필요한 정보가 있을 경우 위의 사이트를 방문하세요~ㅋ.. 더보기
E/AndroidRuntime(8068): FATAL EXCEPTION: Thread-12 E/AndroidRuntime(8068): FATAL EXCEPTION: Thread-12 위와 같은 에러가 발생했다 상세 메세지는 아래와 같다. Only the original thread that created a view hierarchy can touch its views. 구글링 해보니 http://binsolb.tistory.com/entry/CalledFromWrongThreadException 이 사이트를 찾았따~! 이를 응용해서 내가 만든건.... 아래와 같다~! 로딩중이라는걸 뱅글 뱅글 돌면서 보여주고 진행과정을 숫자로 보여주는것이다. public void init() { BackRunnable runnable = new BackRunnable(); Thread thread = new .. 더보기
C2DM 관리자key 받기 C2DM을 발송하기 위해선 관리자KEY를 받아야 한다. 이를 위한 소스다 확인된건 아니지만.... 한번 받은 관리자 key는 1년만 유효한거 같다(추측임) 갑자기 "Exception in thread "main" java.io.IOException: Server returned HTTP response code: 401 for URL: https://android.apis.google.com/c2dm/send" 이런 에러가 발생했다... 잘쓰던 넘인데... 하다 하다 안되서리... 관리자KEY를 다시 받고 실행하니.. 잘된다... 대충 따져보니.. 작년이맘때쯤 C2DM을 테스트 한다고 등록했던거 같다... import java.io.BufferedReader; import java.io.InputStre.. 더보기
RTSP 설정할때 조사한 것들 [Encoding 조건] Video Format : H.264 Audio Format : AAC [mp3안됨] http://blog.daum.net/joshuajh/5670935 안드로이드 간의 RSTP/RTP 통신시 소스 미디어에 MP3가 포함되어 있으면 스트리밍이 되지 않는다. 몇몇 안드로이드를 사용하는 장비들에서는 다음의 해상도가 아니면 재생이 안되거나 화면 스큐를 제대로 맞추지 못한다. 800 x 480, 480 x 320, 240 x 160 http://cafe.naver.com/wowzamedia/149 참고로 sk 3g는 bitrate 300k 제한이네요 ...370까지도 되긴하네요 http://cafe.naver.com/wowzamedia/3482 일반적으로 Wowza Media Serve.. 더보기
안드로이드 폰의 화면을 PC로출력 개발한 앱을 회의시 시연할때 유용할듯 하다 그런데 동영상은 안보인다 ㅠ.ㅠ 출처 : http://eternallife.tistory.com/27 파일다운로드 : http://lib.ribomation.com/files/droidAtScreen-0.3.jar 커맨드 창에서 droidAtScreen.jar실행(예: #java -jar c:\droidAtScreen.jar) 창이뜨면 \tools\adb.exe를 찾아 선택해준다. 더보기
안드로이드 위치 주소정보 가져오는 방법 출처 : http://blog.naver.com/PostView.nhn?blogId=free2824&logNo=60154994221 위의 소스에서 약간의 변형과 몇줄만 삭제 했음 public String getGpsToAddress(){ LocationManager locationManager; String context = Context.LOCATION_SERVICE; locationManager = (LocationManager)getSystemService(context); String addressString; Criteria criteria = new Criteria(); criteria.setAccuracy(Criteria.ACCURACY_COARSE);// 정확도 criteria.setPow.. 더보기
Android에서 NDK + JNI + FFmpeg 사용 제목은 저렇게 적어 놨는데... 포스트 내용은 내가 삽질했던 부분만... 올리겠다 제목의 설정은 구글 검색하면 좋은 자료가 많기에 생략을... 1. 개념 잡기 http://helloworld.naver.com/helloworld/8794 2. 따라하기 2-1 http://hoonkyu.blogspot.com/2011/12/android-ndk-ffmpeg.html 2-2 http://blog.naver.com/PostView.nhn?blogId=brighteyes79&logNo=130081136539 3. 응용하기 http://www.adminplay.com/76867 위의 사이트를 보고 나도 따라 하던중... 아래와 같은걸 해줘야 한다는걸 알았다. - cygwin을 실행시 Admin으로 실행 할것 (마.. 더보기
동적으로 객채 생성후 각각에 이벤트 주기~! 버튼 클릭으로 EditText를 추가 한다 그리고 추가된 각각의 EditText에 이벤트를 걸어준다. 가끔 선택이 안되는 버그가 있다 이유를 모르겠다. //객체 추가 생성 메소드 public void btnTextViewAdd(View v) { incrementID++; addEditText = new EditText(PhotoUpload.this); addEditText.setText("내용 입력 하는 곳"); addEditText.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); addEditText.setPadding(150, 150, 50, 10); addEditTe.. 더보기
이미지 URL을 ListView에 뿌리고 스크롤시 버벅 거림 해결~~!! 뭐든지 그렇지만 해보고 나니 별거 없더라는... 역시 진리는..ApiDemos 에 있었음.. com.example.android.apis.view.List13.java를 참고 샘플은 Views/Lists/13.slow Adapter 덧붙여 스크롤을 맨 마지막으로 이동시 다음 리스트를 가져와서 갱신하는 것도 해결~! 원본은... public void onScrollStateChanged(AbsListView view, int scrollState) { switch (scrollState) { case OnScrollListener.SCROLL_STATE_IDLE: mBusy = false; int first = view.getFirstVisiblePosition(); int count = view.getC.. 더보기
Intent 활용 예시 출처 : http://theeye.pe.kr/entry/a-tip-of-android-intent-with-simple-examples // 웹페이지 띄우기 Uri uri = Uri.parse("http://www.google.com"); Intent it = new Intent(Intent.ACTION_VIEW,uri); startActivity(it); // 구글맵 띄우기 Uri uri = Uri.parse("geo:38.899533,-77.036476"); Intent it = new Intent(Intent.Action_VIEW,uri); startActivity(it); // 구글 길찾기 띄우기 Uri uri = Uri.parse("http://maps.google.com/maps?f=d&sad.. 더보기
갤러리 공유 기능 추가하기 [펌] http://croute.me/497 우선 매니페스트파일에서 공유기능을 적용할 액티비티에 아래와 같은 인텐트 필터를 추가해줍니다. /AndroidManifest.xml 1 2 3 4 5 6 그리고 해당 액티비티에서는 아래의 코드를 추가해줍니다. code in Activity Uri uri = (Uri) getIntent().getExtras().getParcelable(Intent.EXTRA_STREAM); 이렇게 uri로 가져온 이미지 데이터는 아래와 같이 사용할 수 있을거에요. Bitmap from uri(Uri to bitmap) Bitmap bitmap = Images.Media.getBitmap(getContentResolver(), uri); 또는 바로 이미지뷰에 뿌려줄 수 있겠죠? I.. 더보기
C2DM 발송 테스트 소스 C2DM 관련 설정은 완료된것으로 전제 한다. 이는 단순히 메세지 발송이 잘되는지 안되는지를 확인하기 위한 소스다. 인터넷 어디선가 가져온 소스를 약간 수정 했다. import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; /** * 안드로이드 폰에 메세지를 전송하는 클래스 * @author inforex * */ public class PushAndroid { private static String HOST = "http://android.apis.google.com/c2dm/send"; private static String AUTH = "DQAAAMIAAAA.. 더보기
APNS 발송 테스트 소스 이는 APNS 설정이 완료되고 단순히 발송 여부를 확인 하기 위한 테스트 소스다 애플로 부터 받은 dev..... 또는 dis.... 파일은 같은 폴더에 넣어 둔다. import javapns.back.PushNotificationManager; import javapns.back.SSLConnectionHelper; import javapns.data.Device; import javapns.data.PayLoad; /** * 아이폰에 메세지를 전송하는 클래스 * @author inforex * */ public class PushIOS { private static PushNotificationManager pushManager; //디바이스 토큰 목록 가져오기 private static String.. 더보기
안드로이드 설치 ... JAVA SDK 설치 부터 AVD 설치까지 [안드로이드] 안드로이드 SDK 설치 / SDK 설치 / 안드로이드 개발키트 안드로이드 어플리케이션 개발환경 만들기 (각 항목을 클릭하시면 링크로 연결됩니다) 설치순서는 JAVA JDK→환경변수설정→이클립스→ADT 설치→안드로이드 SDK설치→AVD 설치입니다 CHAPTER.5 안드로이드 SDK 설치하기 SDK는 Android가 구동되는데 필요한 각종 기능들을 모두 담고 있는 Software의 집합체라고 할 수 있습니다 개발자들을 위한 Kit를 설치하기 위해서는 아래의 홈페이지에 들어가서 파일을 다운 받아야합니다 http://developer.android.com/index.html 역시나 운영체제에 맞는 파일을 다운로드 받으시면 됩니다^^ 다운받으신 파일의 압축을 풀고나서 C:폴더에 Location에 잡.. 더보기