반응형
블로그 이미지
개발자로서 현장에서 일하면서 새로 접하는 기술들이나 알게된 정보 등을 정리하기 위한 블로그입니다. 운 좋게 미국에서 큰 회사들의 프로젝트에서 컬설턴트로 일하고 있어서 새로운 기술들을 접할 기회가 많이 있습니다. 미국의 IT 프로젝트에서 사용되는 툴들에 대해 많은 분들과 정보를 공유하고 싶습니다.
솔웅

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함

카테고리


반응형

이번 주말은 안드로이드 동영상 강좌만 들으면서 보냈습니다.

이지스퍼블리싱 출판사에서 만든 Do it 안드로이드 앱 프로그래밍이란 책을 바탕으로 제공하는 동영상 강좌 입니다.


카페 주소는 http://cafe.naver.com/easyispub/945 이고

유투브 주소는 http://www.youtube.com/watch?v=Xb9300qU52Y&list=PL5C6E85EFC6E406EF 입니다.





금요일에 안드로이드 관련 업무를 하나 받았거든요.

기존에 개발된 앱을 보여주면서 안드로이드 태블릿 버전으로 POC (Proof of Concept)를 하나 만들어 보라고요. 수요일 오전까지요.


Android Native App Programming 을 잠시 떠나 있어서 예전에 했던것을 다시 떠올리기 위해 자료를 찾다가 이 동영상 강좌를 보게 됐습니다.


1편부터 10편까지 봤습니다. 개념정리에 아주 도움이 됐습니다.

안드로이드 앱 프로그래밍에 관심 있으신 분들께 적극 추천 합니다.


한국에 있다면 당장에 저 책 사서 활용했을 텐데 여기서는 그 책을 구할 수가 없어서... ;;


거의 토요일 하루 종일 봤는데요. 아마 10시간 가까이 봤을 것 같습니다.

오늘 (일요일)에는 법륜 스님이 이 먼 미국까지 오셔서 더군다나 제가 사는 지역까지 오셔서 즉문즉설을 해 주신다고 해서 거기 갈 계획입니다.


그 즉문즉설 다녀온 다음 화요일까지 빡세게 해서 POC를 위한 안드로이드 태블릿 앱을 하나 만들겁니다.


살짝 긴장되는데 기분 좋은 긴장이네요.


아래 글은 동영강강좌 10편을 들으면서 그냥 끄적거린 메모 입니다.

나중에 다시 기억 떠올리는데 도움이 될 것 같아서 이 블로그에 정리해 둡니다.



* 안드로이드 태블릿

허니컴 부터 시작 : 안드로이드 3.0 (Level 11,12,13)
아이스크림 샌드위치부터 phone + Tablet 시작 : 안드로이드 4.0 (Level 14,15)
현재는 젤리빈 : 안드로이드 4.1,4.2,4.3 (Level 16,17,18)
차후 KitKat 예정 : 안드로이드 4.4 (Level 19)

* 기억해야 할 것들


리스너 달기 : setOnClickListener
intent
화면 전환하기 : intent(intent.ACTION_VIEW,Uri.parse("웹사이트 주소 or tel:전화번호 etc."));

layout 에 있는 객체 불러오기 : (Button) findViewById(R.id.buttonname);

* Activity 간 전환
- layout 에 xml 하나 더 만듬
- Intent myIntent = new Intent(getApplicationContext(), NewActivity.class);
- startActivity(myIntent)
- Manifest 파일에 새로운 Activity 등록
=> 이러면 NewActivity.class 액티비티가 호출 됨

* 안드로이드 버전별 주요 기능

Proyo (2.2) : Flash, SD 카드에 설치, Backup API, Push Message 지원
GengerBread (2.3) : NFC (전자 결재), front Camera, 자이로스코프 센서, Internet 전화(SIP) 지원
HoneyComb (3.0) : Tablet UI, 화면 분할, HTTP Live Streming 지원
Icecream Sandwich (4.0) : 홀로그래픽 UI 와 버추얼 키, 얼굴인식과 음성인식 텍스트 입력, NFC 빔 공유와 WiFi 다이렉트 지원

* Structure of Android Project folder
/src
/Android <version>
/res
/gen
/assets
AndroidManifest.xml
default.properties


sdk/tools/hierarchyviewer.bat - 해당 액티비티의 구조도를 볼 수 있음

* apk 만들기
Android tools - export signed application - keystore 제공 - ....

* 화면구성 - View,Layout,Widget

* Widget - fill_parent, wrap_content etc.

* Layout 종류
LinearLayout : android:orientation = vertical, horizontal
Releative Layout
Frame Layout : 여러개의 View를 중첩시킨 후 각각의 뷰에 대해 보이거나 보이지 않게 하면 뷰 전환 가능. object.setVisibility(View.)
Table Layout
Scroll View

* setContentView(R.Layout.main);

* DDMS - LogCat 로그 보기

* startActivityForResult(intent,constant)
  - 다른 액티비티에서 데이터를 받기 위해 사용. (onActivityResult())
  setResult(code,resultIntent), resultIntent.putExtra("name","john");

* parent class 의 method override 하기
  - right mouse button - source - override/Implement method - select method

* Toast.makeText(context,text,duration);

* startActivity(), startService(), bindService(), broadcastIntent()

* ACTION_DIAL tel:1111111, ACTION_VIEW tel:1111, ACTION_EDIT content://contacts/people/2, ACTION_VIEW

content://contacts/people

* Implicit Intent : Intent myIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://m.yahoo.com");
* Explicit Intent : Intent myIntent = new Intent(getApplicationContext(),NewActivity.class);

* FLAG_ACTIVITY_SINGLE_TOP, FLAG_ACTIVITY_CLEAR_TOP, FLAG_ACTIVITY_NO_HISTORY

* Parcelable : 전달하는 데이터가 선언한 객체일 경우, bundle.getParcelable();




* Shared Preference : 간단한 정보 저장했다 불러올 때 사용. Cache 같은 것 (onPause())
  SharedPreference myPref = getSharedPreferences("myPref",Activity_MODE_WORLD_WRITEABLE);
  SharedPreferences.Editor myEditor = myPref.edit();
  myEditor.putString("name","Tom");
  myEditor.commit();
* onResume()
  SharedPreferences myPref = getSharedPreference("myPref",Activity.MODE_WORLD_WRITEABLE);
  if(myPref != null && myPref.contains("name")){
    String name = myPref.getString("name");
  }

* 로그 출력 : Log.d("tag","Message");

* Service : startService(), stopService()
            android:process=":remote" - Manifesto 에 별도의 프로세스를 선언할 수 있음 -> 앱이 Destroy 되도 계속 동작함

* Content Provider
  CONTENT_URI , content://... 로 접근., http:// 로 웹사이트 접근
  Cursor를 이용해 결과 데이터 확인 (Database)
  ContentResolver : getContentResolver(), query()

  ex) ContentResolver resolver = getContentResolver();
      resolver.query(uri,projection,selection,selectionArgs,sortOrder);
      Cursor cursor = resolver.query(ContactsContract.Contacts.CONTENT_URI,null,null.null.null);
      int count = cursor.getCount();
      Toast.makeText(this,"text",duration);
      => add permissions : READ_CONTACTS
      for(int i = 0; i<count; i++){
        cursor.moveToNext();
        String name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
        Toast.makeText(this,"name " + i + name,duration);
    }

* Manifest
  <activity>,<intent-filter><action android:name = ".... .MAIN"> <category android:name = "......LAUNCHER>,

<style ....>

* AlertDialog
  AlertDialog dialog = null;
  switch(id){
      case 1:
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setMessage("");
         builder.setPositiveButton("",new DialogInterface.OnClickListener())
        
        public void onClick(DialogInterface dialog, int which) {
            Toast.makeText.....
        }
        });
        builder.create();
  }

* AlertDialog 를 Activity 로 만들기 (로그인 화면??)
  AlertDialog가 떠야 되는 장소에 코딩
  setContentView(R.layout.dialog); // dialog.xml 만들기 (바탕화면,로그인 창 - 바탕화면은 이미지를 매번 바꿀 것)
  Manifest - <activity android:name="DialogActivity" android:theme="@android.style/Theme.Dialog"></activity>
  => AlertDialog box 디자인 하는 방법
 


반응형


반응형

이번 국정원의 이석기와 RO에 대해 내란음모죄를 적용하고 공개 수사하는 것과 관련... 진보 세력 내에서 이석기와 RO 에 대한 비판을 비판하는 의견이 있습니다.

옛날 반독재 시대때 대동단결을 외치는 모습을 아직도 보는 듯 한데요.


이런 의견이 오마이뉴스의 한 기사로 올라왔습니다.


'이석기'를 대하는 진보의 자세, 이게 최선인가

[주장] 세상을 바꾸고자 하는 당신의 양심은 어디로 향하는가


이석기를 비판하면 부활하는 수구 독재 세력에 놀아나는 것처럼 얘기들을 하는데..

저는 오히려 80년대의 저 대동단결의 수준에서 벗어나지 못하는 진보 세력들이 수구 독재 권력에 놀아나는 것이라고 생각합니다.


그 생각을 바탕으로 이 글에 대해 댓글을 달았는데요.


이 댓글을 제 블로그에 정리하고 싶네요.


나중에 제대로 정리해서 아티클을 하나 써서 주위분들과 같이 공유하고 토론해봤으면 좋겠다라는 생각이 들어서요.



  • 뿌네 2013-09-07 23:13:37

자 글쓴이가 무엇을 비판하는 건지 명확히 해 보겠습니다. 사상의 자유는 100% 지켜질 수 밖에 없습니다. 사람 머리속에 뭐가 있는지 알 수 없으니까요. 일반적으로 말할 때 사상의 자유에는 표현의 자유까지 포함 되는 겁니다. 표현의 자유는 100% 허용될 수는 없습니다. 바로 이 표현의 자유를 어디까지 허용할 것인가가 핵심입니다. 이석기 및 그 부류에게 국가 보안법의 고무 찬양죄 등이 적용될 수 있다는데는 이견이 없습니다. 하지만 이게 이슈가 되지는 않습니다. 이미 국가보안법은 많은 사람들에게 법으로서의 권위를 크게 인정받지 못하고 있습니다. 글쓴이가 말하는 진보는 거의 100% 이 국가보안법 폐지를 요구하는 사람들 일 겁니다.


  • 뿌네 2013-09-07 23:18:43

두번째는 내란 음모죄입니다. 이 내란 음모죄에 대해서는 글쓴이가 말하는 진보들이 모두들 말도 안되는 혐의이고 법원 판결에서는 이 죄목이 적용되지 않을 것이라고 말하고 있습니다. 일부 보수들조차 그렇게 얘기하고 있습니다. 글쓴이가 말하는 진보세력들은 대부분 국정원이 불법선거개입으로 위기에 처하자 이를 모면하기 위해 이 사건을 꺼내 들었다라고 비판하고 있습니다. 그런데 그 진보세력들이 뭘 비판하는 걸까요? 주사파들의 사상 자체를 비판하는것이 아닙니다. 그들이 수령론에 입각한 조직체계와 실천론이 민주화 이후 얻어낸 합법공간에서의 활동에서 진보세력에 방해가 됐기 때문에 그 점을 비판하는 겁니다. 그들의 행동이 불법이라 법적용을 해야 한다고 비판하는 것이 아니라 그들의 행동이 진보진영에서 올바르지 않았기 때문에


  • 뿌네 2013-09-07 23:23:57

세번째글 입니다. 그 올바르지 않은 실천을 비판하는 겁니다.

글쓴이는 왜 그걸 비판하는 거죠? 획일주의와 진영주의에 입각한 합리적이고 논리적이지 않은 비판이십니다.
지금의 실천은 독재 권력과 비합법, 반합법적으로 투쟁하던 시기와 다릅니다. 의회내에서 국민의 지지(투표로 표현되는)를 받기 위한 실천이 우리의 임무입니다. 그것이 선배들의 피로 얻은 공간을 더욱 더 풍부한 민주화의 공간으로 만들어 가야 할 우리의 의무입니다.

이 공간에서의 파트너는 보수입니다. 진보의 파트너는 보수입니다. 그리고 적대적인 관계에 있는 이들이 이 합법공간을 부정하는 권위주의 독재 세력과 구태를 못벗은 시대착오적인 세력입니다. 선배들의 피로 얻은 성과물을 흐트려뜨리는 부활하는 독재세력과 잔존하는 시대착오세력이 우리가 척결해야 할 대상입니다


  • 뿌네 2013-09-07 23:28:45


네번째 글입니다.
그러니까 글쓴이의 글은 시대착오적인 구시대의 관념에서 나온 잘못된 판단입니다. 그런 판단과 주장은 도리어 부활하는 독재세력들에게 정당성을 주는 자양분이 될 뿐입니다. 글쓴이가 말하는 진보세력은 이석기 부류의 인간들에게 국가보안법을 적용하거나 내란음모죄를 적용해야 한다고 주장하거나 그런 주장에 동조하지 않습니다.

진보세력은 선배들의 민주화를 위한 피로 만들어낸 성과물인 이 공간을 다시 해치려는 독재 부활 세력과 일부 운동권의 구시대적인 실천에 대한 비판을 하는 것입니다. 부디 시대착오적인 관념에서 벗어나서 올바른 판단을 하는 진정한 진보의 입장을 계속 성장시켜 나가는 글쓴이가 되기를 바랍니다.
감사합니다.


  • 소도리 2013-09-07 23:38:18


제가 이해하기로는... 이석기에대한 비판은 모두 인정한다고 하더라도 작금의 본질은 이석기에 있는것이 아니라 수구세력들의 진보세력 죽이기에 나름 현명한 사람들 이라고 생각했던 사람들도 꼬랑지를 내리는데 그 모습에 피실피실 웃을 수구공작세력들을 상상하니 등골이 오싹해진다~~~ 라는걸로 이해 됩니다만...


  • 뿌네 2013-09-08 01:43:11

제 이해로도 수구세력들의 합리를 추구하는 세력들을 무력화 시키는 과정이 이번일의 본질이라고 생각합니다. 저는 이 수구세력에 선배들의 피로 만든 합법적인 공간을 무시하는 수구 부패 세력과 구시대 조직관과 실천관을 가지고 있는 운동권내의 기득권인 수구 운동권 세력이 다 포함 됩니다. 이 둘은 서로가 존재의 전제 조건이 되는 세력들 입니다. 수구 기득권 세력들의 존재를 위협하는 것은 합리적인 상식의 공간 입니다. 이 공간을 확보하려고 선배들이 피를 흘린 겁니다. 이 공간은 합리적인 진보와 합리적인 보수가 같이 지켜야 합니다. 진보세력들이 그 공간을 지키지 못하고 공간 밖에 있는 수구 부패 세력의 부활이 점점 손 쉬워져서 수구공작세력들이 피실피실 웃는 것 아닐까요? 합리적인 상식과 함께 민주주의를 성장시킵시다.



  • 뿌네 2013-09-08 02:40:08

저는 수구세력들의 진보세력 죽이기에 나름 현명한 사람들이라고 생각했던 사람들이 꼬랑지를 내린다는 표현은 별로 동의가 되지 않습니다.

현실을 진지하게 고민하지 않고 옛날의 타성에만 젖어서 덜 선명하게 보일까봐 과거 이미 정해진 틀에 현실을 그대로 끼워 맞춰서 비판하는 성의 없는 진보들의 자세가 비겁해 보일 뿐입니다.


-----------------------------


facebook에서 이어진 논의 계속


Hee Kim 음.. 제 생각으로는, 이건 어느 문제에 집중하느냐 하는 '우선순위'의 문제이고 언제 무엇을 하느냐 하는 '타이밍'의 문제이지, 진보의 운동방식에 대한 반성을 아예 하지말자는 이야기는 아닌 듯 한데요..


Changsoo Park 이 건 꾸준한 실천의 문제라고 생각합니다. 타이밍의 문제라고 보는 자세는 너무 단기적인 시각에 매몰돼 있는 자세가 아닌가 싶네요. 깊고 진지한 고민 없이 가벼운 전술만 판치는 그런 자세들이 바로 외부 요건에 쉽게 휘둘리도록 만드는 자세 아닐까요?


Hee Kim 아마도 현시점을 반여권의 동력이 완전히 죽을 수도 있는 터닝 포인트로 보느냐 아니냐 하는 위기감 판단의 차이일지도 모르겠네요.


Hee Kim 노대통령이 진짜 뭘 잘못해서 그 수모와 죽음까지 당하신 게 아니니, 이젠 일단 저들의 프레임을 깨는 것이 먼저가 아닐까 하는..


Changsoo Park 민 주화 운동으로 어떤 큰 틀은 바꿨습니다. 외형적인 부분이요. 선배들의 선도적인 투쟁과 희생의 도움이 컸더는 것은 누구도 부정할 수 없을 겁니다.... 내용적이고 근본적인 부분들은 사람들이랑 같이 채워 나가야 한다고 봅니다. 합리적인 상식을 가진 사람들이요. 보수이던 진보이던..말씀하신 그 프레임을 깨는 것도 그 사람들이랑 같이 해야 한다고 봅니다. 사람사는세상을 만들려면 그 세상에 같이 살아야 할 사람들을 주체로 서게 만들어야 하지 않을까요? 지금의 실천에서 희수님에게 합리적인 보수는 어디에 있나요? 그 사람들과 함께 사람사는세상을 만드는 일을 해야 하지 않을까 하는.... 수구친일부패 세력에 거의 흡수되서 그 존재감도 없는 합리적인 보수에게도 우리가 있다는 것을 알려야 하지 않을까요? 그들에게 우리가 믿음의 존재로 다가가야 하지 않을까요? 그런 생각을 진지하게 해 보자고 많은 사람들에게 얘기하고 싶은게 제 마음 입니다.


Hee Kim 동의합니다. 함께 고민해봐요 (^^).


Changsoo Park 예.. 그래요.. 좀 더 덧붙이고 싶은건.. 그 프레임을 깨는건 나나 어느 일부에 의해서가 아니라 프레임을 깨고 같이 세상을 살아갈 사람들과 함께해야 의미가 있다는 것...아니면 계속 반복될 뿐일 것이라는 것을...

반응형

안드로이드 개발 환경 구축하기

2013. 9. 6. 21:32 | Posted by 솔웅


반응형

안드로이드 개발 환경 구축



오랜만에 다시 안드로이드 애플리케이션 개발을 위한 글을 올리기로 했습니다.


지금 하는 TDD 일을 계속 할 지 아니면 Android App 개발 팀으로 옮길지 아직 모르는데요.

다시 Android 개발 관련해서 이야기가 나오니까 준비도 하고 싶고 또 개발도 하고 싶고 하네요.


당분간 Native Android App 개발 관련해서 공부를 할 것 같습니다.


우선 개발 환경부터 구축을 해 보겠습니다.


아래 싸이트로 가서 Android SDK 툴을 다운 받으세요.


http://developer.android.com/sdk/index.html




32bit 64bit 둘 중 하나 선택해서 다운 받으시면 됩니다.


다운 다 받은 후 적당한 곳에 압축을 풀어 주세요.




압축 푼 다음에 SDK Manager 실행을 하세요.




저는 모든 것 다 선택하고 Install Package 했어요. 그거 누르면 License 에 동의하겠느냐고 물어오는데 동의 한다고 한 다음에 Install 버튼 누르시면 됩니다.




Install 이 다 됐으면 이제 eclips 를 실행하시면 됩니다.



이제 HelloWorld 앱을 하나 만들어 보겠습니다.




New - New Android Application을 선택하시고 Application Name 에는 아무 이름이나 넣으세요. 그리고 Next 버튼을 누르세요.

다음 나오는 화면에서도 계속 Next 버튼을 누르세요.


Configure Project - Next
Configure Launcher Icon - Next
Create Activity - Next




그러면 이와 같이 애플리케이션이 만들어 집니다.


이 앱은 화면에 HelloWorld 를 display 해 주는 앱입니다.


이제 이 앱을 한번 실행해 봐야 할 텐데요.

에뮬레이션을 실행하도록 하겠습니다.




우선 에뮬레이터인 Android Vertual Device를 만들어야 하는데요.

메뉴바 밑에 있는 아이콘들 중 핸드폰 모양의 아이콘을 클릭하시면 위 화면이 나옵니다.

여기서 New를 누르시고 적당한 모델을 선택하시면 됩니다.


그리고 나서 Cntl-11 을 누르거나 Run을 누르시면 되는데요.


저는 Failed to allocate memory: 8 이런 메세지가 뜨네요.


이런 경우 해당 avd 폴더로 가서 config.ini 파일을 열어보세요.



이 파일은 C:\Users\본인\.android\avd\test.avd 경로에 있습니다.




빨간 줄 있는 부분이 1024MB가 아니라 1024로 돼 있을 겁니다.

만역 그렇다면 위에 보이는 것 처럼 고쳐 주세요.


그리고 나서 Run 을 실행하시면 됩니다.


에뮬레이터로 하면 시간이 조금 걸리는데요.

실제 개발 하실 때는 에뮬레이터 보다는 디바이스로 실행시켜서 테스트 해 보시는게 좋을 겁니다.





반응형