##c%% 이세상 소풍 끝내는 날
 가서 아름다웠더라고 말하리라.##e%%1

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

##s%%0##t%%귀천##a%%천상병##c%%나 하늘로 돌아가리라
 새벽빛 와 닿으면 스러지는
 이슬 더불어 손잡고
 
 나 하늘로 돌아가리라
 노을빛 함께 단둘이서
 기슭에서 놀다가
 구름 손짓하면은
 
 나 하늘로 돌아가리라
 아름다운##n%%1

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

##c%%끄러움 가득 머금은 벚꽃에 
봄 날에 그렇게 빠져들었나 보다
봄에 빠진 우리들이 하나 둘씩 
분홍색 부끄러움 한 잎씩 떨어트려
저 벚나무를 피워냈나 보다.##e%%1

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

##s%%1##t%%벛꽃은 그렇게 피더라##a%%김인성##c%%봄 바람 산뜻 불어오는 길목에 
벚꽃이 순하게 피어있다.
무엇이 그렇게 부끄러운지 
붉게 물들인 채로
하루는 꽃 내음에
하루는 나비의 날개짓에
하루는 못 다핀 한 떨기의 꽃에
부##n%%1

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

##c%%지 않는다

슬픈 맹약에 서사시도 아닌. 
서글픈 매일의 서두름에
오감의 황홀함이 악세서리처럼
몸에 둘린다.
슬픈 기억만이 전설에 남는것은 아니다.
독특하고 흔하지 않은 삶의 영혼이 
흔한 삶을 무르익게 한다.

##e%%1

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

##s%%1##t%%추억##a%%k##c%%붉게 물든 서녁에 비친 바다에 
물소리의 기억밖에 나지 않는다.
수면 위에 반짝이는 향기가.
마치 샛별의 숨소리같다.

별은 또 다시 바다를 비춰 
운명을 비추려는 것일까
검은 하늘의 별들이 사라지##n%%1

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

##c%%관처럼 술잔을 기운다.

가슴 한켠 낡은 사랑은

빗방울 되어 기다림에 스민다.

시리도록 아름다웠던 기억도

일상이 되어버린 슬픔도

어제처럼 오늘도...

아무 일도 아닌 것처럼

빗물 속에 숨는다.

##e%%1

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

##c%%진 화장을 지운다.

시간이 지나면 괜찮아 질 거라는 말

그런 거짓말 세상에 없더라...

어제처럼 오늘도

아무 일도 아닌 것처럼

흐린 거울 속에 숨는다.

바보 같은 남자...

오래된 사진을 지운다.

습##n%%1

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

##s%%1##t%%독백##a%%곽명길##c%%제목 : 독백                   

바보 같은 여자...

화장을 지운다.

즐거웠던 기억도, 행복했던 기억도...

언제나 기다려 줄꺼라 믿었던 미소도...

습관처럼 얼룩##n%%1

Posted by 세상을 살아가는 사람
,
안드로이드에서 디자인 도구를 사용하는 것이 강화되고 있다. 예전에는 개발자가 직접 텍스트를 작성하여 UI 작업을 하였는데, 요즘은 디자인 도구를 사용하여 UI를 만들수 있게 되었다. 따라서 기존에 널리 사용하던 "리니어 레이아웃", "상대 레이아웃"에 부가하여 "제약 레이아웃"이 추가 되었다. 이 레이아웃은 부모 레이아웃이나 인접 뷰와의 상관관계를 이용한다는 점에서 상대 레이아웃과 유사하지만 가이드라인이나 바이어스, 앵커 포인트, 핸들을 이용하여 디자인 차원에서 레이아웃을 정의한다는 점이 차이가 있다.
ᆞ제약 표현 보이기/감추기(?)
ᆞ앵커 포인트 : 뷰의 위치관계를 기준(상대) 뷰와의 상대 위치를 지정하기 위해, 자신의 뷰와 상대뷰와의 관계를 선으로 연결하여 표현
ᆞ가이드 라인 : 수평, 수직으로 정렬을 위해 기준을 제공
ᆞ바이어스 : 수평이나 수직 위치를 지정하기 위하여, 좌우 바이어스를 변경
ᆞ핸들 : 뷰의 크기를 조절
Posted by 세상을 살아가는 사람
,

구글 맵과 Runtime 퍼미션

2017. 4. 12. 10:09

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

구글 플레이 스토어에서 운영 중인 "클래식 음악 -600곡"의 2017년 1월 1달 동안 사용자들이 이용한 Top 5 (Play 및 다운로드)

Play Top 5

[1] 아베 마리아, 구노

[2] 전주곡 1권 중에서 No.8 La Fille aux Cheveux de Lin (arr. Hartmann), 드뷔시

[3] "카벨레리아 르스티카나" Intermezzo sinfonico, 마스카니

[4] 바흐 관현악 모음곡 3번 D장조 BWV 1068 II. Air, 바흐

[5] 클라리넷 5중주 A장조 KV 581 II. Larghetto, 모차르트

Download Top 5

[1] 피아노 소나타 14번 C sharp단조 op. 27-2 "월광" I. Adagio sostenuto, 베토벤

[2] 트로이메라이 - 어린이 정경 op. 15-7 (실내악 편곡), 슈만

[3] 자장가 D flat장조 op. 57, 쇼팽

[4] 동물의 사육제 Le Cygne, 생상스

[5] 타이스의 명상곡 (2010~2011년 시즌, 갈라쇼), 마스네


클래식음악 - 600곡 https://play.google.com/store/apps/details?id=com.talanton.music.player

Posted by 세상을 살아가는 사람
,

Android studio를 이용해 폰갭 앱을 개발하기 위한 방법을 기술해 본다. (윈도우 7 OS를 기준)

1. node.js를 설치

  - https://nodejs.org/en/ 사이트에서 최신 버전의 Node.js를 다운로드 받는다.

    (작성 시점에서 v6.9.5로 node-v6.9.5-x64.msi 파일)

  - 다운로드 받은 파일을 실행하여 설치한다.

  - 컴퓨터를 다시 시작한다.

  - cmd창을 열고, 다음과 같이 입력하여 phonegap을 설치한다.

    c:> npm install -g phonegap

2. ant 설치

  - http://ant.apache.org 사이트에서 download 사이트로 이동

    (ant.apache.org/bindownload.cgi)

  - 1.10.1 zip archive 파일을 다운로드 (apache-ant-1.10.1-bin.zip 파일)

  - 적당한 디렉토리로 이동 후 압축을 푼다.

  - 환경변수 PATH에 다음을 추가한다.

    + ANT_HOME : ant가 설치된 디렉토리 경로

    + ANDROID_PLATFORM : android sdk에 있는 platform-tools 디렉토리 경로

    + ANDROID_TOOL : android sdk에 있는 tools 디렉토리 경로

    + PATH에  %ANT_HOME%\bin;%ANDROID_PLATFORM%;%ANDROID_TOOL%; 추가

  - cmd 창에서 설치하고자 하는 디렉토리로 이동한 후 다음 명령어를 수행하여 phonegap을 설치

    + C:> phonegap create my-app[경로] com.example.myapp[패키지명] MyApp[프로젝트명]

    + C:> cd my-app

    + C:> phonegap platform add android    // 오랜 시간이 소요

  - Android Studio에서 phonegap이 적용된 프로젝트 생성

    + Android Studio를 시작한다.

    + 위에서 생성한 android platform 프로젝트는 Eclipse 환경의 프로젝트 구조이므로 Android Studio 버전으로 변환한다.

    + 위에서 설치한 디렉토리 my-app의 platforms/android 디렉토리를 기존의 Eclipse ADT로 읽기를 수행하여 import 한다.

    + 프로젝트를 build하고 Run As하여 휴대폰에 앱을 설치하면 PhoneGap 앱이 수행된다.

Posted by 세상을 살아가는 사람
,

오늘은 안드로이드에서 웹앱을 만드는 방법에 대하여 기술한다.

참고 : Do it 안드로이드 앱 프로그래밍 3장 웹브라우저 사용하기

예제 파일 : SampleWebView

안드로이드 스튜디오에서 "Import project(Eclipse ADT, Gradle, etc..)" 메뉴를 사용하여 위의 예제 파일을 import 한다. 그러면 안드로이드 스튜디오 버전으로 변경된 프로젝트 SampleWebView1이 생긴다.

이 예제는 기본적으로 휴대폰에 내장된 서버 기능을 가지고 있다.

그래서 assets 디렉토리에 sample.html과 face_angry.png, face_normal.png 파일이 있다.

안드로이드 휴대폰을 사용하는 사용자는 보통 이동통신 요금을 정액제를 사용한다.

그래서 자신의 휴대폰 요금에 맞게 사용할 수 있는 패킷 데이터양이 제한이 있다.

외부의 서버에 접속을 하면 휴대폰내의 앱에서 서버에 접속하여 html, css, js, images 파일들을 통신을 통하여 가지고 와서 동작을 해야 한다. 이처럼 외부 서버를 이용하기 위해서는 서버와의 통신이 필요한 것이다.

그러나 이러한 통신의 양을 줄이는 방법이 외부 서버를 사용하지 않고 자신의 휴대폰에 서버를 구측한다면 통신의 필요성이 줄어들게 되고, 데이터 사용량이 줄어든다.

이 예제에서는 이와 같이 서버 기능을 자신의 휴대폰에 둠으로써 인터넷 사용으로 인한 데이터 사용량의 부담을 완화한 것이다.

그러나 이러한 방법은 내 휴대폰에 앱을 설치하는 순간에 서버의 기능이 고정되어 버린다. 왜냐 하면 html, css, js, images 등 모든 서버의 기능을 담당하는 것이 앱을 설치하는 순간에 다운로드되어 버리기 때문이다.

따라서 웹의 장점인 Dynamic한 부분이 제약이 생긴다. 즉, 새로운 기능을 업그레이드 하려면, 새로운 앱의 버전을 마켓에 등록을 하고 사용자가 다운로딩을 해야 하기 때문이다.

외부 서서를 사용한다면 통신에 대한 부담은 있지만 기능의 확장이나 변경은 용이하다.

그러므로 둘간의 적정한 tradeoff가 필요한다.


SampleWebView1의 동작을 기술하면 아래와 같다.

기본적으로 자신의 휴대폰에 있는 sample.html이 동작한다.

화면의 사진을 클릭하면 사진이 변경됨을 확인할 수 있다.

동작을 자세히 기술하면, 사진을 클릭하면 HTML의 <a>가 동작하여 onClick="window.sample.clickOnFace()" 함수가 동작한다. 그래서 안드로이드 MainActivity.java에 있는 clickOnFace() 메서드가 불리게 된다.

이부분은 안드로이드와 웹의 연동을 하는 부분이다.

사진을 변경하도록 이미지를 눌렀을 때, 안드로이드의 버튼의 글자를 변경해주기 위해서 웹과 앱의 연동을 해주는 것이다.

또한 안드로이드에서 Javascript와 연동하기 위하여 webView.loadUrl(javascript:changeFace('" + myNumber + "')"); 부분이 읶는 것이다. 이것을 통해 안드로이드에서 넘겨준 글자를 message에 보여주고, 사진을 변경하는 것이다.

- 웹에서 안드로이드와 연동

  + <a onClick="window.sample.clickOnFace()">  // 웹에서 안드로이드를 부르는 부분

  + public void clickOnFace() {    // 안드로이드에서 동작하는 부분

       mHandler.post(new Runnable() {

         public void run() {

           loadBtn.setText("클릭수 열기");

         }

      }

    }

- 안드로이드에서 웹으로 연동하는 부분

  + 안드로이드에서 웹으로 시작하는 부분

    String myNumber = "abcd:;    // 안드로이드에서 웹으로 넘겨주는 값;

    webView.loadUrl("javascript:changeFace('" + myNumber + "')");    // 안드로이드에서 웹의 javascript를 호출하는 부분

  + 웹의 javascript에서 동작하는 부분

    function changeFace(input) {

      document.getElementById("face").src = "face_angry.png";    // 이미지를 변경

      document.getElementById("message").innerHTML = input;  // 안드로이드에서 수신한 글자를 보여줌

    }

자신의 PC에 서버를 구축하여 URL 주소를 입력하면 휴대폰에 있는 서버로 접속하는 것이 아니라 서버로 접속을 하게된다. 그러면 서버의 프로그램을 다양하게 변경할 수 있으며, 계속 새로운 앱의 다운로드 없이 서버의 프로그램의 변경으로 새로운 콘텐츠를 제공할 수 있다.


'앱개발' 카테고리의 다른 글

클래식 음악 - 600곡 : top 5  (0) 2017.02.25
Android Studio에서 phonegap 설치 방법  (0) 2017.02.08
Android Stuido Layout Editor와 AVD 한글처리  (0) 2017.01.31
안드로이드 교육 목차  (0) 2017.01.25
Android Studio 2.2.3 설치  (0) 2017.01.25
Posted by 세상을 살아가는 사람
,

해결이 잘 안된다.

한글 keyboard apk 파일 HangulKeyboard.apk와 구글에서 제공하는 google-....apk를 AVD에 설치 하였는데 한글 키보드 처리가 잘 안된다.

또한 UTF-8로 한글 처리를 하려고 하였는데

처음에는 layout editor도 한글이 깨지더니

AVD는 한글이 깨져서 잘 나온적이 없다.

Layout editor는 android studio를 설치한 디렉토리의 plugins/android/lib/layoutlib/data/fonts.xml 파일을 수정해 주니 한글이 잘 보였다. 한글을 지원하는 font가 NanumGothic.ttf가 있어서 그것으로 변경을 해 주면 된다.

그런데 AVD는 아예 SDK를 다운로드 할 때, system font가 고정되고 한글을 지원하는 font가 없어 아예 처리를 할 수 없다. 삽질을 하면서 구글이 한국을 얼마나 무시하면 중국, 일본은 font를 지원하면서... 아니 다른 소국도 지원하던데... 우리나라를 뭘로 아는지???

아니 구글 코리아에 다니는 인간도 많던데, 그런 말 한마디 못하고 월급만 받고 다니는지???

아무튼 실망이다.

실제 휴대폰은 한글지원이 잘되기 때문에 AVD 보다는 실제 단말에서 시험을 해야 한다. 하긴 요즘은 단말이 워낙 좋아서...


- AVD에서 한글지원 : 시스템 이미지를 다시 만들어야... (지원하는 font를 사용해서...)

- Layout Editor : 한글을 지원하는 font로 변경

  -> NanumGothic.ttf(기존 것 사용)나 NotoSansCJK-Regular.ttc(인터넷에서 신규 다운로드) 폰트를 사용

Posted by 세상을 살아가는 사람
,

이 글은 안드로이드 교육시 다루어야 할 사항을 목차로 정리한 것이다.

1. 안드로이드 개요

2. 개발환경 설정

2.1 Android Studio

2.2 디버깅

2.3 Android 도구창

2.4 DDMS

2.5 로그

2.6 ADB

3. 처음으로 만들어보는 안드로이드 프로젝트

4. 뷰

5. 레이아웃

6. 출력 : 토스트, 비트음, 진동

7. 퍼미션

8. 이벤트

9. 메뉴

10. 기본 위젯

11. 어댑터뷰

12. 고급 위젯

13. 커스텀 위젯

14. 리소스 관리

15. 대화상자

16. 액티비티

17. 프로세스

18. 스레드

19. 프레그먼트

20. 액션바

21. 그리기

22. 에니메이션

23. 파일

24. 데이터베이스

25. Content Provider

26. 클립보드

27. 네트워크

28. 백그라운드

29. 서비스

30. 제스처

31. 맵서비스

32. 멀티미디어

33. 센서

34. 시스템 설정

35. 전화

36. 앱 위젯

37. 마켓등록

Posted by 세상을 살아가는 사람
,

지난 글에서는 Web 개발환경을 설정하였다. 이번 글에서는 안드로이드 개발환경을 설정하고자 한다.

이를 위해 Android Studio 2.2.3을 설치한다.


1. https://developer.android.com/studio/install.html 사이트에서 Android Studio 최신 버전을 다운로드 한다.

2. 다운로드 받은 파일 명은 android-studio-bundle-145.3537739-windows.exe로 설치할 디렉토리로 이동시킨 후 실행한다. 설치할 디렉토리 이름은 특수문자나 space 등이 있으면 안된다.

  - studio와 sdk가 설치될 디렉토리를 지정하여 설치한다.

3. Android Studio 실행

  - 이전에 설정된 것이 없는 것으로 새로 설정하도록 선택

  - Android SDK의 위치를 2.번에서 지정해준 디렉토리 위치로 다시 설정 (Custom 설정 선택)

    + Default로 C:의 이상한 곳으로 되어 있어 나중에 불편하므로 쉽게 접근이 가능한 위치로 지정한다.

  - 기존에 사용했던 Studio Project를 import 한다.

  - 처음 사용하는 분은 새로운 프로젝트를 생성한다.

4. SDK Manager 실행

  - Android Extra 중에 필요한 것을 다운로드

  - 필요한 SDK를 다운로드 : 다른(같이 포함된) 모듈에서 필요한 SDK를 다운로드

5. 프로젝트 재빌드

  - Build>Clean Project를 선택하면 다시 Studio가 자동으로 빌드를 한다. 이상이 없도록 에러가 나오는 것을 해결해 준다.

  - 자신이 사용하는 휴대폰의 USB Driver를 설치

  - 필요하면 PC를 재시작 해준다. USB Driver를 새로 설치할 경우, 재기동을 해주어야 인식하는 경우가 있다.

  - PC에서 자동으로 휴대폰을 인식하여 적당한 USB 드라이버를 설치해 준다. 휴대폰의 기종이 여러 가지 이므로 맞는 USB 드라이버를 컴퓨터가 자동으로 새로 다운로드 해준다.

  - USB 드라이버가 잘 설치되면, 휴대폰을 컴퓨터에 연결 시, Debugger를 실행할 지 묻는 창이 나타난다. (Studio나 Eclipse를 사용할 때 ADB가 구동되면서...)

  - 앱을 휴대폰에 설치한다. Studio에서 Run을 수행

  - 이때 휴대폰에 맞는 안드로이드 SDK를 설치하도록 묻는 창이 나타나는 경우 SDK를 설치해 준다.




Posted by 세상을 살아가는 사람
,
헤더의 navbar에 custom icon을 적용하는 방법을 기술한다. 이것을 일반적인 버튼에 적용하여도 된다.

<body onload="init();" id="stage" class="theme">
  <p><span id="message">Custom Icon.</span></p>
  <div data-role="navbar" class="custom_icon">
    <ul>
      <li><a href="#" id="icon1" data-icon="custom">Alarm</a></li>
      <li><a href="#" id="icon2" data-icon="custom">Call</a></li>
      <li><a href="#" id="icon3" data-icon="custom">Home</a></li>
      <li><a href="#" id="icon4" data-icon="custom">Message</a></li>
    </ul>
  </div>
</body>

CSS를 이용하여 버튼에 아이콘 이미지를 적용한다. 위치와 크기를 조절해 준다.
<style type="text/css">
#icon1 .ui-icon {
  background: url(images/icon_alarm.png) 0% -15% no-repeat;
  background-size: 34px 34px;
}
#icon2 .ui-icon {
  background: url(images/icon_call.png) 0% -15% no-repeat;
  background-size: 34px 34px;
}
#icon3 .ui-icon {
  background: url(images/icon_home.png) 0% -15% no-repeat;
  background-size: 34px 34px;
}
#icon4 .ui-icon {
  background: url(images/icon_message.png) 0% -15% no-repeat;
  background-size: 34px 34px;
}
.custom_icon .ui-btn .ui-icon {
  width: 100%; height: 100%;
  margin-left: -17px;
}
</style>


'앱개발' 카테고리의 다른 글

Android Stuido Layout Editor와 AVD 한글처리  (0) 2017.01.31
안드로이드 교육 목차  (0) 2017.01.25
Android Studio 2.2.3 설치  (0) 2017.01.25
PhoneGap에 광고 추가하기  (0) 2015.07.18
스마트폰의 resolution 정리  (0) 2015.07.18
Posted by 세상을 살아가는 사람
,