안드로이드 개발의 가장 큰 어려움이라 할 수 있는 파편화... 최선의 선택을 위해 파편화의 정도에 대해 파악하고 비중을 고려하여 적절한 판단을 내리는 것이 좋을 것이다. 집중과 선택으로 과감한 포기(?)로 비용을 절감하고 만족감을 높이(?)는 것이 현명한 판단일 듯... 안드로이드 OS 의 버전 차이로 인한 파편화 그래프를 보아하니 최소 사양은 2.1이면 무난할 것 같다. Current Distribution 화면 해상도에 의한 파편화 Screen Sizes and Densities 제조사별 차별화 전략에 의해 다양한 하드웨어 구성에 의한 파편화
헉....충격이다... 앞으로 HTML5가 대세가 될것을 보면서 번거로운 안드로이드 어플 개발에 대한 흥미가 떨어졌었다. 그랬더니 기본적인 것도 다~ 잊어버렸네...ㅋㅋ 웹브라우저 VS 웹뷰 안드로이드에서 웹 페이지를 보여주는 방법은 2가지이다. 웹브라우저 웹뷰(WebView) 간단히 웹 브라우저는 간단히 URL만 사용해서 엡 페이지를 보여줄 때 사용하고, 웹뷰는 하이브리드 방식으로 내부동작에는 안드로이드 내장 컴포넌트를 사용할 때 이용된다. Webview 사용하기 AndroidManifest.xml 에 인터넷 사용 설정하기 레이아웃 XML에 WebView 선언하기 HTML 작성 및 저장 Activity에서 mWebView 사용하기 1. AndroidManifest.xml 에 인터넷 사용 설정하기 2. ..
모델 중심형 개발을 통해 Android 디바이스 및 애플리케이션을 신속하게 전달하기 UML 도구와 안드로이드 개발환경의 조합... http://www.ibm.com/developerworks/kr/rational/library/model-driven-development-speed-delivery/index.html MDD가 출현하면서 개발 프로세스를 가속화할 수 있게 되었다. MDD를 사용하면 소프트웨어 엔지니어가 요구사항을 더 분명하게 이해하고 분석할 수 있을 뿐만 아니라 설계 스펙을 정의할 수도 있다. 또한, 시뮬레이션을 이용하여 시스템의 개념을 테스트할 수 있으며 코드를 자동으로 생성하여 대상 하드웨어에 직접 배치할 수도 있다. Android 소프트웨어 개발자는 두 가지 유형, 즉 플랫폼 벤더와 ..
이 클래스는 시스템 알람 서비스에 접근하는 것을 제공한다. 이것은 애플리케이션이 미래의 어떤 정해진 시점에 실행될 수 있도록 스케쥴한다. 알람이 시작되면, 이것을 위해 등록했던 인텐트가 시스템에 의해 브로드캐스트 되고, 만약 애플리케이션이 실행 중이 아니라면 자동으로 대상 애플리케이션을 실행한다. 등록된 알람은 기기가 잠들어 있는 동안에 유지되지만 기기를 끄거나 재부팅했다면 삭제된다. 알람 관리자는 CUP wake lock을 가지고 있어서 가능한 오랫동안 알람 receiver의 onReceive() 메소드를 실행한다. 이것은 브로드캐스트를 관리하는 것을 마칠때 까지 전화기가 잠들지 잠들지 않을 것을 보증한다. 그리고 어떤 경우에는 가능한 빨리 onReceive() 메소드를 완료할 것임을 의미한다. 만약 ..
날짜가 변경되면 오늘의 일정도 변해야지.....!! 날짜가 바뀌면 앱 위젯의 내용을 갱신시켜야 한다. 주기적으로 intent를 broadcast 할수 있는 AlarmManager 를 사용해보고자 한다. 애뮬레이터의 시간설정이 야속해~ 작성된 앱을 실행시켰다. 정해진 시간에 알람이 호출되야 하는데...반응이 없었다.... 몇시간의 난(?)투...끝에 알아낸 원인은..크... 애뮬레이터의 시간설정이 현재 시간이 아니었는데 나는 그것을 보지 못하고 계속 현재시간 시준으로 세팅하고 있었던 것이다...ㅠㅠ 알람 등록하기 및 삭제하기 인텐트 설정하기 AlarmManager 인스턴스 얻기 및 알람 등록 알람 수신하기 브로드캐스 수신하기 참고 : [Android/developer.android.com] - [Refer..
이클립스에서 apk파일을 만들고 다시 zipalign 을 실행하는 데 번거로움을 느낀다... bat 파일로 간편화시키자 @echo off ECHO ANGMANG-PRJ-01 APK를 압축합니다. CD C:\Program Files\Android\android-sdk\tools setlocal ::변수 초기화 set apk_version= ::파일명 입력 set /p apk_version=압축할 파일 버전: @echo ON zipalign -f -v 4 C:\Android\myApk\ANGMANG-PRJ-01-V%apk_version%.apk C:\Android\myApk\R_AM-PRJ-01-V%apk_version%.apk @echo off ECHO 압축된 파일은 AM-PRJ-01-V%output_ap..
소소한 바램이... 나의 바램은 소소했다...오늘의 일정 리스트에서 각 항목을 메모 액티비티로 연결하는 것... 간단하지 않은가?? 그러나 간단하지 않았다.... 다음은 나의 뻘짓이다... 실패 1. 리스트의 각 아이템마다 Intent 의 putExtra 에 id값을 넣어서 전달했다. 자연스러운 코딩이었지만...putExtra 값이 사라져서 아무것도 나타나질 않았다. Intent intent_memo = new Intent(context, MemoActivity.class); iintent.putExtra("SID", id); PendingIntent pendingIntent_memo = PendingIntent.getActivity(context, 0, intent_memo, 0); item.setOn..
처음에 앱 위젯을 만들어야쥐~하고 생각했을 땐 쉽게 될 줄 알았다. 이미 작성해논 액비티비 화면을 그대로 불러다 쓰면 될 줄 알았다...그러나 이것은 나의 착각이었으니... 일단 앱 위젯 레이아웃 구성에서부터 막혀버렸다...알고보니 앱 위젯에 쓰일 수 있는 뷰는 한정되어 있었다. 내가 만들어놓은 커스텀 뷰나 리스트뷰같은근 쓰지 못한다. 작업순서 앱 위젯 레이아웃 만들기 AppWidgetProviderInfo Metadata 추가하기 AppWidgetProvider 상속 클래스 구현하기 매니페스트 파일에 등록하기 작업 상세 앱 위젯 레이아웃 만들기 참고 : Creating the App Widget Layout 홈 스크린에 표시될 앱 위젯의 레이아웃을 만든다. AppWidgetProviderInfo Met..
App Widgets 사용자가 새로운 앱 위젯을 추가할 때 세팅을 구성하게 하려면, 앱 위젯 구성 액티비티를 생성한다. 이 액티비티는 자동으로 앱 위젯 호스트에 의해 실행되고 사용자가 앱 위젯의 생성 시점에 가능한 세팅-앱 위젯 색상, 크기, 업데이트 기간 등-을 구성할 수 있도록 한다. 이 구성 액티비티는 보통 액티비티처럼 메니페이스 파일에 선언되어야 한다. 그러나 앱 위젯 호스트가 ACTION_APPWIDGET_CONFIGURE 액션으로 호출되기 때문에 이 인텐트를 받아들이도록 한다. 또한 이 액티비티는 AppWidgetProviderInfo XML 파일의 android:configure 속성에 선언되어야 한다. ※ 이 액티비티는 전체 이름으로 선언해야 한다. 왜냐하면 패키지 영역 밖에서 참조될 수 ..
앱 위젯의 초기 레이아웃을 정의하고 res/layout 디렉토리에 저장해야 한다. 앱 위젯은 아래에 나열된 View 객체를 사용해서 디자인할 수 있지만, 디자인을 시작하기 전에 먼저 App Widget Design Guideline을 읽고 이해하길 바란다. 앱 위젯 레이아웃을 만드는 것은 XML에 레이아웃을 선언하는 것과 비슷하다. 그러나 앱 위젯 레이아웃은 RemoteView 에 기반하다는 것과 모든 종류의 레이아웃을 지원하지 않는다는 것을 알아야 한다. RemoteView 객체는 아래 레이아웃 클래스를 지원한다. FrameLayout LinearLayout RelativeLayout 따라오는 위젯 클래스 : 이 클래수들의 자손 클래스는 지원되지 않는다. AnalogClock Button Chronom..
AppWidgetProvider 클래스는 BroadcastReceiver 를 상속받아서 앱 위젯 브로드캐스트를 처리할수 있는 편리한 클래스이다. onUpdate() AppWidgetProviderInfo 에서 updatePeriodMillis 속성에 정의한 간격대로 앱 위젯을 업데이트하기도록 호출한다. 이 메소드는 사용자가 앱 위젯을 추가할 때 호출되서, 필수적인 셋업이 호출된다. 그러나 만약 구성 액티비티가 선언된다면, 사용자가 앱 위젯을 추가할 때 이 메소드를 호출되지 않고 다음의 업데이트에서 호출된다. 구성을 마칠 때 첫번째 업데이트가 실행되는것은 구성 액티비티의 책임이다. onDeleted(Context, int[]) 앱 위젯은 호스트에서 삭제될때마다 호출된다. onEnabled(Context) ..
App Widgets AppWidgetProviderInfo Metadata 추가하기 AppWidgetProviderInfo 는 앱 위젯의 필수적인 값들-최소 레이아웃 크기, 초기 레이아웃 리소스, 앱 위젯을 업데이트하고 추가적으로 구성 액티비티를 적시에 실행하기 -을 정의한다. appwidget-provider 를 사용해서 XML리소스에서 객체를 정의하고 res/xml/에 정의한다. 속성의 요약 minWidth, minHeight 앱 위젯 레이아웃에서 요구하는 최소하는 공간 기본 홈 스크린 위치 앱 위젯은 윈도우안에서 정의된 높이와 너비를 가진 셀의 그리드에기반한다. 만약 앱 위젯의 최소 너비나 높이가 셀의 크기와 맞지 않는다면, 앱 위젯의 넓이는 거의 셀의 크기로 맞춰진다. 홈 스크린의 레이아웃 방향..
사용자에게 애플리케이션의 설치된 버전을 보여주고 싶다. //버전 tv_version= (TextView)findViewById(R.id.settings_program_version_desc); try { String versionName = getPackageManager().getPackageInfo(getPackageName(), 0).versionName ; tv_version.setText(versionName); } catch (NameNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); }