2012. 4. 12. 15:29

find . -name .svn -exec rm -rf {} \;

'리눅스' 카테고리의 다른 글

우분투 doxygen 설치  (0) 2012.10.02
톰캣서버 mime-type 수정  (0) 2012.09.21
MP4 변환하기  (0) 2012.07.03
각종 안드로이드기기 리눅스 adb에서 ????뜨는것 인식시키기  (0) 2011.08.24
Posted by newkie
2012. 2. 10. 15:03
am start -n <package-name>/.<class-name>

ex) am start -n com.newkie/.MainActivity 

'안드로이드 > 잔지식' 카테고리의 다른 글

나인패치  (0) 2011.05.05
코드에서 R.string 사용  (0) 2011.04.14
한글 bold효과넣기  (0) 2011.04.06
singleinstance 는 startActivityForResult 사용불가  (0) 2011.04.04
Posted by newkie
2011. 11. 28. 10:19
C file

# define DUB_C

#include "xxx.h" 


Header file 

#ifdef EXTERN
 #undef EXTERN
#endif

#ifdef DUB_C
 #define EXTERN
#else
 #define EXTERN extern
#endif

EXTERN int a;
EXTERN char b;
EXTERN void c();
... 

'C' 카테고리의 다른 글

여러 c파일에서 전역변수 공유하기  (0) 2012.06.08
hex string 을 실제 hex값으로 변환하기  (0) 2012.04.16
Posted by newkie
2011. 10. 27. 13:05
링크 : http://blog.daum.net/paulyi1129/64
링크 : http://blog.naver.com/kqwe1859?Redirect=Log&logNo=70119387066


안드로이드 커널 소스를 보기 위해서 JDK를 설치하고, 안드로이드 커널 소스를 받기 위해서 repo 를 먼저 다운로드 받으려고 했습니다. 그런데 https://android.git.kernel.org 에 접속이 되지 않아서 repo를 다운로드 하지 못하네요. 'repo download'로 검색을 해보니 '송죽암'님과 '게임세상'님께서 먼저 고생하여 얻은 정보를 공유하고 계셔서 쉽게 다운로드 받게 되었습니다. 파랑Box안드로이드 공식 방법이고, 주황색Box공식 방법이 안될 경우 선택 할 수 있는 방법입니다.
[official repo download]
[dhna@localhost ~]$ curl http://android.git.kernel.org/repo > ~/bin/repo
[dhna@localhost ~]$ chmod a+x ~/bin/repo
 
 
[unofficial repo download]
[dhna@localhost ~]$ curl http://php.webtutor.pl/en/wp-content/uploads/2011/09/repo > ~/bin/repo

[dhna@localhost ~]$ chmod a+x ~/bin/repo


~/bin 디렉토리에 repo를 download하였다면, 이젠 안드로이드 소스를 받아보려고 합니다. 그런데 역시나 download가 안되네요. 역시 찾아보면 해결방법이 도처에 널려있네요.

[official repo init & lately kernel source download]
[dhna@localhost ~]$ repo init -u git://android.git.kernel.org/platform/manifest.git
[dhna@localhost ~]$ repo sync
또는,
[official repo init & froyo kernel source download]
[dhna@localhost ~]$
repo init -u git://android.git.kernel.org/platform/manifest.git -b froyo
[dhna@localhost ~]$ repo sync

[unofficial repo init & lately kernel source download]
[dhna@localhost ~]$ repo init -u git://codeaurora.org/platform/manifest.git
[dhna@localhost ~]$ repo sync
또는,
[unofficial repo init & froyo kernel source download]
[dhna@localhost ~]$ repo init -u git://codeaurora.org/platform/manifest.git - b froyo
[dhna@localhost ~]$ repo sync


kernel 소스는 download시간이 깁니다. 책 좀 보면서 쉬면서 기다리세요^^


-출처 http://dhna.tistory.com/234
Posted by newkie
2011. 10. 20. 13:34

'링크' 카테고리의 다른 글

[안드로이드]롱클릭 이벤트 구현  (0) 2011.06.24
Posted by newkie
2011. 9. 2. 13:43
출처

http://t.dittos.pe.kr/post/9665021933


저는 안드로이드의 기본 글꼴 Droid Sans가 그다지 못생겼다고 생각하지는 않지만 글꼴은 앱의 인상에 상당히 큰 영향이 있는 것 같습니다. 특히 버튼 등 이미지로 만들어 놓은 UI와 동적으로 변하는 텍스트의 글꼴이 다르면 많이 어색합니다. 그래서 이 글에서는 앱 수준에서 전체적인 글꼴을 바꾸는 방법을 알아보겠습니다.

준비

재배포가 자유로운 글꼴을 준비합니다. 사실 그런 한글 글꼴은 나눔글꼴이 거의 유일하죠. 영문 글꼴은 선택의 폭이 훨씬 넓습니다.

참고로 TrueType 글꼴보다 OpenType 글꼴의 용량이 훨씬 적은 것 같으니, otf 파일을 사용하시면 앱 용량이 무식하게 커지는 것을 막을 수 있습니다. 요즘 나오는 기종은 괜찮은데, 저처럼 내장 메모리가 적은 디자이어 같은 폰을 쓰시는 분들에게는 용량이 크면 좀 치명적이거든요.

기본

글꼴 파일을 assets/ 디렉토리에 넣습니다. 그리고 글꼴을 불러온 뒤, 글꼴을 지정하기 원하는 뷰에 setTypeface 메소드를 호출하면 됩니다. 코드로 나타내면 다음과 같이 됩니다.

Typeface typeface = Typeface.createFromAsset(getAssets(), "font.ttf");
TextView textView = (TextView) findViewById(R.id.textView);
textView.setTypeface(typeface);

// 굵은 글꼴이 따로 있을 때 추가로 해줘야 하는 부분
Typeface boldTypeface = /* ... 위와 같은 방법 ... */;
textView.setTypeface(boldTypeface, Typeface.BOLD);

여기까지만 보면 상당히 쉬워보이지만 한가지 문제가 있습니다.

용량이 큰 글꼴 집어넣기

바로, assets 디렉토리에 넣은 글꼴 파일의 용량이 클 경우 읽어오지 못하는 문제가 발생합니다. 대부분의 한글 글꼴은 용량이 크기 때문에 일반적인 방법으로는 읽어올 수가 없습니다. 과연 어떻게 해야 읽어올 수 있을까요?

한참 구글링한 끝에 쪼개서 넣고 합치는 방법을 발견했지만 뭔가 깔끔하지가 않아서, 근본적인 문제(왜 용량이 큰 asset은 읽어오지 못할까)를 조사해봤습니다.

알고 보니 apk 파일을 만드는 과정에서 특정 확장자(jpg, png, mp3 등)가 아닌 파일은 압축이 되며, 압축이 되고 나면 압축 해제 시 용량이 1MB를 넘는 경우 런타임에 사용할 수 없어진다고 합니다. (출처, 진저브레드부터는 이 제한이 사라졌습니다. 아마도 최소 요구 메모리가 늘어났기 때문으로 보입니다.)

그래서 결론적으로, 글꼴 파일의 확장자를 mp3로 바꾸면 압축 대상에서 제외되며, 읽어올 수 있게 됩니다! 다소 황당하지만 이 방법을 쓰면 1MB 제한을 벗어날 수 있습니다.

레이아웃 전체에 적용하기

앞서 살펴본 코드에서는 한번에 뷰 하나씩 일일히 글꼴을 적용해 줘야 했는데요. 귀찮기도 할 뿐더러 실수할 확률이 높고 레이아웃이 바뀔 때마다 고쳐야 한다는 문제가 있습니다.

그러니 AndroidManifest.xml 같은 곳에 지정할 수 있는 방법이 있으면 좋겠지만 안타깝게도 그런 건 없습니다. 그래서 최상위 뷰를 찾아서 트리를 타고 내려가면서 글꼴을 적용한다는 아이디어를 생각해냈습니다. 대략 다음과 같이 하면 됩니다.

private Typeface mTypeface;

@Override
protected void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    setContentView(R.layout.fontTest);
    mTypeface = Typeface.createFromAsset(getAssets(), "font.ttf.mp3");
    ViewGroup root = (ViewGroup) findViewById(android.R.id.content);
    setGlobalFont(root);
}

void setGlobalFont(ViewGroup root) {
    for (int i = 0; i < root.getChildCount(); i++) {
        View child = root.getChildAt(i);
        if (child instanceof TextView)
            ((TextView)child).setTypeface(mTypeface);
        else if (child instanceof ViewGroup)
            setGlobalFont((ViewGroup)child);
    }
}

일단 전체적인 구조는, 뷰 여러 개를 담고 있는 ViewGroup(LinearLayout 등)을 만나면 재귀적으로 호출해서 트리를 타고 내려가는 겁니다. 위의 코드에서 주의할 점 몇 가지를 살펴보겠습니다.

  • findViewById(android.R.id.content)는 최상위 뷰를 찾기 위한 코드입니다. 안드로이드 내부에 의존하기 때문에 조금 불안하긴 하지만, 일단 잘 돌아가니까 놔둡시다.
  • 루트 뷰를 찾아서 setGlobalFont를 부르는 작업은 반드시 setContentView를 호출한 후에 해야 합니다.
  • setGlobalFont에서는 현재 TextView의 글꼴만 바꿔주고 있는데 TextView의 서브클래스가 아닌 뷰의 글꼴을 바꾸시려면 직접 추가해주셔야 합니다. 참고로 Button이나 EditText 등 대부분의 텍스트를 가진 뷰들은 TextView를 상속하고 있습니다.

앱 전체에 적용하기

위에서 설명한 방법을 사용해도 여전히 각 액티비티마다 글꼴 지정 코드를 넣어야 합니다. 수고를 덜기 위해서 별도의 기반 클래스를 하나 만들어서 사용하면, 액티비티 클래스마다 따로 지정하지 않고 상속만 해서 글꼴을 적용할 수 있습니다.

public class BaseActivity extends Activity {
    private static Typeface mTypeface;

    @Override
    public void setContentView(int layoutResID) {
        super.setContentView(layoutResID);

        if (BaseActivity.mTypeface == null)
            BaseActivity.mTypeface = Typeface.createFromAsset(getAssets(), "font.ttf.mp3");

        ViewGroup root = (ViewGroup) findViewById(android.R.id.content);
        setGlobalFont(root);
    }

    // 아까랑 같은 setGlobalFont
}

public class MainActivity extends BaseActivity { ... }

setContentView를 오버라이드 했습니다. 별로 좋은 방법 같지는 않지만onCreate를 오버라이드 하는 것보다는 간단하니 이렇게 하는게 낫겠습니다.

글꼴을 불필요하게 여러번 불러오지 않도록 하기 위해 static으로 선언해서 필요할 때만 불러오도록 하였습니다. 취향에 따라 싱글턴 패턴을 적용하시거나, Application 클래스를 이용하셔도 됩니다.



Posted by newkie
2011. 8. 24. 12:09
http://developer.android.com/guide/developing/device.html 참고



안드로이드를 꼽고

$adb devices

해보면

List of devices attached
?????????????? permission denied

이렇게 권한이 없다고 하는 것이 있는데 당연히 로그캣도 못보고 apk테스트도 할 수 없음



우선

$lsusb
로 연결된 안드로이드 정보를 보고

Bus 001 Device 013: ID 10a9:1104 SK Teletech Co., Ltd

이런 부분을 확인(저것은 베가레이서)

10a9:1104의 앞부분과 뒷부분을

$sudo vi /etc/udev/rules.d/50-android.rules

저기 50이란 숫자는
Gusty/Hardy/Dapper: 50
Karmic Koala/Lucid Lynx/Maverick Meerkat: 70
이정도로 나와있는데 현재 쓰는게 우분투 11.04(Natty Narwhal)인데 70으로 됨 이후버전 다 70통합인듯.

어쨌든 숫자 맞춰서 채우고 여기 안에다

SUBSYSTEMS=="usb", ATTRS{idVendor}=="10a9", ATTRS{idProduct}=="1104", MODE=="0666"

이런 식으로 한줄 채워주고 저장

이후

$adb kill-server
$adb start-server



$adb devices

해보면

List of devices attached
EF33S01111065095752    device


오오오.

'리눅스' 카테고리의 다른 글

우분투 doxygen 설치  (0) 2012.10.02
톰캣서버 mime-type 수정  (0) 2012.09.21
MP4 변환하기  (0) 2012.07.03
svn 삭제  (0) 2012.04.12
Posted by newkie
2011. 8. 18. 16:37
void Activity.onUserLeaveHint()
액티비티가 사용자에 의해 백그라운드로 전환되기 전, onPause() 메소드 바로 앞에서 호출되는 메소드
HOME 키를 눌러서 액티비티를 벗어날 경우 호출되며, BACK 키나 액티비티를 종료할 때는 호출되지 않음

출처 - 안드로이드사이드 
Posted by newkie
2011. 8. 3. 12:54
public class BlogTest extends Activity implements OnxxxListener, OnxxxListener, ...{

    static final int[] ID = {
             R.id.a,
             R.id.b,
             ... 

    };

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        for(int btnId: ID) {
            Button btn = (Button)findViewById(btnId);
            btn.setOnxxxListener(this);
            btn.setOnxxxListener(this);
...
        }
    }
    
    public void onxxx(View v) {
        switch (v.getId()) {
            case R.id.a:
                  ...
                  break;        

            case R.id.b:
                  ...
                  break;
            ...
        }
    }

    ...

}

버튼 여러개 같은 거에 각각 리스너 달때 편리함. 클릭리스너 포커스리스너 등등. 
Posted by newkie
2011. 8. 2. 10:40
public Bitmap imgResize(Bitmap bitmap)
    {
        int x=200,y=200; //바꿀 이미지 사이즈
    Bitmap output = Bitmap.createBitmap(x, y, Config.ARGB_8888); 
        Canvas canvas = new Canvas(output);
canvas.drawBitmap(bitmap, 0, 0, null);
int w = bitmap.getWidth();
int h = bitmap.getHeight();
Rect src = new Rect(0, 0, w, h);
Rect dst = new Rect(0, 0, x, y);//이 크기로 변경됨
canvas.drawBitmap(bitmap, src, dst, null);
    return output;
    }

원본에서 2배로 늘린다던지 줄인다던지 다 가능.  (w/2 나 w*2 등등)
Posted by newkie