그동안 리눅스에서 개발하다가, windows 7으로 갈아타고 실행하려고 하니 오만 문제들이 다 발생했다.


그중 하나가 타겟에서 실행이 안되는 문제


Failed to install *.apk on device 란 에러가 날 때도 있고, 그냥 이클립스나 DDMS가 바보가 되는 상황이 발생했다.


확인해보니 방화벽과 관련된 문제로 보인다.


1. 방화벽이 adb를 인식하도록 수정

먼저 윈도우 > 제어판 > 시스템 및 보안 > Windows 방화벽 아래에 있는 "Windows 방화벽에서 프로그램 허용"을 클릭한다.

설정 변경을 누르고 "다른 프로그램 허용"을 클릭한다.

"찾아보기"를 통해 adb.exe가 설치된 곳을 찾아 adb.exe를 추가한다.

(이클립스가 시키는 데로 설치했더니, C:\Users\{본인계정}\android-sdks\platform-tools 위치에 있었음)


추가가 완료되면 아래와 같다.



2. 설정 재적용 ( 또는 windows7을 리부트한다.)

이클립스를 끈 후

윈도우의 "프로그램 및 파일 검색" 에서 cmd를 입력하여 command창을 띄운다.

아까, adb가 있던 폴더로 이동하여

adb.exe kill-server

adb.exe start-server

를 실행한다.

이클립스를 다시 시작한다.


3. 글이 도움이 된다면 아래 손가락을 클릭한다. :)

신고
Posted by 소혼
참고 글: PreferenceActivity 사용하기

저장할때:
SharedPreferences myPref = getSharedPreferences("some_name", Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = myPref.edit();
               
editor.putInt("lastThemePosition", m_Fgallery.getSelectedItemPosition());
editor.commit();

읽을때:
SharedPreferences settings = getSharedPreferences("some_name", Activity.MODE_PRIVATE);
int lastThemePosition = settings.getInt("lastThemePosition", 0);
신고

'<안드로이드>개발 > 안드로이드/App' 카테고리의 다른 글

앱에서 안드로이드 마켓/티스토어 연결하는 법.  (0) 2012.02.10
패키지명 변경시 check list.  (0) 2012.01.29
Preference 쓰기.  (0) 2011.12.13
[TIP] Activity  (0) 2011.11.09
GalleryView 옵션  (0) 2011.07.14
EditView 관련 정리  (0) 2011.07.11
Posted by 소혼
개인적으로 스마트 폰을 사용하는 이유는 멋진 기능을 이용하기 위해서라기 보다는 새로운 개발환경에서 지식을 습득하고 싶기 때문이다.
그리고 무제한 요금제를 쓰고 있지도 않다.

그런 까닭에 3G는 늘 꺼져 있는 상태이고, WIFI도 특별히 필요할 때 아니면 켜지 않고 사용한다.

그런데 언젠가부터 메모리도 많이 먹고 정리를 해도 크게 줄지 않는다 싶었더니...



개발을 위해 이클립스(개발툴)에 폰을 연결했더니 위와 같은 로그가 계속해서 올라오고 있는게 아닌가?
어떤 놈이 네트워크에 접속하려다가 계속 실패하는 건데
프로세스 정리를 해도 계속해서 올라오는 것이었다.

알아보니 범인은 얼마전에 다운로드 받은 무료 게임이었다 ;
모자이크한 부분에 적힌 회사 이름을 google에서 검색해서 알았다.

해당 앱을 과감히 지웠더니 더이상 로그도 뜨지 않고 기분탓일 수도 있지만 30M 가량이 더 확보된다.

이정도 대형 게임을 만들정도면 한두명이 개발하는 것도 아니고 멍청하지도 않을진데
도대체 백그라운드로 왜 저런 짓을 하는지 모르겠다.

유료 아이템 사나 안사나 감시하려는 건가?
비공식 루트에서 산 것도 아닌데 이모양이다.

어쨌거나 꽤 괜찮아보이는 게임이었는데 다신 안 깔 생각이다.
 
 
신고
Posted by 소혼
GalleryView 만들기 : http://bunhere.tistory.com/159
Flick없는 GalleryView : http://bunhere.tistory.com/154

옵션 설명.

android:unselectedAlpha="0.5" : 선택되어 있지 않은 항목을 흐리게 보여준다.
fadingEdge="none" : 가장자리에 fading을 없애준다.
spacing="10dp" : 각 아이템 사이의 간격을 늘려준다.
 
신고

'<안드로이드>개발 > 안드로이드/App' 카테고리의 다른 글

Preference 쓰기.  (0) 2011.12.13
[TIP] Activity  (0) 2011.11.09
GalleryView 옵션  (0) 2011.07.14
EditView 관련 정리  (0) 2011.07.11
[팁] 소스코드에서 해상도 처리하기.  (0) 2011.07.06
[TIP] WebView  (0) 2011.03.22
Posted by 소혼
안드로이드의 다양한 해상도 땜에 가끔 귀찮을 때가 있다.

어쨌든 이러한 해상도 문제를 해결하기 위해 몇가지 꼼수를 써서 해결해 보았습니다.
정답이 아니며, 더 좋은 방법이 있으면 공유 부탁드립니다.
이전에 쓴 관련글 : [팁] Density를 고려한 어플리케이션 만들기.

1) onCreate에서 width, height 정보를 획득
Display display = ((WindowManager)getSystemService(WINDOW_SERVICE)).getDefaultDisplay();
int displayWidth = display.getWidth();
int displayHeight = display.getHeight(); 

2) width, height에 따라 변수 설정
if (displayWidth == 600 && displayHeight == 1024)
    isItTab = true; 

3) LayoutParams 조정하기
if (isItTab) {
LinearLayout.LayoutParams params = null;
params = (LinearLayout.LayoutParams) mylayout.getLayoutParams();
params.width = 105;
params.height = 66;
mylayout.setLayoutParams(params);
...
} else {
...
}

허접한 글이지만, 도움이 되신다면 아래 손가락 꾹 눌러주세요.


신고

'<안드로이드>개발 > 안드로이드/App' 카테고리의 다른 글

GalleryView 옵션  (0) 2011.07.14
EditView 관련 정리  (0) 2011.07.11
[팁] 소스코드에서 해상도 처리하기.  (0) 2011.07.06
[TIP] WebView  (0) 2011.03.22
[팁] TextView 관련 팁들  (0) 2011.02.21
안드로이드 gles 첫번째 예제.  (0) 2010.11.02
Posted by 소혼
이번에 출시되는 LG 옵티머스원의 해상도는 HVGA(320x480)이라고 한다.
안드로이드는 이넘의 해상도 땜에 머리가 아픈거 같다 -_-;

어쨌든 왜 HVGA라고 부를까? 또 갤럭시S는 왜 WVGA라고 부를까 조사해보기로 했다.
참고: http://en.wikipedia.org/wiki/Graphic_display_resolutions
참고2: http://ko.wikipedia.org/wiki/해상도

뭔 해상도가 이렇게 많은지...
초창기 모니터들은 4:3의 가로세로비로 화면을 사용했다.
이렇게 만들어진 기본 화면이 640*480 픽셀로 이루어진 VGA(Video Graphic Array)이다.
이 비율을 유지하며 조금 더 키운 것이 800*600의 SVGA(Super VGA)이다.
좀 더 키운 것인 1024*768의 XGA (Extended Graphic Array) 이다.
이것도 작다고 더 키운 것이 1280*960이 되어야 4:3 비율이 될텐데 5:4 비율을 쓰기 시작하면서 1280*1024 해상도를 즐겨 쓰게 되니 이것이 SXGA이다.

이제 모바일로 넘어와 보자.
먼저 기본이 되는 VGA를 반으로 접어보자. 320*480이 된다. 반이니까  Half 붙여서 HVGA라고 부른다.
아이폰3G와 이번에 출시된다는 옵티머스원이 여기에 속한다.
한번 더 접어보자. 즉 1/4이 되면 Quater 붙여서 QVGA가 된다. 해상도는 320*240
이제 VGA를 조금 늘려보자. 늘렸으니 WIDE라고 부른다. 원래 비율이 4:3이었으니 5:3까지 늘리면 800*480이 된다. 이를 Wide VGA WVGA라고 부른다.
Galaxy S, HTC Desire, Nexus One, XPERIA 등 많은 안드로이드 폰이 여기에 속한다.
참, 그넘의 숨어있는 1인치 땜에 16:9라는 해상도도 있는데 이넘을 Full Wide라고 해서 FWVGA라고 하고 한단다. DROID해상도가 이넘이란다.

아이폰4는 얼마일까? HVGA를 가로 세로 모두 두배했다. 640*960이다.
어정쩡해보이는 해상도이지만 애플은 현명한 선택을 한 것 같다.
해상도의 비율을 유지함으로써 모든 앱들이 엉망으로 찌그러져 보이는 것을 막은 것이다.
반면 안드로이드 해상도는 비율이 제각각이다. HVGA로 나오는 옵티머스원, WVGA인 갤럭시S와 또 다른 해상도를 갖는 갤럭시탭은 그 비율이 제각각이라 앱들은 이미지가 찌그러져 보이지 않도록 신경을 써야 한다.

(추가글)
HD(High Definition)는 TV에서 먼저 쓰던 방식으로 몇가지 resolution을 갖지만 Full HD라고 불리는 것은 HD 1080 (HD 1080p?) 으로 1920*1080 의 해상도를 갖는다. 이 해상도의 비율은 위에서 언급한 FWVGA와 동일한 16:9의 해상도를 갖는다.
이 비율을 그대로 유지하면서 가로 세로 비율을 반씩 줄이면 1/4 크기가 된다. 역시나 Quater 붙여서 qHD라고 부르며, 960 * 540이 된다.
아트릭스가 이 해상도를 채택하고 있다.
더 높은 해상도이므로 동일한 크기의 글자를 더 잘 표현할 수 있을 것이다.
단 개발자들 입장에서는 또 다른 해상도에 고민을 할 수 밖에 없다.
당연히 현재 가장 많이 사용되는 WVGA 기준의 해상도로 만들어진 안드로이드 앱, 사이트들 가운데 일부는 화면이 약간이나마 어긋나 보일 수 있다.
** HD 해상도에 대해서는 조금 더 공부가 필요하다. 1080p가 좋다는 건 알겠는데 왜 하필 Full HD라고 했는지 모르겠다.

참고로 해상도와 화면의 크기는 다르다.
해상도는 가상의 단위인 픽셀이 몇개인가를 말하는 것이기 때문에 같은 해상도라고 해서 물리적으로 같은 크기를 갖지 않는다.
WVGA인 갤럭시S가 VGA를 사용하던 옜날 구형 모니터보다 크지 않다는 것을 생각해보면 알 수 있다.
이것을 구분하려면 dpi와 ppi라는 정보가 추가로 필요하다.

DPI는 점(Dot)가 1인치(2.54cm)에 몇개나 들어가는가를 표현하는 정보이다.
예컨데 눈금간격이 0.5cm인 모눈종이의 DPI는 5 라고 말할 수 있다. ( 1인치(2.54cm)에 5개의 모눈 칸이 들어간다. )

보통 DPI라는 용어가 프린터에서 왔기 때문에 PPI(Pixel per inch)라는 용어를 쓰기도 하지만 사실상 같은 용어로 봐도 무방하다.
신고

'컴퓨터 사용 팁 > Android' 카테고리의 다른 글

안드로이드 해상도 WVGA, HVGA, qHD?  (26) 2011.05.11
Posted by 소혼
목차로 이동

인터넷 뒤져서 짜다보니 다시 짤때 자꾸 또 검색하네요.
머리에 담기 위해서라도 개인 블로그에 다시 정리합니다.

1. res/xml폴더아래 xml 파일을 생성합니다.
    xml 폴더가 없다면 xml 폴더를 만들고 그 아래 새로운 파일을 추가합니다.
    예를 들어 setting.xml 파일을 추가하고,  그 안에 아래 내용을 입력했습니다.

 
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" android:key="root">
    <ListPreference
        android:key="WordSet"
        android:title="단어 종류"
        android:entryValues="@array/values_wordset"
        android:entries="@array/entries_wordset"
        android:defaultValue="0"/>
</PreferenceScreen> 

2. res/values 폴더 아래에 arrays.xml 폴더를 추가합니다.
   폴더에 아래 내용을 추가합니다.


<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="values_wordset">
<item>a</item>
<item>b</item>
</string-array>
<string-array name="entries_wordset">
<item>a</item>
<item>b</item>
</string-array>
</resources>

3. src 폴더에 새로운 class를 추가하고 아래 내용을 입력합니다.

package com.sohon.app;

import android.os.Bundle;
import android.preference.PreferenceActivity;

public class ActSettings extends PreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.setting);
}
}

4. AndroidManifest.xml 파일의 application 태그 안에 아래 내용을 추가합니다.

<activity android:name=".ActSettings" android:label="@string/app_name"></activity> 

5. 적절한 클래스에 ActSetting을 호출하도록 코딩합니다.

Intent i = new Intent(this, ActSettings.class);
startActivity(i);
 
신고
Posted by 소혼

Ellipsize
  텍스트가 너무 길 때, 자동 줄임 역할을 수행한다. (한줄로 보이게 하려면 maxLines="1")
    android:ellipsize="none" : 그냥 자름
    android:ellipsize="start" : 앞 부분에 ...
    android:ellipsize="middle" : 가운데 부분에 ...
    android:ellipsize="end" : 뒷 부분에 ...
    android:ellipsize="marquee" :

* ListView 안의 custom textview에서 Ellipsize 쓰려면
    android:scrollHorizontally="true"

textAppearance
   ?


코드에서 텍스트 사이즈를 바꿀 때 Unit 정보를 주는 법
예) sp를 주려고 한다면
ret.setTextSize(TypedValue.COMPLEX_UNIT_SP, 20);


HTML을 통해 스타일 주기
참고 : http://developer.android.com/reference/android/text/Html.html
참고 : http://developer.android.com/guide/appendix/faq/commontasks.html#selectingtext
    몇개 적용이 되진 않지만 HTML에 스타일을 줄 수 있다.
      예) wordView.setText(Html.fromHtml("<font color=red>test</font>"));
    안타깝게 폰트 크기 변경은 잘 되지 않는다.
    하지만 유사한 방법으로 <small>이란 태그를 사용하여 글자를 줄일 수 있다.



http://fanpro.springnote.com/pages/4801589.xhtml
http://babtingdev.tistory.com/251
http://blog.naver.com/PostView.nhn?blogId=lowmans&logNo=100118611161&redirect=Dlog&widgetTypeCall=true
신고
Posted by 소혼
이제 3D 공부를 시작해봅니다.

FirstGLRenderer.java

Act3D1.java


신고
Posted by 소혼

관련 글1 : http://bunhere.tistory.com/140 [Widget][예제]ListView with CursorAdaptor
관련 글2 : http://bunhere.tistory.com/153 [팁]기존에 생성된 (Sqlite3) DB를 안드로이드에서 이용하기

생성된 DB를 사용하는 것과 관련된 질문들이 많아 예제 프로그램을 작성해보았습니다.

옛날 만들었던 ListView with CursorAdaptor의 코드를 거의 그대로 들고 왔으나, DB를 만드는 부분은 153번의 initialize를 사용했습니다.

1. DB를 준비하자

먼저 DB 파일이 있어야 할 것입니다.
SQLITE3을 통해 아래와 같이 만들었습니다.(리눅스에서)

필요하신 분들을 위해 해당 파일 첨부합니다.

SQLite version 3.6.16
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> create table lecture (_id integer, name);
sqlite> insert into lecture values(1, 'ryuan');
sqlite> insert into lecture values(2, 'yesum');
sqlite> insert into lecture values(3, 'mindong');
sqlite> .q

2. 새 프로젝트를 만듭니다.
생성하는 방법은 익히 아실거라 생각됩니다. 중요한 것은 Package name입니다.
com.sohon.testDB 으로 패키지명을 정한 경우
해당 안드로이드 어플리케이션은 위 패키지 경로가 지정한 곳에 생깁니다.
그리고 /data/data/com.sohon.testDB 아래에 패키지 관련 파일들이 아래 그림과 같이 생기게 됩니다.
DDMS의 일부를 캡쳐한 화면입니다. 상단에 /data/data/는 다른 프로젝트들 떄문에 같이 캡쳐하지 못한 점 양해 부탁드립니다.

일단 위와 같이 새 프로젝트 정보를 입력하고 Finish를 누릅니다.
그러면 이클립스 개발환경이 뜹니다.

3. 코딩하기
ActTestDB.java 파일에 아래와 같은 내용을 코딩합니다
아래 내용은 관련글1과 관련글2의 내용을 합쳐놓은 코드와 유사합니다.
꼭 필요한 부분만 설명드리겠습니다. 관련글1,2를 참고하시기 바랍니다.

먼저 onCreate에서 initialze(this)를 통해 DB 파일을 asset으로부터, /data/data/com.sohon.testDB/databases 아래로 복사할 것입니다.

그리고 setAdaptor를 이용해 m_listbox에 DB를 연결합니다.
이것을 위해 수정해야 할 정보는 먼저 ROOT_DIR, DATABASE_NAME, TABLE_NAME 입니다.

실행하시면 아래와 같은 결과를 얻으실 수 있습니다.
에뮬레이터 resolution이 좀 이상한 것은 제 에뮬레이터 해상도를 이상하게 맞춰놔서 그렇습니다.(테스트용)


신고
Posted by 소혼

티스토리 툴바