위 이미지는 현재 구글 블로그에 들어가면 볼 수 있습니다.
http://googlekoreablog.blogspot.com/2010/07/blog-post_08.html
정확한 날짜는 안적혀있지만 드디어 정말 얼마 남지 않았나 봅니다.

설렙니다. ㅋㅋ

아.. 얼른 앱들을 만들어야 할텐데..


좋은 아이디어 공모해요.

Posted by 소혼
 

이제 안드로이드 마켓에서 유료 애플리케이션 구매할 수 있습니다! - Google 한국 블로그
게시자: Lois Kim (정김경숙), 게시일: 2010. 7. 8. 오후 3:52

작성일: 2010년 7월 9일 금요일
오늘부터 안드로이드 마켓에서 유료 애플리케이션 구매가 가능합니다.

여러분은 이제 처음 결제할 때만 카드 정보 및 개인 정보를 입력하고, 이후에는 별도의 정보 입력 없이 바로 결제가 가능해 편리하게 유료 안드로이드 애플리케이션을 다운받을 수 있습니다. 또한 안드로이드 마켓 “추천 애플리케이션”에 한국 애플리케이션이 소개되어 국내 사용자분들이 더욱 쉽게 유용한 앱을 즐길 수 있게 되었습니다.
안드로이드 마켓은 전세계적으로 하루 16만 명씩 사용자가 늘고 있는 안드로이드 탑재폰에서 활용 가능한 애플리케이션을 쉽게 올리고 다운로드 받을 수 있는 개방형 온라인 장터입니다. 현재 약 6만5천 개 이상의 애플리케이션이 이용 가능하며, 매 월 그 수가 기하급수적으로 증가하고 있습니다. 지난 5월 안드로이드 마켓의 애플리케이션 수가 5만 개였다는 점을 감안하면 한 달 사이에 애플리케이션 수가 무려 30% 증가하였습니다.
이번 결정은 국내 사용자들이 안드로이드 마켓에 있는 모든 애플리케이션을 원활하게 즐길 수 있게 하기 위한 노력의 일환이며, 지금은 시작이지만 앞으로도 사용자들이 불편함을 느끼지 않도록 계속해서 개선시켜 나갈 예정입니다.
국내 사용자들께서 유료 애플리케이션을 구매할 수 있게 됨에 따라 안드로이드 마켓에서 더욱 다양한 애플리케이션을 경험할 수 있게 되기를 바랍니다!

작성자: 구글코리아 블로그 운영팀


인터넷에 이런 글이 돌기 시작했다.
구글 코리아 블로그에 가입도 하고 피드도 받았다.

아 드디어 2주 3주씩 걸리는 TStore의 한계를 벗어날 수 있을 지

근데 아직 준비가 OTL..

국내안드로이드 시장이 빨리 성장하려면 이 얼른 결제 시장이 열려야 한다.
정부 기관이 얼른 정신차리고 결제와 게임 해결해줬으면 좋겠다.

출처 : http://draco.pe.kr/archives/2007
Posted by 소혼
김선운님에게 도움이 될까 싶어 정리해봅니다.

안드로이드는 sqlite3을 쓰는데 sqlite3이 리눅스에서는 정말 사용하기 편하지만 윈도우에서 사용하려면 빌드까지 해야 하는 꽤 불편할 수 있습니다.

하지만 안드로이드 에뮬레이터 안에는 이미 sqlite가 있습니다.
이것을 활용하여 내가 만든 DB가 어떤 상태에 있는지 확인해 보고자 합니다.

1. 먼저 콘솔 창을 하나 띄웁니다.
시작 => 실행(R)을 클릭하고 cmd를 입력

2. 안드로이드 SDK가 있는 경로로 이동합니다.
   (저의 경우 h:\project\android2\android-sdk-windows\tools를 사용합니다.)
> cd h:\project\android2\android-sdk-windows\tools
> h:

3. adb 쉘에 접속합니다.
h:\project\android2\android-sdk-windows\tools> adb shell
#

4. 자신이 만든 프로젝트가 있는 곳으로 이동합니다.
이 때 리눅스 명령어들을 사용해야 합니다. 몇가지 정도만 알고 쓰시면 유용합니다.
 ls : 현재 폴더의 파일, 서브 폴더 목록을 출력합니다.
      ls는 권한이 없는 곳에서 수행하면 Permission denied 에러가 날 수 있습니다.
cd [폴더명] : 폴더명으로 이동합니다.
pwd : 현재 폴더 위치를 출력합니다.

경로는 /data/data/패키지명 입니다.
이전 DB 예제에서는 이 아래에 databases라는 폴더를 하나 더 만들었으므로 한단계 더 아래에 파일이 존재합니다.

# cd /data/data/com.sohon.sample
# ls
ls
play_seq.dat
shared_prefs
databases
lib
#

5. sqlite를 통해 데이터베이스 파일을 엽니다.
# sqlite3 databases/lecture.db
sqlite3 databases
SQLite version 3.5.9
Enter ".help" for instructions
sqlite>

6. sql을 통해 정보를 확인합니다.
sqlite> select * from sqlite_master;
select * from sqlite_master;
table|lecture|lecture|2|CREATE TABLE lecture (_id integer primary key, eng_sente
... 기타 테이블 커럼 정보들)
sqlite>

허접한 글이지만, 도움이 되셨다면 아래 손가락 꾹 눌러주세요.
Posted by 소혼
출처 : http://psjin14.tistory.com/entry/AndroidGallery%EC%97%90-Image-%EC%B6%94%EA%B0%80-%ED%95%98%EA%B8%B0
ps> 예섬아, 이렇게 해도 되는 설정을 해놓고 있단다. CCL도 꼭 신경써서 보도록 하렴
약간의 코멘트 덧붙임
ps2> 궁금한 내용 있으시면 질문 주시면 답변 드립니다.

아래는 예섬이 장장 2시간 동안 적은 글 ㅋㅋ
근데 글자가 너무 많아서 읽기가 싫어진다 ;;
역시 난 소스 보는게 좋은 것 같다.

내가 Gallery에서 필요한 기능은 다음과 같다.
 Gallery 요구사항
  (1) Gallery에 내가 원하는 Image 추가하기
  (2) 사용자의 선택으로 인해, Gallery 중앙에 최정적으로 표시된 Image가 무엇인지 알기
    Ex>  Finger Flick을 하는 경우, Flick이 완료 될 때 화면에 선택된 Image 알기

이 2가지 요구사항을 만족할 수 있는 예제를 인터넷에서 찾았으니, 찾을 수가 없었다.

대신, Android Developer Guide에서 Hello, Gallery라는 예제를 찾았으나 !!

이런.. 그대로 작성하면, Error가 나거나 System이 오동작을 한다. ㅜ.ㅜ
  * Hello, Gallery url : http://developer.android.com/guide/tutorials/views/hello-gallery.html

몇 가지 시행착오 후,  요구사항을 만족할 수 있는 Android Code를 작성하였다.
 요구사항을 만족하여, 실행된 화면
 
  > Linear Layout에 Gallery와 Text View를 추가하였다.
> Gallery 상에서 Image의 위치를 표시하기 위해, Text View를 추가하였다.

(1) Layout으로 사용할 xml 파일 만들기
 파일명 : layout > my_gallery.xml
 

특별히 관계없는 기타 팁
  1)  Gallery에 Image View를 추가하지 않아도 된다.
     * Gallery에 Image를 추가하는 것은 Code 상에서 할 예정이다.

  2) Fling의 결과로 선택된 Image 위치(Position)를 알기 위해서, Text View를 추가하였다.

  3) Linear Layout의 default orientation은 horizontal이다.
     => 그러므로, 꼭 orientation을 vertical로 명시해 주자.
       -> 그렇지 않으면, Text View가 화면에 표시되지 않을 것이다.

(2) 실행화면의 각 Image에서 보이는 테두리 속성용 value 파일 만들기
 파일명 : values > gallery_attri.xml
 


(3) Activity 클래스 작성하기
 파일명 : src > ActMyGallery.java
 

  1) android.app.Activity를 Super Class로 지정하여, Class를 생성하자.

  2) OnCreate 함수를 Override하자.
       (a) 이 Activity가 실행될 때의 Layout을 설정하기 위해, setContentView 함수를 호출한다.
       (b) Gallery에 Image 추가 및 Image에 대한 정보를 알 수 있도록, Adapter를 설정해 준다.
            - Gallery 클래스의 setAdapter 함수 이용
            * ImageAdapter는 미작성 클래스임. 그래서 setAdapter 라인을 추가하는 순간, Error가 날 것이다

(4) ImageAdapter 클래스 추가하기
 파일명 : src > ActMyGallery.java
 

  1) BaseAdapter를 Super Class로 하는 Class를 작성한다.
    => 단, Activity 클래스 내에 작성해야 한다.
     -> 그렇지 않으면, 몇몇 함수들은 정의되지 않았다고 Error가 발생할 것이다.
    (꼭 그럴 필요는 없음)
  2) Gallery에 추가할 Image들을 res/drawable 폴더에 추가한다.

  3) 위 소스 코드의 핵심 함수는 getView가 되겠다.
    =>이 함수는 Gallery의 위치에 있는 Image View를 반환하는 함수이다.
      -> 이 함수에서, 각 Position에서 보여야 할 Image에 대한 설정을 해 주고 있다.
        (a) ImageView.setImageResource()
            : Image Resource ID를 설정하여, ImageView에서 표시 할 Image를 설정하고 있음

        (b) ImageView.setLayoutPrarms(new Gallery.LayoutParams(150, 100)
            : 150은 width이고, 100은 height임

        (c) ImageView.setScaleType(ImageView.ScaleType.FIT_XY)
           : Imae가 150X100에 맞도록, Scale을 조정함

       (d) ImageView.setBackgroudnResource(background)
          : 실행된 화면에서, 각각의 ImageView에 회색 테두리가 보이도록 함

  4) 생성자에 있는 아래 항목들은 이미 (2)번에서 작성한 내용들이다.
      - R.styleable.Theme
      - R.styleable.Theme_android_galleryItemBackground

  5) 수행하면, 1번째 요구사항이 만족된 것을 확인할 수 있음

(5) 2번째 요구사항을 만족하기 위해, onCreate 함수 수정
 파일명 : src > ActMyGallery.java
 onCreate 함수 안에 안의 내용을 추가하였음
  1) setOnItemSelectedListener 함수를 이용하면, 2번째 요구사항을 만족할 수 있다.
    => 정확히는 OnItemSelectedListener.onItemSelected() 이지만..
      -> 해당 함수의 3번째 인자로 들어오는 Int는 Galley 상의 Image 위치이다.
      -> 그래서 position value를 TextView에 표시되도록 설정하고 있다. [TexvView.setText() 이용]

  2) 주석 처리된 부분을 해제하면, 사용자가 Click(정확히는 Push)한 Image를 알 수 있다.
   * Hello, Gallery 예제에는 setOnItemClickListner 함수가 있음.
     => 그러나 내가 원한 것은 Press 할 때 클릭된 Image 정보가 아니다.
     => 요구사항은 Release할 때, 표시될 Image 정보이다.
      -> 그래서, 해당 소스를 주석처리하였다.
이상!!

허접한 글이지만, 도움이 되신다면 아래 손가락 꾹 눌러주세요.
Posted by 소혼
GalleryView는 작은 이미지를 화면에 출력하는데에는 적합할 수 있으나 화면을 채운 아이템들을 움직이는데는 부적합한 것 같다.

예를 들어 화면을 꽉 채운 GalleryView에 이미지가 5개 있고, 현재 1번 이미지를 보고 있다고 가정하자.
사용자가 화면에 flick을 통해 2번, 3번 이미지를 보고 싶을 수 있겠으나
GalleryView에서 flick을 발생하면 거의 바로 5번 이미지로 이동해버린다.
아주 천천히 스크롤하는 경우가 아니면 2,3번 이미지를 보긴 매우 어려운데

만약 flick할 때마다 한개의 이미지만을 넘기고 싶은 거라면, GalleryView로는 불가능 할 것 같다.

그래도 GalleryView를 짜기 버거워 어쩔수 없이 쓰던 GalleryView에 약간의 트릭을 해보았다.

일단 GalleryView를 상속 받고 onFling을 override한다.
onFling의 인자 가운데 새번째 인자인 velocityX의 값을 절반으로 나누어 부모 클래스의 onFling을 호출한다.

생각한 것만큼 좋은 효과를 보여주진 못하지만,
당장 써먹을 수 있는 수준인 것 같다.

궁극적으로는 GalleryView를 다시 짜야 할 것 같다 ;;

허접한 글이지만, 도움이 되셨다면 아래 손가락 꾹 눌러주세요.
Posted by 소혼
전체 예제 코드를 http://bunhere.tistory.com/205 에 추가했습니다.
약간 복잡한 기초 데이터를 위해 초기 실행시 Create Table 도 하고 insert도 할 수 있겠지만, 별도의 db 파일을 만들어 관리하고 싶다면 아래와 같은 방법을 쓰는 것도 한가지 방법입니다.


1. db 파일을 assets에 넣습니다.


 2. 아래 함수를 적당한 위치에 넣습니다.
풀 코드가 아니라 크게 도움은 안되지만 컨셉을 이해하실 수 있을 것이라고 생각됩니다.ROOT_DIR은 아래와 같이 선언되어 있습니다. 경로는 자기 패키지 경로로 수정해주시면 됩니다.

[2010-09-30] 간단히 설명 추가합니다.
4번 라인에서 mkdirs를 통해 폴더를 생성하고자 노력합니다. 일단 만들어져있으면 이 함수를 실패할 것입니다.
그러나 이미 원하는 목적(폴더생성)은 되어 있을 것이므로 문제가 되지 않습니다.
중요한 점 하나는 /data/data/ 아래에는 자기 패키지가 있는 곳 외에는 수정이 불가능합니다.
따라서 ROOT_DIR이 이상할 경우 mkdirs는 폴더가 없더라도 실패합니다.

5번라인에서 해당 폴더 아래 DATABASE_NAME 변수가 가르키는 이름을 가진 파일이 있는지 체크합니다.
이 파일의 이름은 반드시 assets에 복사해놓은 파일명과 동일해야 합니다.
(테이블 명이 아닙니다!)
왜냐하면 9번 라인에서 assetManager를 오픈할 때 이 DATABASE_NAME을 쓰기 때문입니다.



DATABASE_NAME은 assets에 복사해놓은 파일명(첫번째 그림 참조)입니다 이 경우 lecture.db가 되겠네요.저는 폴더를 따로 만들었습니다. 이를 위해 먼저 3,4번 라인에서 패키지 경로 밑에 database란 폴더를 생성합니다.mkdirs는 이미 폴더가 있으면 실패하게 됩니다.
5번 라인에서 파일을 읽어드립니다.
6번 라인과 같이 파일의 길이가 0보다 작다는 것은 파일이 없다는 의미라고 생각했습니다. 따라서 파일을 복사하는 그 아래 코드(7번~18번)를 실행하게 됩니다.asset의 파일을 읽어오기 위해 7번 라인과 같이 assetManager를 이용해서 파일을 오픈합니다.나머지 내용들은 자바이므로 생략합니다.혹시 이해가 안되는 부분이나 더 나은 방법이 있다면 답글 주세요.


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



Posted by 소혼
국내 안드로이드 마켓은 어떤 모 위원회 분들의 노고에 힘입어 게임 카테고리를 볼 수 없습니다.
(두번째로 유료 결제가 T스토어밖에 안된다는 큰 문제가 있지요.)
하지만 그래도 다운로드를 받을 수 있는 법을 알게 되었습닏.
http://boowoon.egloos.com/2633391 을 보고 유용한 어플들을 설치하던 중
MyMarket이라는 완소 앱을 발견 *_*
아래 그림과 같이 마켓에서 mymarket을 검색하면 찾을 수 있습니다.

아래는 간략한 실행 과정입니다. (위 블로거님께 감사드립니다.)
(-설치 과정은 이미 설치했으므로 생략 -_-)
일단 mymarket을 실행하면 아래 그림과 같이 다른 형태의 마켓 그림이 뜹니다.
급한 마음에 게임 탭을 누르지 마시고 메뉴버튼(왼쪽 하단의 버튼)을 누르면 오른쪽 그림과 같이 메뉴가 나옵니다.
여기서 설정을 선택해줍니다.
 
 

아래 왼쪽 그림과 같이 설정 메뉴가 나오면 SKTelecom이라는 Provider 정보를 보실 수 있습니다.
굳이 SKTelecom에 악감정은 없지만 Providers를 임의의 국가로 선택해줍니다.
전 United States의 Sprint로 선택했습니다.
여기서 변경한다고 SK한테 통신료 안내는거 아니고 Sprint에 내는거 아니죠. 그냥 마켓에 제공하는 정보가 바뀌는 겁니다.
 
 

바꾸고 나면 Restart (재시작)해야 한다고 나옵니다. 재시작 버튼을 누르면 MyMarket이 다시 실행됩니다.
이제 게임 탬으로 이동해 보시면 아래 그림과 같이 게임들 목록이 보입니다.




























전 jewel을 받아보았습니다. 좀 밋밋하지만 시간 때우기 좋을 것 같습니다.






























허접한 글이지만, 도움이 되셨다면 아래 손가락 꾹 눌러주세요.
Posted by 소혼
이전 글 : 갤럭시 S 가벼운 개봉기

어제 밤 작업한다고 못 붙이고 잤더니 맘이 내 안편했는지 새벽에 일어나 보호필름을 붙였다.
SGP 보호필름과 case를 같이 받았다.

SGP 보호필름 비싸다던데 정말 좋은 것 같다. 지금까지 붙여본 것중에 제일 맘 편히 붙인 것 같다.
정신사납던 글자들을 이제 더이상 안봐도 되니 속이 시원하다.


그리고 아래는 지난번에 빼고 안 올렸던 윗면 사진;; 왜 빠졌을 까? 어쨌거나 USB 단자 너무 빡빡하다. 앱을 올려보기 위해 꽂았다 뺐다 할 일이 자주 있는데 이넘이 USB 케이블을 물고 놔줄 생각을 안한다 -_-;
산지 얼마 되지도 않았는데 험하게 다룰 수도 없고 ;;;;;; S야 말로 할 때 살짝 놔주지 않으련?

그리고 DMB 안테나 사진. 무척 길다. 햅틱온 안테나 잃어버려서 맘 상했었는데 내장이라 잃어버릴 일이 없다.
(폰 째로 잃어버리지 않는 한)

PS>
첫 어플리케이션을 폰에 올려봤는데
HDPI와 화면 잠금 기능 때문에 무척 고생했다. 역시 타겟이 있어야 하는 건가 보다.

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


최종 바이너리를 만들면서 확인하다가 큰 실수를 했다는 것을 알았습니다. density에 관한 것입니다.
에고 덕분에 완빵 고생을 하고 이 글을 적습니다. 혹시 이 글을 보시는 분은 배포 전에 꼭 resolution 독립적인지 확인하셔서 저같은 실수를 안하시길 빕니다.

일단 density를 위해 아래와 같은 점을 고려하면 될 것 같습니다.

1. 프로젝트를 만들 때, 반드시 min-sdk를 지정합시다.
프로젝트를 만들 때, min-sdk에 기본값이 없어도 프로젝트가 생성이 되지만 이렇게 만들어진 프로젝트는 hdpi 해상도에 대해 제대로 처리할 수 없습니다. 에뮬레이터가 큰 값을 갖더라도 그렇습니다.


2. px를 쓰지 말고 dp를 씁시다
최대한 레이아웃에 좌표계를 쓰지 않는 것이 좋지만 꼭 써야 한다면, dp를 쓰도록 합시다. dp는 해상도의 변경에 자유롭습니다.

3. 만약 소스코드에서 고쳐야 한다면 아래 코드처럼 DisplayMetric을 이용해 변환합니다.
DisplayMetrics metrics = new DisplayMetrics();
          getWindowManager().getDefaultDisplay().getMetrics(metrics);
metrics.density의 값은 hdpi 타겟의 경우 1.5 mdpi의 경우 1.0이 반환됩니다.
원하는 좌표계에 이 값을 곱하면 적당한 위치에 그려지는 것을 알 수 있습니다.

4. 이미지 크기에 주의합시다
이미지가 용량이 크면 메모리 오류가 발생할 수 있습니다.


허접한 글이지만, 도움이 되신다면 아래 손가락 꾹 눌러주세요.
Posted by 소혼
마무리 작업을 하고 있다.
타겟에 올려보니 실제와 다른 부분이 몇가지 있다.

특히 SDCARD부분이 다소 달랐다.
만약, SDCARD가 컴퓨터에 연결이 되어 있다면 디바이스에 인스톨된 어플리케이션은 SDCARD에 접근을 하지 못하는 것 같다.

곰곰히 생각해보니, 만약 어플 사용자가 선을 연결해놓고 실행하려 하는 경우 동일한 문제가 발생할 수 있다는 생각이 들었다.

따라서 SDCARD를 사용하려면 반드시 사용하기 전에 SDCARD의 상태가 정상적인지 확인하는 것이 필요하다.

SDCARD의 상태를 확인하는 것은 getExternalStorageState() 를 사용하면 된다.
android.os.Environment.getExternalStorageState()
아래는 안드로이드 Developer 자료
Constants
String MEDIA_BAD_REMOVAL getExternalStorageState() returns MEDIA_BAD_REMOVAL if the media was removed before it was unmounted.
String MEDIA_CHECKING getExternalStorageState() returns MEDIA_CHECKING if the media is present and being disk-checked
String MEDIA_MOUNTED getExternalStorageState() returns MEDIA_MOUNTED if the media is present and mounted at its mount point with read/write access.
String MEDIA_MOUNTED_READ_ONLY getExternalStorageState() returns MEDIA_MOUNTED_READ_ONLY if the media is present and mounted at its mount point with read only access.
String MEDIA_NOFS getExternalStorageState() returns MEDIA_NOFS if the media is present but is blank or is using an unsupported filesystem
String MEDIA_REMOVED getExternalStorageState() returns MEDIA_REMOVED if the media is not present.
String MEDIA_SHARED getExternalStorageState() returns MEDIA_SHARED if the media is present not mounted, and shared via USB mass storage.
String MEDIA_UNMOUNTABLE getExternalStorageState() returns MEDIA_UNMOUNTABLE if the media is present but cannot be mounted.
String MEDIA_UNMOUNTED getExternalStorageState() returns MEDIA_UNMOUNTED if the media is present but not mounted.

최소한 MEDIA_SHARED 상태인지 확인하는 것이 필요하다고 여겨진다.

허접한 글이지만, 도움이 되셨다면 아래 손가락 꾹 눌러주세요.
Posted by 소혼
이전버튼 1 2 3 4 5 6 이전버튼

티스토리 툴바