반응형

개발/안드로이드 App 39

[팁]기존에 생성된 (Sqlite3) DB를 안드로이드에서 이용하기

전체 예제 코드를 http://bunhere.tistory.com/205 에 추가했습니다. 약간 복잡한 기초 데이터를 위해 초기 실행시 Create Table 도 하고 insert도 할 수 있겠지만, 별도의 db 파일을 만들어 관리하고 싶다면 아래와 같은 방법을 쓰는 것도 한가지 방법입니다. 1. db 파일을 assets에 넣습니다. 2. 아래 함수를 적당한 위치에 넣습니다. public static void initialize(Context ctx) {// check File folder = new File(ROOT_DIR + "databases");folder.mkdirs();File outfile = new File(ROOT_DIR + "databases/" + DATABASE_NAME);if (o..

[팁] density를 고려한 어플리케이션 만들기

최종 바이너리를 만들면서 확인하다가 큰 실수를 했다는 것을 알았습니다. density에 관한 것입니다. 에고 덕분에 완빵 고생을 하고 이 글을 적습니다. 혹시 이 글을 보시는 분은 배포 전에 꼭 resolution 독립적인지 확인하셔서 저같은 실수를 안하시길 빕니다. 일단 density를 위해 아래와 같은 점을 고려하면 될 것 같습니다. 1. 프로젝트를 만들 때, 반드시 min-sdk를 지정합시다. 프로젝트를 만들 때, min-sdk에 기본값이 없어도 프로젝트가 생성이 되지만 이렇게 만들어진 프로젝트는 hdpi 해상도에 대해 제대로 처리할 수 없습니다. 에뮬레이터가 큰 값을 갖더라도 그렇습니다. 2. px를 쓰지 말고 dp를 씁시다 최대한 레이아웃에 좌표계를 쓰지 않는 것이 좋지만 꼭 써야 한다면, dp..

[팁] SDCARD의 상태 확인

마무리 작업을 하고 있다. 타겟에 올려보니 실제와 다른 부분이 몇가지 있다. 특히 SDCARD부분이 다소 달랐다. 만약, SDCARD가 컴퓨터에 연결이 되어 있다면 디바이스에 인스톨된 어플리케이션은 SDCARD에 접근을 하지 못하는 것 같다. 곰곰히 생각해보니, 만약 어플 사용자가 선을 연결해놓고 실행하려 하는 경우 동일한 문제가 발생할 수 있다는 생각이 들었다. 따라서 SDCARD를 사용하려면 반드시 사용하기 전에 SDCARD의 상태가 정상적인지 확인하는 것이 필요하다. SDCARD의 상태를 확인하는 것은 getExternalStorageState() 를 사용하면 된다. android.os.Environment.getExternalStorageState() 아래는 안드로이드 Developer 자료 Co..

[Widget][예제]ListView with CursorAdaptor

SimpleCursorAdaptor와 ListView의 사용예 Activity를 MyList.java로 만들고 아래 코드들을 추가 DB는 단순하게 사용하였음 ### xml main.xml ### javapackage com.yesum.listDBSample; import android.app.Activity; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.view.View; import android.widget.A..

[팁] Quick Search Box 막기(안뜨게 하기)

안드로이드 에서 검색 버튼을 누르면 searchbox 가 뜬다. 이 searchbox가 뜨는 것을 막으려면 Activity에 아래와 같이 onKeyDown을 오버라이드 하면 된다. 모든 Activity에 넣어야 하는게 문제인데 혹시 다른 방법이 있다면 조언 부탁드립니다. @Override public boolean onKeyDown(int keyCode, KeyEvent event) { Log.w("ENGLISH1", "KEYCODE : " + keyCode + " vs " + KeyEvent.KEYCODE_SEARCH); if (keyCode == KeyEvent.KEYCODE_SEARCH) return true; return super.onKeyDown(keyCode, event); } 허접한 글이지..

MediaPlayer

MediaPlayer mediaPlayer = new MediaPlayer ( ); mediaPlayer.setDataSource("/sdcard/test.3gp"); mediaPlayer.prepare(); # Activity 가 Media volume만 조절하게 하기. setVolumeControlStream(AudioManager.STREAM_MUSIC); 오류 관련 TIP 1. prepare failed status 0xFFFFFFFC prepare() 수행중에 해당 에러가 나는 경우가 있다.(IOException의 e.getMessage() 를 출력한 결과) 여러가지 이유때문인 것으로 추정된다. 의심해야 할 항목은 setDataSource가 읽어드린 데이터에 대해 player가 판단하지 못한 경..

[공부] Thread

자바를 해본지가 워낙 오래되어 놓으니 Thread도 제대로 못 만들어 헉헉된다. 안드로이드에서 Thread를 쓰려면 두개의 Runnable이 기본으로 생성되어야 하는 것 같다. 1. Thread 생성 자바의 Thread를 만드는 것과 같다. 하지만 대부분 UI와 통신을 하기 위해서는 두개의 Runnable을 만드는게 일반적이다. private final Handler h = new Handler(); private final Runnable uiProcess = new Runnable() { public void run() { // UI와 통신을 담당, 버튼을 바꾸거나 seekbar를 수정하는 등 } }; private Runnable mythread = new Runnable() {// Child Th..

[Widget 스터디] Seekbar

10-06-16 초기 문서, style 설정 등 작성 - Seekbar Progress바와 유사하나, thumb를 옮겨 사용자가 원하는 위치로 이동하는 것이 가능하다. 1) 만드는 법 - 2) Seekbar 변경에 반응하기 3) style 바꾸는 법 - thumb 바꾸는 법 thumb를 바꾸는 법은 쉽다. 함수를 사용할 경우, drawable.setBounds(new Rect(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight())); mSeekbar.setThumb(drawable); layout을 사용할 경우 아래 속성을 Seekbar 태그에 포함시킨다. android:thumb="@drawable..

[팁] 용량이 없다고 안올라가는 경우 발생:Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE

이런 경우, 그냥 다시 켰다. 마땅한 방법이 없나? 쩝.. 로그캣을 체크하라는 메시지가 나와있길래, Couldn't copy package file to temp file. 라는 에러가 로그에 적혀있는 걸 확인할 수 있었다. 이것을 바탕으로 검색한 결과. http://www.mail-archive.com/android-developers@googlegroups.com/msg75123.html 즉, 내부 메모리가 부족하다는 뜻이다. 간단히 설치된 앱 몇개를 삭제해주니 에러가 사라졌다.(에뮬레이터의 내장 메모리가 너무 작았던 거구나 ;;) 또, 타겟에 올릴 때 연속해서 시도할 경우 이런 에러 메시지가 나는 경우가 있었다.

반응형