2013. 7. 27.

넥서스4(Nexus 4) 젤리빈 4.3(JWR66V) 수동 업데이트(순정)

간단요약

1. update 다운로드
2. 리커버리 모드 진입
    폰 종료 - "볼륨 업+다운+파워" 로 부팅 - Recovery 선택
3. 볼륨 업 + 파워 를 동시에 살짝 눌러 리커버리 메뉴 선택
4. apply update from adb 선택
5. 넥4와 PC를 연결하여 아래 명령어를 입력
    adb sideload 파일명


................

안드로이드 젤리빈 4.3이 나왔길레 OTA 받으려고
Checkin 을 했으나 최신버전을 사용중이라는 메시지 ㅡㅡ;;

구글링을 좀 했더니 update.zip 주소가 있어서 얼른 받았는데,



Nexus 4 리커버리 모드에서 설치하려 했더니
외국 사이트의 내용과 다르게
"apply update from sdcard"
메뉴가 없다.. 헐..

그걸 대신하는
"apply update from adb"

잉.. 이건 뭔가..

adb로 어떻게 되겠지 했는데...
웬걸 넥4 리커버리 모드가 윈도우에서 인식이 안된다.

별 쑈를 다 했지만 인식 불가로 드라이버 직접 수정 (아래에서 받으세요)


이제 시키는대로 adb를 이용하여 업데이트
adb가 없으시면 요기
https://docs.google.com/file/d/0BzeVlrv78zD2TlpWNko2OHYtQTA/edit?usp=sharing

여기서 closed 에러가 발생하시는분은..
adb usb
adb sideload ....
로 입력하시면 됩니다.
(tcpip를 사용 하셨었으면 tcpip를 먼저 시도해서 에러가 발생한다네요..)

그럼 폰에서는?

흠흠...


님이 오셨습니다~~~

Nexus 4 Recovery driver / 넥서스4 리커버리 드라이버

수정된 구글 USB 드라이버 - Nexus 4 리커버리 모드 인식가능


구글에서 제공해주는 usb_driver를 이용하여 nexus4를 인식시키려 했더니
recovery mode에서 인식이 안된다..

구글링 하고 갖가지 드라이버를 다 받아봤는데 인식이 안되길레..

드라이버 수정했다 -_-;;;


수정내역은.. 넥4의 PID 추가

;Google Nexus 4
%SingleBootLoaderInterface% = USB_Install, USB\VID_18D1&PID_D001
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_D002&MI_01
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_D004&MI_02
%CompositeAdbInterface%     = USB_Install, USB\VID_18D1&PID_D006&MI_01

끝!

2013. 7. 22.

[Android]TextView - CompoundDrawable을 이용한 버튼만들기


이렇게 생긴 버튼을 만들고 싶을때

안드로이드에서 주로 TextView를 사용한다.

위의 예에서 아이콘이 drawable폴더에 icon.png 파일로 저장되어 있다면

^TextView
     android:id="@+id/btn_tag"
     android:layout_width = "wrap_content"
     android:layout_height = "fill_parent"
     android:drawableLeft = "@drawable/icon"
     android:text="태그"
     android:drawablePadding = "4dp"
     android:gravity = "center_vertical"
     /^

^를 <>로 바꾸세요

정도로 만들 수 있다.

하지만 실제 만들어보면


위 처럼 글자가 아래로 1~2px 내려간다.


왜~ 중앙정렬을 해야 한단 말이다!!!!
center_vertical 인데... 왜 ㅠㅠ


1) 이미지의 윗부분을 1~2px 키워볼까....?
2) ImageView와 TextView를 분리하고 부모에 Click 속성을 줘야하나...?


해답은 의외로 간단한 곳에 있었다..


폰트에는 기본적으로 padding이 만든사람 마음대로 들어가 있고,
이를 인지한 구글에서 paddind을 제외할 수 있도록 해 둬서
옵션만 주면 정 중앙에 맞게 그려진다...
(삽질 한시간... 에이 바보야...)


android:includeFontPadding="false"

끝!

2013. 7. 11.

[Android] Custom animated Framgnet 숨기기 동작 수정 / Solution for hiding custom animated fragment

은근히 많은 안드로이드 SDK의 버그...

Fragment를 이용하여 화면을 구성할 때,
Fragment를 분명히 hide 시켰는데, hide되지 않는 경우가 있다..


위 Activity에 다음처럼 명령을 주면
  1. add - Fragment A
  2. add - Fragment B
  3. hide - Fragment A


기대하는 결과는


....

하지만 현실은





젠장... 왜 -_-;; 난 hide를 분명 했단 말이다!!

현재까지의 버전(젤리빈 4.2.2, Android support pack rev 13) 에서 이 문제를 해결하기 위해서는

    1. Fragment A 의 현란한 애니메이션을 삭제 -> 까이꺼 날려버려~
    2. Fragment B 에서 수동으로 attach / detach -> state까지 기억해야돼.. 귀찮아 ㅜㅜ

을 해야 한다.


1번은 간단히
fragmentTransaction.setCustomAnimation(...)    <= 빠이염~


2번은 간단히... (진정 간단하냐....?? 정말?)

public class FragmentB extends Fragment {

  @Override
  public void onHiddenChanged(boolean hidden) {
      super.onHiddenChanged(hidden);
  
      FragmentManager fm = getActivity().getSupportFragmentManager();
      if (hidden) {
        fm.beginTransaction().detach(this).commit();
      } else {
        fm.beginTransaction().attach(this).commit();
      }
  }

  @Override
  public void onSaveInstanceState(Bundle outState) {
    //내위치는 어디고,
    //선택은 뭐가 되었고,
    //사용자가 입력은 뭘 했구만..
    //오키~ 저장완료

    super.onSaveInstanceState(outState);
  }

  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    ...

    if (savedInstanceState != null) {
      //위치를 다시 옮기고
      //선택을 다시 해주고
      //입력한거 다시 입력해주고
      //짜잉나! -_-;;
    }

    ...

  }
}

간단하죠?

...

(돌 던지지 마세요... )
그래서 개선 했어요 ㅡㅡㅋ



public class FragmentC extends Fragment {
  private View mContentsView;

  @Override
  public void onHiddenChanged(boolean hidden) {
      super.onHiddenChanged(hidden);
  
      FragmentManager fm = getActivity().getSupportFragmentManager();
      if (hidden) {
        fm.beginTransaction().detach(this).commit();
      } else {
        fm.beginTransaction().attach(this).commit();
      }
  }

  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    if (mContentsView == null) {
      mContentsView = inflater.inflate(....);
    } else {
      ViewParent parent = mContentsView.getParent();
      if (parent != null && parent instanceof ViewGroup) {
        ((ViewGroup)parent).removeView(mContentsView);
    }

    return mContentsView;
  }
}


끝~

[20130706]2013 Superrace 3전 - 인제스피디움 4편 - GTS / 또다른 레이스...

슈퍼레이스 3전 관람기 마지막편입니다.

사진 찍는건 쉬운데 편집해서 올리고, 커멘트 다는건 쉽지가 않네요...
(블로깅도 아무나 하는게 아니네요ㅋㅋㅋ)

결승으로 열린 경기중에는 첫 경기였던 GTS전..
(포스팅은 마지막에.. 이유는 정보가 없어서욤ㅡㅡㅋ)

자리 잡으러 다닌다고 여기 저기 다니다 관전 포인트를 찾자마자 바로 찍은거라
정신이 없었서 몇장 찍지도 못했습니다.

경기도 제대로 못보구요.. 그래서 그냥 사진만.. ^^




















서포트 레이스처럼 보인 GTS 전은 팜플렛에도 전혀 설명이 없어서
정보를 알려드릴수가 없네요... (이건 슈퍼레이스 측에서 신경 좀 써 주시지..)


이어서 또다른 레이싱... 경기 진행을 위한 레이싱입니다.


유난히 사고가 많았던 슈퍼6000&GT 경기가 끝나고
관람석 앞에서는 경기를 잘 해낸 선수들을 칭찬하는 화려한 시상식이 열리고 있었습니다.

같은시간 트랙에서는 아무도 알아주지 않지만 다음 경기를 위해 묵묵히
트랙을 정리해 주시는 고마운 분들이 계셨지요..

- 트랙에 뿌려진 오일을 체크하고

- 오일흡착제를 뿌리고, 빗자루로 쓸고,


- 송풍기를 이용해 흡착재를 치우고

- 페이스카에 정리 완료를 보고하고..


이 외에도 사진을 남기지는 못했지만,
트랙에 떨어진 파편을 치우시던 오피셜분과,
사고난 차량을 이동시키던 구난차량 운전자분...



그리고 하루종일 트랙 옆에서 레이싱의 진행을 위해 깃발을 흔들어 주신
관계자 여러분 모두 수고하셨습니다 (^^)(__)

[20130706]2013 Superrace 3전 - 인제스피디움 3편 - 벤투스 클래스 (크루즈 원메이크)

슈퍼레이스에서 개인적으로 가장 좋아하는 경기 벤투스전

내가 라프디를 타기 때문에 그런것도 있고, 개인적으로 아는 선수들이 많아서 인것도 있고,
아마추어 경기이다 보니 푸싱을 하다보면 실수도 많이 나와 순위가 잘 바뀌는 것이
무언가 사람이 한다는 느낌이 난다ㅋㅋ

드디어 경기가 시작되고 1 Lap

1, 2위가 지나가고 3위로 달리던 20번 김영민 선수(이름이...)
마지막 전 코너에서 언더가 나면서 트랙을 살짝 벗어났다가 얼른 돌아 나오는데,
......

아슬아슬하게 방호벽 끝에 걸려서..
서킷에 두개의 파편을 남기고..(크루즈 역시 튼튼함!!)
타이어가 터지면서 감속ㅠㅠ (그래도 한바퀴를 열심히 돌아 피트인)


어느새 폴포지션이었던 정성훈 선수를 김성훈 선수가 앞지르면서 1, 2위 순위 변동...
1번 김성훈 선수가 75번 정성훈 선수를 앞질러 1등으로!
그 뒤를 따르는 82번 김태호 선수
78번 유시원 선수
77번 정주섭 선수
31번 권보미선수 - 벤투스전의 유일한 여성 드라이버
99번 이기진 선수


잠시 후 1등을 달리던 김성훈 선수와 2등을 달리던 정성훈 선수와의 접촉이 살짝 있었고,
이 과정에서 김성훈 선수의 차량에 트러블이 발생한 듯 보이면서 슬로우다운..

조수석 문이 찌그러진 채로 1등으로 역전.. 이대로 쭉 골인까지!!!

첫 사고와 동일하게 마지막 전코너에서 언더 후 급 오버로 전환되면서 84번 구영주 선수도 아쉽게 리타이어..

그래도 다친곳은 없으신듯 안전하게 방호벽 뒤로 넘어 오셨어요

78번 유시원선수 10번 코너에서 소세지를 밟고 오버가 나면서 스핀....
할 뻔 했는데 곧바로 자세를 잡으시고 경기 속행! 대단해요~

이후는 순위 변동없이 경기 마감..
그래디팀 정성훈 - 김태호 선수의 원투 피니시
- 1, 2위 체커기를 받고 기분좋은 쿨다운 주행


수고하셨습니당~

- 회장님과 한컷
- 레이싱걸과 함께 한컷
- 가장 왼쪽 레이싱걸분 눈 감으셔서 한컷 더^^
- 빠질 수 없는 샴페인 세레모니~~ 잘 들어간다~~

- 잠시 후 실려온 84번 차량.. 마음이 아프네요 ㅠㅠ
- 사이드 미러가 부러지고, 타이어가 터지고.. 범퍼가...
   저만큼 부서졌지만 드라이버는 아무렇지도 않았으니 다행입니다.

다시한번 느끼지만 크루즈 정말 튼튼하구요.. 서킷 안전시설은 확실하네요!
공도에서 달리지 말고 서킷에서 달려요~~ ^^

[다자녀할인] 2자녀 이상 모든 공항 주차장 50% 할인받기 (둘 중 한명은 15세 이하)

다자녀 기준이 2명으로 완화되면서 자녀가 2명만 되어도 공영주차장 50%(지역에 따라 30%인 곳 도 있음) 할인이 가능하고, 전국의 공항주차장도 50% 할인이 가능하다. "다둥이카드" 나 "경기 I Plus 카드"...