본문 바로가기

Programming/android

특정 라이브러리가 없으면 설치 안되게 하기 특정라이브러리가 없으면 설치 안되게.... 설치 할 수 없다는... 에러메시지... [2012-12-12 10:39:25 - ApiDemos] Installation error: INSTALL_FAILED_MISSING_SHARED_LIBRARY [2012-12-12 10:39:25 - ApiDemos] Please check logcat output for more details. [2012-12-12 10:39:25 - ApiDemos] Launch canceled! 더보기
[DRM] 마켓별 DRM 적용방법. 1. DRM 적용 스토어 리스트.1. 구글 스토어 2. 티스토어 3. 삼성앱스4. 올레마켓 2. 적용방법 # 각 스토어 별로 DRM 적용 방법은 , 각 스토어 별로 안내 지침 보셔야 합니다. 제가 하나하나 알려 드리면 좋지만, - 스토어 별로 DRM이 주기적으로 업데이트 되며, ( DRM 라이브러리의 버전이 맞지 않다면, 리젝됩니다. ), 주기적으로 소스도 바뀝니다. - 파일 하나로 끝나는 것이 아니라, java 파일, manifest파일, proguard관련 설정 까지 경우에 따라서 맞추어야 합니다. 그래서, 스토어 안내사항 보시는 것이 최고입니다. # 스토어별 링크 1. 구글 스토어 - 추가적 DRM 필요 없습니다. 2. 티스토어 - http://dev.tstore.co.kr/devpoc/downlo.. 더보기
안드로이드 개발자 간담회 후기 ( 2 ) 안드로이드 개발자 간담회 각 세션에 대한 상세 설명을 기록해 보자. ^^ 감상평은 요기. 2012/09/18 - [Programming/android] - 안드로이드 개발자 간담회 후기 ( 1 )앞쪽에서는, 열심히 적었는데.. 뒤로 갈수록 졸음이 밀려와서 약간은 기록이 허술하다. ㅜ_ㅜ 사진 출처는 : 권순선 님의 구글 플러스 모든 세션은 영어로만 진행되고, 통역지원조차 되지 않아 불가피하게 영어로 필기. 뭐 통역하면서 필기하는 것이 더 어려우니까.. 휴..흠... 몇가지만 한글로 살짝 통역하고... 나머지는 뭐 패스. ^^;; 아, 발표 내용중에 VSync라는 내용에 대하여, 조금은 길게 설명했는데...이는 잘 모르겠는 내용. 공부가 필요하다. 1st. Definitive Android Design (.. 더보기
안드로이드 개발자 간담회 후기 ( 1 ) 휴가 중 짬을 내어, 안드로이드 개발자 간담회에 다녀왔다. 열정적인 개발자들이 참 많았던 자리, 이런 모임은 항상 스스로를 독려하게 한다. 발표자들의 모습을 보면... 타고난 재능을 기반으로, 즐겁게 최선을 다하며 개발을 즐기고 있는 그들의 모습이 느껴진다.나는 정말 그들만큼 하면서, 주어진 현실을 비판하고 있는 것일까? 아이구야, 이상한 사족이 길다. 강남 파이낸스 센터 . 구글 본사에서 진행된, 안드로이드 간담회.권순선 부장님의 구글 플러스에서 가져온 사진입니다.70여명의 사람들이 모여있다. 우르르르~ 열정적인 개발자님들... 항상 존경스럽다. 흠, 세션은 다음과 같다. 상세 일정 - 6:00 ~ 6:30 저녁식사 - 6:30 ~ 7:00 Android Design Guide - 7:00 ~ 7:30.. 더보기
android weightSum사용하기. parent에 weight_sum을 1로 정하시고, child에 layout_weight 을 .7로 주면.. 70%를 차지하게 됩니다. http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:weightSum="1" android:background="#ffffffff"> 안드로이드 한지, 2년만에 알게된, 새로운 사실... -_-;;; 출처 : http://www.androidpub.com/1507297 더보기
Android sqlCipher Proguard 오류시... SQLCIPHER In Android development, you probably want to encrypt the database (*.sdf) so that user (especially with rooted device) can't read the database without the application; for example, using SQLite Database Browser (http://sqlitebrowser.sourceforge.net). Fortunately, you can useSQLCipher (http://sqlcipher.net) to complete the task. Here are the implementation steps:Download the latest SQLC.. 더보기
sqlCipher 요즘, 프로젝트에 sqlCipher를 쓰고 있다...sqlite 암호화 툴로, 안드로이드, IOS, php등 다양하게 사용 가능합니다.공식 홈페이지 : http://sqlcipher.net/ # 헌데 생긴 문제점 !! Performance가 너무 안나왔다.데이터가 70000건까지는 원활한 속도로 수행하였으나, 뭐, 120000건이 넘어가자... 쿼리 하나를 하는 속도가 2초까지 나왔다. 흠...쿼리를 아무리 최적화하고, 인덱스를 잡고 등등 다해도....나는 200000건이 넘어가는 테이블도 있었는데... ㅠ_ㅠ 왜그렇게 만들었냐고 묻는다면, 내가 안만들었으니 주는대로 쓸뿐이다...이 정도까지 모바일에서 사용해보겠다고 만들어본것도 조금은 용감하네... 흠... 그래서, 적용하다가... 일부 중요한 데이터에.. 더보기
안드로이드 복사한 데이터 베이스 사용하려면, 파일은 asset에 넣고, 복사하여 사용하면, 되지만, "android_metadata"라는 테이블이 없으면, 오류가 생긴다. Locale정보를 저장한다는.http://developer.android.com/reference/java/util/Locale.html * 데이터베이스를 열 때, 생성한 데이터베이스가 아닌 외부에서 만들어져서 복사된 데이터 베이스인 경우 android_metadata라는 테이블이 데이터베이스 마다 존재해야 하며, 해당 테이블에는 로케일과 관련된 정보가 저장된다. 다음과 같은 쿼리 둘을 실행시켜 테이블을 생성하고, 필드를 추가해야 한다.CREATE TABLE "android_metadata" ("locale" TEXT DEFAULT 'ko_KR')INSERT INTO "andro.. 더보기
안드로이드 단말별 해상도 정보 (단위 : 픽셀) 범주기기명가로세로가로비세로비Apple아이패드768102411.3아이폰4G64096011.5아이폰3G32046011.4375HVGAG1, 옵티머스1, 이자르 등32048011.5WVGA 800넥서스원, 갤럭시S, 갤럭시S2, 디자이어 등48080011.66WVGA 854모토로라, 드로이드, XPeria, X10 등48085411.777인치 태블릿킨들파이어, 누크태블릿, 갤럭시탭 7인치600102411.710인치 태블릿갤럭시탭 10.1, Asus transformer800128011.610인치 태블릿2모토로라 XOOM720128011.77-갤럭시 S2 LTE, 갤럭시 S3720128011.77갤럭시 노트800128011.6갤럭시 넥서스720128011.77 잘못 기재된 내용이 있다면, 덧글.. 더보기
android NDK 개발하기 설정. 출처 : http://thdev.net/117Android NDK r7(최신버전)을 설치하고 build하는 방법을 설명하겠습니다. r7 이라고해서 기존 버전과 설치 방법이 다르거나 하지는 않았습니다. 다른 블로그를 참고해서 실행방법을 알아보고 제 환경에 맞는 NDK를 사용해보았습니다. 이번 글은 Ubuntu에서 NDK를 설치하고 NDK에서 제공하는 예제 코드를 사용해서 테스트 해보도록 하겠습니다.android 개발자 페이지  http://d.android.comNDK 다운받기 NDK는 위의 홈페이지로 접속하여, SDK -> android NDK, r7 을 클릭하시고 해당 OS 버전에 맞는 NDK를 다운 받으시면 됩니다.다운 받은 NDK를 압축 해제하기 명령어를 통한 압축 해제 방법입니다. tar -xvf.. 더보기
안드로이드 문자 보내기 (2) 안드로이드 문자 어플리케이션을 통해서 보내는 방법은 다음과 같다. # MIME type을 이용 ("vnd.android-dir/mms-sms") # 이렇게 하면, 실행됨. private void sendSmsByApplication(){ Intent i = new Intent(Intent.ACTION_VIEW); i.putExtra("address", "01025481781"); i.putExtra("sms_body", "Hello my friends!"); i.setType("vnd.android-dir/mms-sms"); startActivity(i); } 하지만, 갤럭시 탭에서는 에러가 발생한다. 실행할 문자 어플리케이션이 없어서 그렇다. 이런 경우, Exception발생. 다음과 같은 Except.. 더보기
안드로이드 문자보내기 (1) 문자를 보내는 방법은, 다음과 같다. 1. AndroidManifest.xml 파일에 퍼미션을 추가한다. 2. 자바 코드에 코드를 추가한다. 전화기능이 없는 갤탭 10인치에서는 NoService가 옴. public class MainActivity extends Activity { private Button btnSendSMS; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); findViewById(R.id.btnSendSMS).setOnC.. 더보기
Intent.FLAG_ACTIVITY_CLEAR_TOP Intent.FLAG_ACTIVITY_CLEAR_TOP flag ensures that the series of activities in the backstack is cleared. 더보기
카카오톡 처럼 팝업 올라오게 하기. // 이 부분이 바로 화면을 깨우는 부분 되시겠다. // 화면이 잠겨있을 때 보여주기 getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED // 키잠금 해제하기 | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD // 화면 켜기 | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); 필요한 순간 위 코드를 넣어주면, 되겠다. 잠자고, 있는 화면을 깨워주는것, 더보기
안드로이드 단말기 MacAddress 가져오기. { 홈화면 } > { 하드웨어키 메뉴 클릭 } > { 설정 } > { 상태 } 에 들어가면, { Wi-Fi MAC주소 }가 존재한다. 단말기 사용자에 대한 내용이다. 코드는 아님, 더보기
안드로이드 단말기 버전 알아오기 현재 단말기의 버전을 알아오고 싶다면, 다음의 코드를 이용하면 된다. 그리고, 아래와 같이 상황에 맞춰서 대처하여 보자. OS별 코드 버전 넘버는 전의 포스트 참조. (2011/11/17 - [Programming/android] - Android의 역사.) int version = android.os.Build.VERSION.SDK_INT; switch (version) { case 2: Log.d("VERSION", "? 1.1"); break; case 3: Log.d("VERSION", "CUPCAKE 1.5"); break; case 4: Log.d("VERSION", "DONUT 1.6"); break; case 5: Log.d("VERSION", "ECLAIR 2.0"); break; cas.. 더보기
Android의 역사. 안드로이드의 역사? 랄 것도 조금은 어색하지만, 그동안 버전 및 특징 그리고, 히스토리 들을 알아보는 시간을 가져볼까요, Android Version 안드로이드는 스펠링 순으로 먹는 것을 컨셉으로 하여 코드 네임을 짓고 있죠, 나름 맞추는 재미가 쏠쏠하다는… 안드로이드 버전에 대해서 자세히 알고 싶다면, 개발자 사이트가 제일 좋겠죠, 하기 사이트 참조 바랍니다. http://developer.android.com/sdk/index.html 그래도 간단하게 정리. Android Version RELEASE DATE CODENAME API Level FEATURE 1.1 February 2009 2 1.5 April 2009 Cupcake 3 1.6 September 2009 Donut 4 2.0 Octob.. 더보기
안드로이드란? 안드로이드 개발을 업으로 삼고 계속 일하고 있는 시점에서, 이제서야 Android가 무엇인가를 생각한다는게 우습다. 하지만, 난 아직 안드로이드를 너무 모르기에, 정리를 차근차근 해 나가고 있다. 오늘도 역시나, 안드로이드란? 사전에서 찾아보면 뜻은 다음과 같습니다. android – n. a robot with a human appearance. 사람 형상을 한 로봇. 뭔가 난해합니다. 그렇다면, 실제 안드로이드는 무엇일까요? 안드로이드는 구글이 내놓은 리눅스(Ubuntu) 기반의, 모바일을 타겟으로한 운영체제 입니다.(요즘에는, 모바일을 벗어나 다양한 가전기기에도 안드로이드가 탑재되고 있지요,) 2005년 구글은 모바일 사업의 일환으로, Android를 인수했고, 작업을 시작했습니다. 구글의 서비스가.. 더보기
볼륨키로 미디어 볼륨만 조정가능하게 하기 내 어플리케이션 안에서는, 볼륨키로 전화 음량을 조정하는 것이 아닌, 미디어 볼륨만 조정 가능하도록 하자. @Override public boolean onKeyDown(int keyCode, KeyEvent event) { AudioManager audio = (AudioManager)this.getSystemService(Context.AUDIO_SERVICE); switch (keyCode) { case KeyEvent.KEYCODE_VOLUME_UP: audio.adjustStreamVolume(AudioManager.STREAM_MUSIC,AudioManager.ADJUST_RAISE,AudioManager.FLAG_SHOW_UI); return true; case KeyEvent.KEYCODE.. 더보기
안드로이드 키보드 보이기, 숨기기 특정 동작을 했을 때, 소프트 키보드를 보여주고 싶을때에 사용한다. 키보드를 제어하려면 InputMethodManager객체를 사용한다. InputMethodManager는 "android.view.inputmethod"에 존재한다. 이 객체는 activity에서, getSystemService로 구할 수 있으며, 변수는 Context.INPUT_METHOD_SERVICE로 구하여 오면 된다. 키보드를 보여줄때는, public boolean showSoftInput (View view, int flags, ResultReceiver resultReceiver) 를 사용하고, 키보드를 가릴때는, public boolean hideSoftInputFromWindow (IBinder windowToken, i.. 더보기
현재실행중인 액티비티 구하기 현재 액티비티가 실행 중이라면, true를 반환하고, 실행중이 아니라면, false를 반환합니다. private boolean isActivityTop(){ ActivityManager activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE); List info; info = activityManager.getRunningTasks(1); if(info.get(0).topActivity.getClassName().equals(PhoneStateReceiverTestActivity.this.getClass().getName())) { return true; } else { return false; } } info = activityMan.. 더보기
티스토어 부분 유료화 결제 검수 방법 변경 인앱 관련. 티스토어 결제 검수방법이 변경되었다. 괜히, 승인거부만 당한… "부분 유료화API"에는 그에 대한 내용이 나와있지 않다. 어쩌라는 거지…? http://dev.tstore.co.kr/devpoc/notice/listNotice.omp 의 179번 글보면 됨. 검수 방법에 대한 정보는 다음과 같다. 3-10. 부분유료화 API가 정상적으로 적용되었는가? – 최신 버전의 API가 적용되어야 함 – 부분유료화 API 외 자체 결제 기능 제공불가 (단, 실물거래는 허용) – 등록된 부분유료화 상품 정보와 Application에 구현된 메뉴 정보가 일치하여야 함 – 등록된 과금액과 실제 발생한 과금 로그의 정보가 일치하여야 함 – 부분유료화 결제(부분 유료화 API에서 제공화면) 젂 금액 안내 및 고.. 더보기
sd카드에 database 저장하기. sqlopenhelper를 사용해 데이터베이스를 생성하게될 경우에, 보통 "data/ data / 패키지명 / db / 데이터베이스파일"로 생성이 되게 된다. 이 경로는 내가 원하는 곳으로 바꿀 수는 없을까? 이는 다음과 같이 하면 된다. 생성자에서 filePath만 새로 잡아주면 됩니다. 예 > public static final String FILE_PATH = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + SQLITE_FILE; public DBOpenHelper(Context context){ super(context, FILE_PATH, null, DB_VERSION); } 자동 생성되는, onCrea.. 더보기
[VideoView] 로컬 비디오파일 설정 videoView.setVideoURI(Uri.parse("android.resource://패키지명/" + R.raw.리소스아이디)); 더보기
screen on / off 안드로이드 화면 꺼짐 방지 (Screen on) 1. layout에서, android:keepScreenOn="true"의 속성을 준다. 사용예 : 2. 자바 코드에서, 다음과 같은 코드를 추가한다. 사용예 : getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 3. View에서 아무곳에서나 다음 메소드를 호출한다. setKeepScreenOn(true); 안드로이드 화면 꺼짐 요청 (Screen off) 1. 코드에서 다음을 요청합니다. PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); wl = pm.newWakeLock(PowerManager.PA.. 더보기
color를 xml로 사용하기. 1. 먼저 res > values 폴더안에 colors.xml파일을 생성해줍니다. 2. colors.xml에 색을 넣어줍니다. #ffffff .... 3. 사용합니다. 사용법 : xml 파일에서는, "@color/white" java 파일에서는, view.setBackgroundColor(getResources().getColor(R.color.red)); 자바에서, 그냥 view.setBackgroundColor(R.color.red); 요런식으로 사용하시게 되면, 참조를 못읽게 되어서, 원하시는 색상 출력하실 수 없습니다. 위의 방법을 사용하셔야 합니다. 추가 자세한 사항은 역시나, api를 참조합시다. http://developer.android.com/guide/topics/resources/mo.. 더보기
나인패치 안드로이드 나인패치란? 일반 png의 이미지에, 늘어날 수 있는 영역을 지정해주는 것입니다. PNG 이미지로 되어있는데 Stretchable(늘어나는) 영역을 정의할 수 있습니다. 이 나인패치 이미지는 보통 뷰(View)의 배경이미지로 사 용됩니다. 이에 대한 개념 정리는, 여타 사이트에 워낙 잘 설명이 되어있고, 제가 더 잘설명할 자신이 없어, 생략합니다. 아래 사이트 참조하세요. http://www.androidpub.com/2096 http://blog.daum.net/_blog/_m/articleView.do?blogid=0Eokl&articleno=155 http://developer.android.com/guide/developing/tools/draw9patch.html 쉽게 말해, 나인패치.. 더보기
스크롤상태를 확인가능한 ScrollView 스크롤뷰에서, 스크롤된 상태를 알수 없을 경우가 있기 때문에, 만든 커스텀 위젯입니다. 현재, HorizontalScrollView를 기준으로 만들었는데, 그냥 ScrollView도 다음과 같이 하시면 바로 적용가능하시겠네요. 스크롤뷰의 위치가 어디에 위치했는가를 알려줍니다. 상태는 세가지가 있습니다. public static enum DIRECTION { LEFT, RIGHT, NONE } 스크롤이 움직이게 되면, 커스텀 위젯의, OnEdgeTouchListener 가 호출되고, 여기서 스크롤 위치를 계산하여 콜백을 날려주게 됩니다. 이때, 위의 DIRECTION상태에 따라서, 원하시는 액션을 취해주시면 됩니다. 만든 방법은, 스크롤 될때마다 computeScroll을 호출하기 때문에, 이때마다 위치를.. 더보기
외부 라이브러리 사용하기 1. 사용할 라이브러리를 준비해줍니다. (*.jar, *.so파일은 다르게 함, 나중에 정리하도록 합시다.) 2. 프로젝트를 만들어줍니다. 3. 프로젝트에 마우스를 갖다대고 오른쪽을 클릭하여 New > Folder를 선택하여, libs라고 폴더를 추가하여 줍니다. 4. libs폴더에 아까 1번에서 준비한 라이브러리를 복사해줍니다. 복사된 모습 보이시죵, 5. 프로젝트를 클릭하여 오른쪽 마우스 클릭하여 BuildPath > ConfigureBuildPath 를 눌러줍니다. 여기서, Add JARs 클릭. 해당 프로젝트의 libs로 찾아들어가 아까 복사해 둔 라이브러리를 추가해 줍니다. 그리고, OK 클릭. 6. 라이브러리 추가 완료입니다. 이제, 추가된 라이브러리가 사용가능한지, 확인해 보시면 될겁니다. 더보기
안드로이드 개발환경 구축하기 안드로이드 개발환경을 구축하는 방법입니다. (윈도우 기준, 이클립스 갈릴레오 기준.) developer사이트의 개발환경 구축하는 방법을 참고합니다. http://developer.android.com/sdk/installing.html 1. Preparing Your Development Computer 안드로이드 개발환경 구축을 위해서는 먼저 java가 설치되어야 합니다. 시스템에 맞추어 java를 다운 받으시고, path까지 잡아주세요. 다운로드 링크는 다음과 같습니다. http://www.oracle.com/technetwork/java/javase/downloads/index.html 자바를 다운 받고, 패스를 설정하는 방법은, 다른 사이트에 워낙 잘나와 있어서 생략합니다. 참조 하세요. http.. 더보기