- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 재능이의 돈버는 일기
- StresslessLife
- K_JIN2SM
- 소소한 일상
- My Life Style & Memory a Box
- Blog's generation
- 공감 스토리
- 취객의 프로그래밍 연구실
- Love Me
- Dream Archive
- 세상에 발자취를 남기다 by kongmingu
- hanglesoul
- 카마의 IT 초행길
- 느리게.
- 미친듯이 즐겨보자..
- Joo studio
- Gonna be insane
- 악 다 날아갔어!! 갇대밋! 왓더...
- xopowo05
- 맑은공기희망운동
- 엔지니어 독립운동
- 혁준 블로그
- Simple in Complex with Simple
- 무의식이 의식을 지배한다
목록android (171)
드럼치는 프로그래머
'MK802' 시리즈는 거실에서 특히 유용한 초소형 PC다. 겉모습만 보면 PC라고 생각할 수 없을 정도다. 길이는 10cm 내외, 무게는 200g 수준이다. 흔히 쓰는 막대 모양의 USB 메모리를 쏙 빼닮았다. MK802 시리즈 초소형 PC 헌데, 속에 들어찬 부품이 예사롭지 않다. MK802 초소형 PC 시리즈에는 반도체 제조업체 올위너에서 만든 ARM 코어텍스-A8 기반 '올위너 A10' 모바일 프로세서가 들어가 있다. 동작 클럭 속도는 1GHz 수준이다. 512MB 내장 메모리를 지원하는 제품도 있지만, 1GB 메모리를 탑재한 제품도 있다. MK802 시리즈에 내장된 OS는 구글의 안드로이드다. 가장 최근 소개된 제품 속에는 안드로이드 버전 4.0(아이스크림 샌드위치) 이상이 설치돼 있다. 다양한..
안드로이드 앱을 만들어 본 프로그래머라면 물론 알고 있겠지만, 앱에서 특정 하드웨어를 사용하려면 AndroidManifest.xml 파일 내에 그 내용을 미리 선언해야 한다. AndroidManifest.xml에 관련된 가이드를 꼼꼼히 읽어본 사람이라면 실제 앱을 배포하면서도 별로 헷갈릴 일이 없겠지만, 케냘의 경우에는 슥 훑어보고 uses-permission 태그만 사용하면 되는 줄 알았다가 낭패를 겪었다. 좌우지간 가이드는 꼼꼼히 읽어볼 일이다. 카메라 기능을 기준으로 예를 하나 들어보도록 하겠다. 케냘은 어제 BITNA를 새로 배포하면서 AndroidManifest.xml 파일에 다음과 같은 내용을 추가하였다: ... ... 카메라의 플래시라이트를 사용하는 기능이 추가되었기 때문에 위와 같은 내용을..
public class SmsRawData implements Parcelable { byte[] data; //Static Methods public static final Parcelable.Creator CREATOR = new Parcelable.Creator (){ public SmsRawData createFromParcel(Parcel source) { int size; size = source.readInt(); byte[] data = new byte[size]; source.readByteArray(data); return new SmsRawData(data); } public SmsRawData[] newArray(int size) { return new SmsRawData[size]..
(원본 : http://developer.android.com/guide/topics/usb/accessory.html) USB 액세서리 모드는 사용자가 USB host 하드웨어에 연결할 수 있도록 안드로이드 장비를 위해 설계되어졌다. 액세서리들은 Android Accessory Development Kit 문서에 설명되어져 있는 Android accessory protocol 을 준수해야 하며 USB host로 동작하지 않는 안드로이드 장비가 USB 하드웨어와 함께 동작하는 것을 지원한다. 안드로이드 장비가 USB 액세서리 모드로 동작할 때 장착된 안드로이드 USB 액세서리는 USB 버스를 통해 전력을 제공하는 호스트로서 동작하고 연결된 장비들을 열거한다. 안드로이드 3.1 (API level 12)는..
AIDL을 사용하는 서비스간 통신에 있어서 데이터의(변수) 전송은 제한적이다. 특히 컴플렉스 타입을 전송하는데에는 Parcelable 인터페이스를 구현하여야 한다. 이때, Parcelable의 역할은 안드로이드 런타임에 객체의 직렬화(serialize) 과정을 도와주는 것이다. 물론 serializable을 사용하여 직렬화하고 전송할 수 있겠지만, 안드로이드에서는 공유메모리를 활용하는, IPC(Inter-Process Communication)통신에서의 효율성을 위하여 사용자가 내부정보에 대한 사항을 직접 명시함으로서, 자바 프로세서가 클래스 내부를 일일히 처리해야하는 오버헤드를 줄여준다. 우선 AIDL에서 사용되는 자료형에 대한 참고사항은 다음과 같다. (from 안드로이드 4 실무 바이블) AIDL은..
안드로이드 서비스는 백그라운드에서 실행하는 컴포넌트로 UI가 없다(윈도우의 서비스와 유닉스 데몬과 비슷). 그리고 서비스 객체는 스레드를 자동으로 만들지 않기 때문에, 별도의 스레드로 동작시키지 않으면 서비스가 메인 스레드에서 동작한다. 서비스가 하는 일이 짧으면 상관없지만 오래 걸리는 경우에는 별도의 스레드(혹은 AsyncTask)를 사용해야 한다. 서비스는 로컬 서비스와 리모트 서비스로 구분되는데, 그중에서 리모트 서비스는 해당 애플리케이션 이외의 범위에서도 서비스를 사용할 수 있으며, 이를 위해서 AIDL(Android Interface Definition Language)를 사용한다. AIDL은 서비스를 사용하는 클라이언트에게 제공되는 인터페이스를 정의하고, 바인더로 사용할 Binder 클래스를 ..
앱을 만들다 보면 인텐트를 통해 단순히 String, int, boolean 같은 기본 타입 뿐 아니고 커스텀 클래스나 오브젝트를 다른 컴포넌트에 전달해 줘야 할 경우가 많다. 그 경우 단순히 그냥 인텐트에 putExtra() 로는 넣어줄 수가 없다. 안드로이드에서는 그런 경우를 위해 자바의 Serialization 개념과 유사한 Parcelable이라는 클래스가 있다. 먼저 이런것이 왜 필요한가 살펴보겠다. 예를 들어 다음과 같은 클래스가 있다고 하자. public class BookData { int _id; String title; String author; String publisher; int price; } 도서관리 앱에서 ListView로 화면에 표시하기 위해 ArrayList에 책들의 정보..
내가 만든 객체를 IPC를 통해 전달하려면 Parcelable Interface 를 implement 해야한다. 내가 만든 클래스가 class ProcessPrivacyInfo { String processName; byte accessInfo; } 라고 한다면 수정된 클래스는 Parcelable의 두가지 메소드 와 한가지 필드 int describeContents() void writeToParcel(Parcel dest, int flags) public static final Parcelable.Creator CREATOR 를 선언해야 한다. 수정하면 아래와 같다. import android.os.Parcel; import android.os.Parcelable; class ProcessPrivacy..
한 프로세스에서의 프로세스간 통신은 쉬운 것이므로 설명은 생략하고 외부 프로세스간 통신시에 사용하는 방법을 설명코자 합니다. aidl은 스텁코드를 만들고자 만드는 것이고, 스텁코드는 공유하려는 대상을 바이트로 바꿔 외부에 공개해 주는 게 주역할입니다. 다음은 프로젝트의 트리 구조입니다. 우선, AIDL의 실 구현부(서버단)과 그 구현을 사용하는 클라이언트를 만들어 보겠습니다. 1. 서버단 a) 해당 프로젝트->src 에ICalc.aidl 을 만듭니다.(이 때 패키지명 추가하고 그곳에 aidl을 넣습니다.) 패키지명과 현재 aidl의 패키지명을 같게 넣지 않으면 후에 에러가 떨어집니다. package com.android.aidldemo.aidl; interface ICalc{ int Add(in int ..
안드로이드 JNI 영역에서 printf 를 사용해봤자 쓰이지도 않고 해서 찾아낸것이 안드로이드 어플처럼 LOG를 사용하는 거~ !! 답답함은 조금 줄어듬.. #include 를 포함해야하고~ log.h를 살펴보면 __android_log_print(LOG_LEV, _TAG, ...); 형태로 되어있는데 ~ 어플의 Log.i 이런것들 쓰다가 쓸려면 돌아버리죠~ 그래서 #define LOGV(...) __android_log_print(ANDROID_LOG_VERBOSE, "libnav", __VA_ARGS__) #define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG , "libnav", __VA_ARGS__) #define LOGI(...) __android_l..