제임스딘딘의
Tech & Life

고양이의 둥지 255

[안드로이드] 안드로이드 SurfaceView 캡쳐 예제

안드로이드 SurfaceView 캡쳐 예제 다음과 같은 상황이라고 가정하자. 아이템의 사진을 찍는 앱이 있는데, 이 아이템들은 ActivityScreen의 특정한 고정 된 영역에서 볼 수 있어야 한다는 요구사항 있다.문제는 저장된 비트맵이 액티비티에 표시될 때 인데, 카메라로 보고 찍은 것과는 보여지는게 다르다. 줌을 땡겨서 사진을 찍을 때, 프리뷰 화면에서는 보여지지 않았던 영역까지 액티비티에 그려진다. 해결을 위한 주요 코드 줄은 다음과 같다. 이미지 캡쳐 (IMAGE CAPTURE) surfHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); captImageView = (ImageView)findViewById(R.id.CamImageView); b..

[Android] 죽지않는 서비스 만들기

안드로이드에서 죽지않는 서비스 만들기안드로이드는 시스템의 메모리 상황에 따라 각 Process별로 OOM Score (Out Of Memory Score)를 부여하고, 이 값을 기준으로 메모리가 부족해지면 OOM Score가 높은 Process부터 선택적으로 동작중인 서비스를 죽이기도 한다. 또한 나중에 다시 살리기도 한다. 만약 앱 개발을 하면서 죽지않고 항상 떠서 동작하는 서비스를 구현해야 하는 요구사항이 있다면, 이런 일이 발생하는 것에 당황할 수 있다. 이러한 상황에 부딪히면 자신이 개발중인 서비스를 죽지 않도록 만들고자 방법을 찾아볼 텐데, 이런 경우를 위한 방법이 있다. 바로 알람서비스를 이용하여 서비스가 죽으면 다시 살리는 방법이다. 많은 경우 이런 방식을 이용하는 것으로 보인다. 예제 소스..

[안드로이드] Push Notification 구현

[안드로이드] Push Notification 구현 안드로이드에서 Push notification을 구현하기 위한 방법으로 XMPP를 이용하는 방법과 MQTT를 이용하는 방법이 있다. 여기서는 MQTT를 이용하여 C2DM을 지원하지 않는 안드로이드 2.1이하 버전에서 PUSH notification을 지원하기 위한 방법에 대해 설명한다. 안드로이드 앱에서 Push notification을 지원하기 위한 방안은 3가지정도의 방안이 있다. 폴링이게 진정 push일까?? 어쨌든 단말에서 주기적으로 서버에 가져갈 메세지가 있는지 확인하여 push event를 수신할 수 있다. 장점 : 구현이 쉽고 비용도 안든다. 단정 : 실시간이 아니지 않은가... 게다가 이는 배터리소모까지 발생시킨다.. 끔찍하다. 이에 대한..

[안드로이드] 커스텀 프로그레스바

안드로이드 기본 프로그레스바를 사용하다보면 느끼는 것이 정말 안이쁘다는 것이다. 그리고 어플리케이션 디자인에 따른 프로그레스바의 색을 지정한다면 더 좋은 디자인을 갖는 어플을 개발 할 수 있을 것이다. 안드로이드 어플을 개발하면서 나쁜 것은 디자인적인 요소이지만 좋은 것은 그 디자인적 요소를 어떻게든지 커스터마이징 할 수 있다는 것이 장점이다. 프로그레스바는 현재 어플이 어떠한 작업을 하고 있다는 것을 사용자에게 보여주는 요소로 시간이 걸리는 작업을 수행하거나 혹은 좀더 좋은 효과를 표현하는데 사용될 수 있다. 이러한 프로그레스바를 커스텀 하는 방법은 간단한다. 먼저 /res 폴더아래에 drawable이라는 폴더를 만들고 그 안에 커스텀한 프로그래스바의 이름을 정한 xml파일을 만든다. 그리고 그 xml..

[안드로이드] 안드로이드의 이미지 Canvas, Bitmap, Drawable 개요

안드로이드의 이미지 Canvas, Bitmap, Drawable 개요 안드로이드에서는 이미지를 다루기 위한 몇가지 클래스가 존재한다.Canvas, Bitmap, Drawable이 그것이다.각각의 이미지 관련 클래스들에 대해 전반적인 사항을 알아보고자 한다. Drawable, 앱의 resource 디렉토리에 저장되어 있는 이미지 다루기기본적으로 resource에 저장되어 있는 이미지의 경우에는 "Drawable" type의 객체로써 해당 이미지를 다룰 수 있다."Drawable" type을 화면에 그리는 예제 코드는 아래와 같다. Drawable drawable = getResources().getDrawable(id); drawable.setBounds(0,0, drawable.getIntrinsicWi..

MFC 재배포 DLL

MFC 재배포 DLL 간단한 MFC용 ODBC을 배포하려고 하는데 필요한 DLL을 확인해보았습니다. 프로젝트 형식은 [Win32]-[Win32 콘솔 응용 프로그램]이고 템플릿 마법사(응용 프로그램 설정)에서 추가 옵션에 '미리 컴파일된 헤더'에 체크 및 공용 헤더 파일 추가 대상에 'MFC' 에 체크하였습니다. 미리 컴파일된 헤더(PCH) 헤더 파일인 stdafx.h에 TODO 부분에 #include // MFC ODBC 를 추가하고 main함수가 있는 cpp 파일에 CDatabase db; BOOL res = db.OpenEx(TEXT("~~~~)); // ~~~~부분에는 ODBC 연결 문자열이 들어갔습니다. if(res) { db.ExecuteSQL(TEXT("Insert into ABBA.dbo.u..

POV - 회전 잔상 LED디스플레이

2011년 1학기 마이크로프로세서응용 과목 텀프로젝트 파란색 고휘도 LED8개와 ATmega128 2개를 사용하여 만들었다. 빠르게 회전시켜 남는 잔상으로 문자를 표시한다. 안드로이드 스마트폰 어플리케이션을 만들어 ATmega128과 블루투스로 통신을 하게끔 하여, 디스플레이 할 문자를 폰으로 입력, 전송하여 변경할 수 있다. 또한 디지털시계 모드, 텍스트표시 모드로 분리해두어 이역시 블루투스로 제어하여 모드 변경을 한다. 본 프로젝트 진행시 개발한 안드로이드용 블루투스 Application 소스코드는 하단 링크에서 다운로드 받을 수 있습니다. 위 안드로이드 어플리케이션은 아래 링크를 통해 다운로드 받으실 수 있습니다. ** 회로도 추가 ** ATmega128 스키매틱입니다. GPIO 핀 중 PE0, P..

해시 테이블에 대하여 (about Hash Table)

해시 테이블은 한마디로 공간을 팔아 시간을 사다 라는 말로 표현할 수 있다. 주소를 이용해서 배열같이 직접 탐색이 가능하다. 해시테이블의 기본 개념은 다음과 같다. 데이터를 담을 테이블을 미리 크게 확보해 놓은 후 입력받은 데이터를 해시하여 테이블 내의 주소를 계산하고 이 주소에 데이터를 담는 것, 이것이 바로 해시 테이블의 기본 개념이다. 해시테이블은 특이하게도 데이터가 입력되지 않은 여유공간이 많아야 제 성능을 발휘할 수 있다. 테이블 내의 주소를 계산할 때는 해시함수를 이용하는 데 이에는 두가지 방법이 사용된다. 1) 나눗셈법 주소 = 입력값 % 테이블의 크기 하지만 이는 충돌과 클러스터 문제가 발생할 가능성이 높다. 2) 자릿수 접기 Hello -> 72 + 101 + 108 + 111 = 500..

OpenCV 2.2 - Visual Studio2010 에 설치하기

OpenCV 2.2부터는 VS2010용 pre-compiled 버전(VS2008도 사용 가능)이 나온 동시에 OpenCV의 라이브러리들이 대대적으로 정리되고 이름들도 많이 바뀌어서 예전에 만들어둔 프로젝트를 돌리는데 문제가 좀 생기게 되었습니다. 새 버전에 어서 적응하는 방법 밖에 없겠습니다. 허허허헛... 2.1에 비해 달라진 점 중 눈에 띄는 몇 가지는 다음과 같습니다. - 라이브러리들의 재정리 및 이름 변경 - 새로운 스테레오비전 알고리즘 등의 최신 기술을 사용한 알고리즘 다수 추가 - 약 200여 가지의 대대적 버그 수정 (아직 부분적으로 메모리 누수 현상이 있다고 합니다) - NVIDIA의 OpenCV에 대한 공식 지원 (CUDA 라이브러리와의 연동으로 데이터 연산에 3D 가속 기능 사용 가능)..

[C/C++]유용한 #pragma directive

출처 : http://eslife.tistory.com/187 ※ 주의 : 아래에서 기술하는 내용은 Visual C++ 컴파일러에서만 확인된 내용입니다. 지난번 #define 팁 에 이어 이번에는 필수는 아니지만 사용할 경우 아주 편리한 #pragma 지시자를 간단하게 소개하려고 합니다. 1. 헤더 파일을 한번만 읽어 들이기 아마도 이 경우가 #pragma를 가장 널리 사용하게 된 이유 중에 하나라고 생각되는데요 저도 언제나 헤더 파일을 새로 코딩 할 때 이 한 줄을 먼저 적게 됩니다. (아주 짧고 멋집니다) #pragma once #pragma once 가 없을 당시에는 아래와 같이 헤더 파일 내용을 #ifndef ~ #endif 문장을 사용해서 복잡하게 써주어야 했습니다. (요 복잡한 게 한 줄로 줄..

레귤레이터에 캐패시터를 붙이는 이유(The reason why attach capacitor on regulator)

레귤레이터에 캐패시터를 붙이는 이유 (The reason why attach capacitor on regulator)통상적으로 데이터시트를 보다보면, 레귤레이터 앞과 뒷단에 캐패시터를 붙이는 걸 발견하게 된다. 이것들을 왜 붙일까? 크게 2가지 역할을 해준다. 발진방지전원임피던스를 낮추어줌 첫번째 이유. 레귤레이터는 일종의 DC앰프이다. 따라서 부하에 따라 자칫 발진할 가능성이 많다고 한다. 여기에 약간 이상한 부하, 예를 들면 모터나, 솔레노이드처럼 코일로 된 부하를 연결하면 쉽게 발진을 하게 된다고 한다. 실제 출력측에 콘덴서를 달지 않는 경우, 제조회사에 따라 다소 다르지만 수백khz정도로 발진을 하게된다. 그래서 발진방지용으로 콘덴서를 붙인다. 이때 GND단자와 최대한 가깝게 연결하는 것이 중요..

[mysql] 암/복호화

Oracle을 사용하던 사람들이 MySQL을 사용할 때 착각하기 쉬운 것 중 하나가 바로 DECODE 일 것이다. 내 블로그에 있는 http://blackbull.tistory.com/10 글을 보면, Oracle에서 사용하던 DECODE 에 대해 설명하고 있으니 그것은 별도로 참고하고, 오늘은 MySQL만을 살펴보도록 하자. MySQL 툴이나, 기타 SQL관련 프로그램을 사용하다보면, MySQL에서 DECODE의 글씨 색이 다른 것을 볼 수 있으며, 이미 예약어로 잡혀있는 것을 볼 수 있을 것이다. 즉, MySQL도 DECODE가 존재 한다는 것인데, 웃기게도 이것 때문에 Oracle의 DECODE와 혼동하는 사람들을 매번 낚고 있다 --;; [MySQL에서 help를 이용하여 DECODE에 대해 알아..

OAuth 인증방식 이해하기

OAuth 인증방식 이해하기 본 문서는 OAuth의 이해를 돕기 위해 작성되었습니다. OAuth 학습을 뛰어넘고 바로 예제 소스를 보며 개발을 하고 싶다면, 튜토리얼를 참고하시기 바랍니다. 본 문서 내의 용어 일관성을 위해 OAuth스팩에 있는 용어를 사용하였습니다. 본 문서에서 용어는 모두 이탤릭체로 표시됩니다. 용어정의 서비스 프로바이더(Service Provider) – API를 제공하는 서비스를 말합니다. 예> 스프링노트 사용자(users) - 서비스 프로바이더 혹은(그리고) 컨수머를 사용하는 이를 말합니다. 컨수머(Consumer) – API를 사용하여 개발된 애플리케이션 서비스를 말합니다. 예> 스프링노트의 API를 이용하여 개발된 매시업 보호된 자원(Protected Resources): 서..

[안드로이드] 안드로이드 SDK 에뮬레이터에서 웹캠영상 받기

안드로이드 SDK 에뮬레이터에서 웹캠영상 받기 안드로이드 의 에뮬에서는 직접적인 카메라 지원은 하지 않는다. 그래서 PC의 웹캠을 달고 영상을 에뮬에 전달해서 보여주는 방식을 사용하는데, 이걸 하는 방법은 다음과 같다. 카메라 영상을 Broadcasting하는 서버일단은 android 개발 환경과 SDK는 다 설치 되었다는 가정하에 시작하자. 먼저 JMF가 필요한다.. 자바 에서 웹캠을 동작시켜 주는 프로그램이다. 현재는 거의 망해서 지원이 미비 하지만.. 어쨌건 우리는 이걸 사용해야 한다. JMF는 여기서 받는다. http://www.oracle.com/technetwork/java/javase/tech/index-jsp-140239.html 받아서 설치 하고 난다음에 환경변수에서 classpath가 ..

[안드로이드] Emulator: ERROR: bad config: virtual device directory lacks config.ini - 안드로이드 가상머신관련 오류 해결

안드로이드 Emulator: ERROR: bad config: virtual device directory lacks config.ini - 안드로이드 가상머신관련 오류 해결 emulator: ERROR: bad config: virtual device directory lacks config.iniemulator: could not find virtual device named 'test' 위와 같은 오류가 발생하는 이유는, 컴퓨터의 사용자 이름이 한글인 경우, 경로 인식을 제대로 하지 못해서 오류가 생긴다고 한다. 아래의 사진을 보면 커맨드라인의 폴더경로중 사용자이름 부분이 한글인 것을 확인할 수 있다. 바로 이러한 경우가 문제가 된다. 이런 문제가 생긴다고 가상머신을 사용하지 못한다면 더 이상 안드..

나는 어떤 프로그래머가 되고자 하는가?

나는 어떤 프로그래머가 되고자 하는가? '프로그래머란 자신이 작성한 코드를 통해서 의사소통을 한다' 일단 소프트웨어를 개발하는 일이 시작되면 오직 프로그래밍 실력만이 말을 한다.다른사람들 틈에 섞여서 일을 열심히 하는 '시늉'만 잘해도 버틸 수 있는 직종이 있다.하지만 프로그래밍이라는 직업에는 그런 측면이 전혀 없다. 달리지 못하는 사람이 축구선수를 할 수 없고, 아름다운 소리를 만들어 내지 못하는 사람이 첼로 연주자가 될 수 없는 것처럼, 품질이 뛰어난 코드를 생산할 수 없는 사람은 프로그래머라는 직업을 유지할 수 없다. 프로그래밍은 소설이나 논문처럼 온 힘을 다해서 만들어낸 지적 활동의 결과물을 다른 사람들에게 보여주는 일이다. 그렇기 때문에 진정한 실력이 없이 흉내만 내는 사람은 숨을 곳이 없다. ..

NULL ptr/일기장 2011.01.19

[안드로이드] ADT 8.0.0으로 업데이트 후의 draw9patch 에러

ADT 8.0.0으로 업데이트 후의 draw9patch 에러 Android SDK에는 draw9patch 라는 툴이 내장되어있다.이 툴은 auto resizing이 필요한 (버튼과같은) 이미지가 있을 때, 어느 영역을 resizing 할것인지를 지정하는 툴이라고 생각하면 이해가 쉽다.그런데 Android SDK버전을 진저브레드로 업데이트 이후, draw9patch 실행시 아래와같은 예외메세지를 뿌리며 프로그램이 죽는 증상이 발생할 수 있다. (스트레스!) 원인은 swing-worker.jar 파일이 ANDROID_SDK설치폴더/tools/lib 에 없기때문에 발생한다. 해결책은 해당파일을 해당위치에 넣어주면 된다. swing-worker.jar 파일은 아래에 링크해두었다. Marius Mathiesen라..

[책] 내 여자친구의 귀여운 연애

내 여자친구의 귀여운 연애 내여자친구의귀여운연애카테고리소설지은이윤영수 (민음사펴냄, 2007년)상세보기 '돈이 최고인 세상에서 돈벌이를 제대로 하는 것만큼 훌륭한 미덕은 없는것이다' 각자 다르게 살고있는 인간들의 이야기 5편을 담고있는 윤영수씨의 소설 사랑, 감정, 입양, 뻔뻔함, 현실과 연극, 치매, 살인기도, 자살, 돈, 황금만능주의, 패륜, 섹스와 문란함, 허세, 싸구려 주둥이 등.. 인간세상의 흥미로운 가십거리를 버무려내어 5개의 이야기로 풀어내는 소설이다 나 역시 언젠가는 이런 인간세상 안으로 좋던싫던 기어들어가야 하는 때가 오겠지?

NULL ptr/ NULL ptr 2011.01.13

[안드로이드] Preferences 다루기 - 앱의 환경설정을 위한 Class

안드로이드 Preferences 다루기 앱을 개발하다보면 각각의 사용자별로 선호하는 값들을 저장하는 화면을 제공해야 할 때가 있다.게시물을 보여주는 앱을 예를들어 보자. 한화면에 보여지는 글의 목록을 어떤 사용자는 10개를 선호하는 반면, 어떤 사용자는 5개를 좋아한다면 앱개발자가 글 목록의 개수를 강제로 고정시킬 것이 아니라, 사용자 별로 설정을 할 수 있게 허용하는 것이다. 이것을 '환경설정' 혹은 'Preferences' 라고 하며, 안드로이드 플랫폼은 이런 것을 구현하기 편리하도록 기능을 제공한다.안드로이드 플랫폼은 Data를 저장하는 방법으로 환경설정(이하 Preferences), 파일, Local DB, 네트워크를 제공한다. 그 중 Preferences는 가장 간단하게 정보를 저장하는 방법(m..

[안드로이드] 서로다른 Activity 사이에 Parcelable사용하여 데이터/객체 전달 및 받는 방법

서로다른 액티비티(Activity) 사이에 Parcelable사용하여 데이터/객체 전달 및 받는 방법 Parcelable의 정석적인 사용방법은 아니지만, 객체의 포인터를 액티비티간 주고 받는 방식으로 보면 될 것 같다.물론 자바는 포인터가 없지만 여기서 사용한 방법은 개념상 포인터를 넘기는것과 같다고 봐도 무방할것 같다. 이미 잘 알려진것과 같이, 안드로이드에서는 서로다른 엑티비티 사이에서 객체를 주고 받기 위해서는 Intent를 이용한다.그런데 기본 데이터 형인 int, String, short, float... 등이 아니라 사용자 정의 Class의 instance를 넘겨야 하는 상황이라고 생각해보자.어떻게 해야할까?이때 사용되는 interface가 Parcelable 이다.기본 자료형 int, boo..

[안드로이드] 이미지와 텍스트가 같이 들어간 버튼 만들기

이미지와 텍스트가 같이 들어간 버튼 만들기안드로이드 SDK(1.5기중)에는 버튼을 처리하는 클래스가 Button과 ImageButton 크게 두가지 있다. ImageButton이 내부에 이미지를 가지고 있는 버튼이고, Button은 TextView를 상속하고 있기에 텍스트 버튼이라고 생각하기 쉬운데, 사실 그렇지 않다.일반적으로 버튼을 표시할때 간단하게 해당 버튼의 기능을 시각화 하여 나타내는 간단한 Icon을 함께 넣어주는 경우가 많을텐데, 그런 경우 ImageButton대신 Button을 활용해서 처리할 수 있다. 이미지의 위치는 텍스트의 상, 하, 좌, 우에 위치시킬 수 있으며, Xml에서는 각각 android:drawableTop, android:drawableBottom, android:draw..

[안드로이드] Bitmap 과 ByteArray 상호변환

Bitmap 과 ByteArray 상호변환 이 포스팅은 Bitmap 데이터 형을 ByteArray로 변환하거나, 혹은 그 역, ByteArray -> Bitmap으로 변환하는 방법을 예제코드와 함께 다룬다. 안드로이드 카메라와 이미지를 다루다보면, 종종 데이터 형(type)이 달라서 형변환을 해야 하는 상황이 발생한다. 그때 필요한 내용이다. 방법을 간단히 요약하자면 아래 두줄만 보면 된다. Bitmap -> ByteArray : ByteArrayOutputStream 인스턴스를 생성한 후, Bitmap의 compress 메서드를 통해 비트맵을 압축하여 stream에 담는다. ByteArray -> Bitmap : BitmapFactory의 decodeByteArray 메서드를 통해 byte Array를..

[안드로이드] 인터넷에서 이미지 비동기 다운로드

안드로이드 인터넷 이미지 비동기 다운로드보통, 인터넷에서 이미지를 다운로드 하는 코드를 아래와 같이 사용하는 경우가 종종 있었다.그러나 잘못된 사용방법이라고 한다. 잘못된 사용 예URL url = new URL(imageUrl); bitmap = BitmapFactory.decodeStream(url.openStream()); 이미지 주소로 URL 객체를 만든 후, BitmapFactory의 decodeStream( )의 인자로써 생성한 URL객체의 openStream( ) 메서드를 호출하고 있다.그러나, 아래와 같은 방법으로 사용하는 것이 올바른 사용 방법이라고 한다. 올바른 사용 예 HttpGet httpRequest = new HttpGet(URI.create(imageUrl) ); HttpClie..

[안드로이드] 증강현실 구현을 위한 기초 개념, 벡터(Vector)와 노름(Norm)

증강현실 구현을 위한 기초 개념, 벡터(Vector)와 노름(Norm) 노름(Norm)은 일종의 '벡터의 크기'를 일반화시킨 것이라고 생각하면 쉽다.선형대수학 및 함수해석학 등의 분야에서 쓰인다. 선형대수학 및 함수해석학에서는, 노름(영어: norm 놈[*])은 벡터 공간의 원소들에 대하여 일종의 ‘길이’ 또는 ‘크기’를 부여하는 함수 라고 정의한다.0 벡터의 노름은 0 이며, 그 외의 모든 벡터는 양의 실수 노름을 갖는다.한편, 반노름(半norm, 영어: seminorm 세미놈[*])이라 하는 개념이 있는데, 이는 영 벡터 이외의 벡터도 노름이 0 이 될 수 있도록 조건을 약화한 것이다. 노름(Norm)은 다음 조건을 만족시켜야 한다. Lp노름은 다음과 같이 정의된다. 한마디로 말하면, 각 성분들의 절..

[안드로이드] 안드로이드 화면이 회전될 때 어플리케이션 개발자가 주의해야할 점

안드로이드 화면이 회전될 때 어플리케이션 개발자가 주의해야할 점 안드로이드는 가속도 센서나 조도 센서와 같은 다양한 종류의 센서를 다루기 위한 API 를 제공하고 있다. 그 중 가장 일반적으로 사용되는 센서 두 가지는, 가속도 센서와 자기장 센서(나침반 센서) 이다. 어플리케이션과 디바이스는 이 두 가지 센서를 사용자 입력값으로 활용하여, 디바이스 스크린을 어느 방향으로 돌릴지 결정하는데 사용하곤 한다. 그러나, 최근 이와 관련된 새로운 문제가 발견되었다. 새로 출시된 디바이스들 중에는 (모토롤라의 CHARM 과 FLIPOUT 이라는 모델) 기본 화면 모드로 포트레이트(portrait) 모드 대신 랜드스케이프(landscape) 모드를 사용하고 있다. 따라서, 기본 화면이 세로로 길쭉하지 않고 가로로 넓..

스마트폰 ‘컴퓨터 닮기’ 종착역은?

스마트폰 ‘컴퓨터 닮기’ 종착역은? 더 큰 화면, 더 빠른 속도, 더 많이 저장… pc업체들 장점 살려 도전, 통신시장 경쟁 더 치열해져 ‘더 큰 디스플레이, 더 빠른 처리속도, 더 많은 저장공간….’ 스마트폰의 ‘피시(PC) 닮기’ 경쟁은 어디까지 갈 것인가? 델코리아는 22일 서울 광화문 올레스퀘어에서 ‘스트릭’을 연내 케이티(KT)를 통해 출시한다고 발표하며 국내 스마트폰 시장 진출을 선언했다. 갈수록 경쟁이 격화하는 스마트폰 시장에 다양한 제품이 쏟아지고 있지만, 세계 2위의 컴퓨터 제조기업인 델이 들고온 제품은 약간 다르다. 스트릭은 5인치 화면을 채택한, 세계에서 가장 큰 화면의 스마트폰이다. 휴대전화의 디스플레이는 2년 전만 해도 평균 2.2인치로 ‘경박단소’를 지향했으나 스마트폰이 나온 이..

NULL ptr/ NULL ptr 2010.12.23

[안드로이드] 카메라 해상도 바꾸기

안드로이드 카메라 해상도 바꾸기 카메라를 찍을때 촬영할 이미지의 해상도를 변경하는 방법을 보여주는 예제코드 입니다. 아래 코드는 APIDemo에 있던 Camera 소스를 약간 변경한 것입니다. Preview Class는 카메라에서 1600 * 1200 (2MP)과 가장 가까운 해상도를 찾아서, 그 해상도로 촬영을 해 주는 역할을 합니다. Activity에서 불러오는 방법은 APIDemo에 있는 Camera소스를 찾아 보시기 바랍니다. class Preview extends SurfaceView implements SurfaceHolder.Callback { private static final int IMAGE_WIDTH = 1600; // 촬영할 가로 픽셀 수 private static final in..

1 ··· 5 6 7 8 9