본문 바로가기

개발자의 기록 노트/Android

(37)
[안드로이드] 자이로스코프 이야기. 가속도센서 vs 자이로센서 비교 자이로스코프 이야기. 가속도센서 vs 자이로센서 비교 오늘은 자이로스코프(Gyroscope)에 대해서 얘기를 해볼까 한다. 자이로스코프는 보통 '자이로센서' 라고 부르는데, 이 센서의 유무에 따라 스마트폰 가격이 크게 달라지는 것 같다. 아이폰은 자이로센서가 기본 탑재인 반면 안드로이드폰은 의무사항이 아니다. 하드웨어 제조사에서는 단가를 낮춘 저가형 라인업도 가지고 있는 경우가 종종 있는데, 이런 안드로이드 스마트폰들은 자이로센서를 제외하고 출시하기도 한다. 아무튼, 이 자이로센서가 무엇이고 어떤 원리로 동작하는지를 알아보자. 그리고, 이 자이로센서가 가속도센서와는 어떻게 다른지, 그 둘간의 차이점에 대해서 그 후에 알아보겠다. 자이로스코프(Gyroscope)운동하는 모든 물체는 각도를 갖고 있다. 예를..
[안드로이드] 이미 생성해둔(Sqlite) DB를 앱에서 Load하여 사용하기 이미 생성해둔(Sqlite) DB파일을 앱에서 읽어들여 사용하기 약간 복잡한 기초 데이터를 위해 초기 실행시 Create Table 도 하고 insert도 할 수 있겠지만, 별도의 db 파일을 PC등에서 미리 만들고, 관리하며, 앱에서는 이 파일을 읽어들이기만 하여 (Load) 사용하고 싶다면 아래와 같은 방법을 쓰는 것도 한가지 해결책이 될 수 있다.db 파일을 assets에 넣는다.아래 함수를 적당한 위치에 넣는다. public static void initialize(Context ctx) { // check File folder = new File(ROOT_DIR + "databases"); folder.mkdirs(); File outfile = new File(ROOT_DIR + "databa..
[안드로이드] 안드로이드에서 SQLite를 다뤄보자 (2) 2011/08/09 - [Software Dev Note/Android] - [안드로이드] 안드로이드에서 SQLite를 다뤄보자 (1)2011/08/11 - [Software Dev Note/Android] - [안드로이드] 이미 생성해둔(Sqlite) DB를 앱에서 Load하여 사용하기 안드로이드에서 SQLite를 다뤄보자 (2)안드로이드 앱 개발을 할 때, 없어서는 안될 존재. SQLite의 사용법에 대해 알아보겠다. 오늘은 아주 데이터베이스를 뿌리뽑아보도록 하자.안드로이드는 모바일 환경에 알맞은 SQLite 데이터베이스를 채택하고 있다. 기본적으로 다른 데이터베이스와의 큰 차이는 없다. 물론, 완전히 같지는 않다.다른 점 이라면, 일반적은 데이터베이스는 테이블 생성 시 각 속성에 대한 타입을 지정한..
[안드로이드] 안드로이드에서 SQLite를 다뤄보자 (1) 안드로이드에서 SQLite를 다뤄보자 (1) 안드로이드 플랫폼은 Database를 위해서 플랫폼 자체적으로 SQLite를 기본 탑재하고 있다.우선 SQLite의 특징을 살펴보자. SQLite는 다른 프로그램에 임베딩하기 좋으면서도 깔끔한 SQL 인터페이스를 제공한다.메모리도 적게 사용하면서 속도도 빠르다.실행파일과 소스 코드가 무료이고 공개되어 있기 때문에 많이 사용된다.위와 같은 이유로, 안드로이드는 SQLite를 기본탑재하여 내장하고 있으며, 그결과 모든 안드로이드 애플리케이션은 간단하게 SQLite 데이터베이스를 생성해 활용할수 있게 됐다.SQLite는 표준 SQL 인터페이스를 사용한다. -> SQLite는 SQL 문법에 맞는 명령을 통해 데이터를 가져오거나(SELECT) 데이터를 변경하고(INSE..
[안드로이드]Error generating final archive: Debug certificate expired on Error generating final archive: Debug certificate expired on 종종 Android SDK를 사용하다 보면, 소스코드에는 전혀 Error가 없는데, Build하려고 하면 아래와 같은 Error로 인해 device나 emulator에서 실행시킬 수 없는 경우가 있다. 문제 상황"Error generating final archive: Debug certificate expired on" 라는 에러 메세지가 Console에 보임. 해결책해결방법은 간단하다. 우선, debug.keystore 라는 파일을 삭제하면 된다.보통 "사용자" 디렉토리에 '.android' 라는 폴더 아래에 있다.나의 경우는 아래와 같다. C:\Documents and Settings\Use..
[안드로이드] 안드로이드 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를 수신할 수 있다. 장점 : 구현이 쉽고 비용도 안든다. 단정 : 실시간이 아니지 않은가... 게다가 이는 배터리소모까지 발생시킨다.. 끔찍하다. 이에 대한..