안드로이드 112

안드로이드 - 원격 인터페이스 서비스 사용하기

클라이언트에게 자신의 메소드를 제공하려면 자신의 메소드 목록을 인터페이스로 정의해야 한다. 원격에서 호출되는 메소드는 응용 프로그램의 경계를 넘어서 인수를 전달해야 하는 어려움이 있다. 각 응용 프로그램이 사용하는 메모리가 완전히 분리되어 있어 통산의 방법으로는 인수를 넘기기 어렵다. 소속된 패키지가 다름은 물론이고 응용 프로그램 수준보다 더 아래쪽의 저수준일 수도 있으며 심지어 자바가 아닌 다른 언어일 수도 있다. 따라서 전달할 수 있는 인수의 종류가 자바 기본 타입과 Parcelable 정도로 제한되며 그외에도 몇 가지 제약이 존재한다. 안드로이드는 원격 인터페이스를 정의하는 AIDL이라는 별도의 언어를 제공하며 AIDL 컴파일러가 인터페이스 정의를 구현하는 스텁까지 생성해준다. AIDL소스를 작성하..

안드로이드 - 데몬 백그라운드 서비스

서비스는 백그라운드에서 실행되며 사용자와 직접적인 상호작용을 하지 않는다. 전면에서 사용자를 대면하는 액티비티를 위해 연산이나 메소드 등의 서비스를 제공하는 것이 주된 임무이다. 클라이언트에서 어떤 식으로 호출하는 가에 따라 다음 두 가지 방법이 있다. - 백그라운드 데몬 : 배경에서 계속 실행되는 프로세스이다. 클라이언트가 가동시켜 놓기만 하면 사용자의 명령이 없어도 지속적으로 실행된다. - 원격 호출 인터페이스 : 클라이언트를 위해 특정한 기능을 제공하는 역할을 한다. 자신의 기능을 메소드로 노출시키며 클라이언트는 메소드를 호출함으로써 서비스를 이용한다. 사용 용도에 따라 가장 뚜렷한 차이가 발생하는 부분은 서비스의 생명 주기이다. (출처 : http://ccdev.tistory.com/25) 백그라..

안드로이드 - 동전 이미지를 드래그 해보자

이전 예제(드래그 섀도우 이미지 변경하기) 를 응용하여 동전 이미지를 드래그 해보는 예제를 만들어보자. 이번 예제는 다음과 같이 구성된다. (이미지 파일) dragcoin.xml " DragCoin.java package com.example.ch27_dragcoin; import android.app.Activity; import android.content.ClipData; import android.graphics.Canvas; import android.graphics.Point; import android.os.Bundle; import android.view.DragEvent; import android.view.MotionEvent; import android.view.View; import..

안드로이드 - 클립보드를 이용해서 URI 복사하기

이미지나 구조체 같은 복잡한 데이터는 URI를 통해 간접적으로 복사한다. 붙여 넣는 쪽에서는 URI를 먼저 구하고 CP에게 데이터를 요청하여 실제 데이터를 구하는 방시긍ㄹ 쓴다. URI로 데이터를 전달하려면 주는 쪽에서는 이 URI에 반응할 수 있는 CP를 반드시 제공해야 한다. 다음 예제를 실행하려면 콘텐트프로바이더 예제를 먼저 실행 시켜서 insert버튼을 눌러둔다.. 또한 위의 콘텐트프로바이더 예제의 매니페스트 파일에서 다음과 같이 grantUriPermissions를 선언해야 한다. 안그러면 Permission 에러가 발생한다.( 여기 참고) 위와 같이 수정해야 할 것은 3군데이다. 다음은 AndroidManifest.xml 파일이다. 여기서 유의할 점은 ContentProvider를 사용하기위해..

안드로이드 - Content Provider (콘텐트 프로바이더)

1. URI 안드로이드의 보안 정책상 응용 프로그램이 만든 데이터는 기본적으로 혼자만 액세스 가능하다. 자신이 만든 데이터를 외부로 공개할 때는 Content Provider를 제공해야한다. 콘텐트 프로바이더는 응용 프로그램을 구성하는 컴포넌트 중 하나로서 데이터를 제공하는 역할을 한다. URI(Uniform Resource Identifier)는 웹상의 주소를 나타내는 URL보다 더 상위의 개념이다. 국제 표준에 URI를 작성하는 방식은 다음과 같이 명시되어 있다. content://authority/path/id content://는 이 문자열이 URI임을 나타내는 접두이며 무조건 붙여야 한다. authority는 정보 제공자의 명칭이되 중복되면 안 되므로 패키지명을 사용할 것을 권장한다. path는..

안드로이드 - 시스템 클립보드를 활용한 데이터 복사 붙여넣기

클립보드는 임의의 응용 프로그램끼리 데이터를 교환하는 가장 기본적인 방법이다. 이것은 드래그&드롭에 의한 데이터 교환을 위해 범용적인 데이터 포맷을 정의할 필요도 있는데 클립보드 포맷이 그 역할을 맡게 된다. 시스템 클립보드는 운영체제가 관리하는 임시적인 자료 저장소이다. 임의의 프로그램이 클립보드를 자유롭게 액세스 할 수 있으므로 프로그램 내부의 뷰끼리는 물론이고 응용 프로그램끼리도 약속된 방법으로 데이터를 교환할 수 있다. 시스템 클립보드는 다음 4가지 포맷을 지원한다. 1. 텍스트 : 가장 일반적인 교환 대상 2. URI : 복잡한 형태의 데이터는 CP가 제공하며 데이터의 위치를 가리키는 URI를 클립보드에 저장한다. 3. 인텐트 : 앱을 실행하는 명령과 관련 데이터를 클립도르를 통해 전달한다. 액..

안드로이드 - 압축 파일 사용하기

압축 파일 관리 기능은 자바에 의해 언어 차원에서 제공되므로 안드로이드도 별도의 추가 라이브러리 없이 압축 파일을 만들거나 해제할 수 있다. ZipFile 클래스는 파일 기반의 zip 압축 파일을 다루며 압축 파일 내의 임의 파일을 랜덤으로 액세스한다. 다음 두가지 생성자가 있으며 File 객체로부터 생성할 수도 있고 압축 파일의 경로를 주어 열 수도 있다. ZipFile(File file [, int mode]) ZipFile(String name) File 객체로 생성할 때 mode에 OPEN_DELETE를 지정하면 사용 후 자동으로 삭제되므로 임시적으로 압축 파일을 만들어 할용할 수 있다. Enumeration readzip.xml ReadZip.java package com.example.ch25..

[펌자료] 안드로이드 - 액티비티의 상태를 저장 및 복원하는 콜백 메소드 - onSaveInstanceState, onRestoreInstanceState

액티비티는 자신의 상태를 저장하거나 복원하는 것이 가능합니다. 이번 포스트에서는 액티비티의 상태를 저장 및 복원하는 콜백 메소드인 onSaveInstanceState와 onRestoreInstanceState에 대해 알아 봅니다. 액티비티의 상태를 저장함의 의미 액티비티의 상태를 저장한다는 것은 액티비티의 모습과 자료 등을 기기의 저장 장치에 저장함을 의미합니다. 여기에서 상태의 뜻이 resumed, paused, stopped 등과 같은 값들 중 하나를 갖는 변수가 아님에 유의하세요. 액티비티의 상태를 복원함의 의미 종료되지는 않았지만 사용되지 않는 액티비티들은 메모리 부족하면 안드로이드가 강제로 종료 시킵니다. 나중에 사용자가 그것들을 다시 실행할 수 있고, 그것들은 원래의 모습으로 다시 복원됩니다...

안드로이드 - ShareActionProvider를 이용한 앱간 데이터 공유 처리하기

앱이 작성한 문서, 이미지, 동영상 등의 데이터를 SNS나 내부 프로그램과 공유할 때는 ShareActionProvider 클래스를 사용한다. void setShareHistoryFileName(String shareHistoryFile) 위 메소드는 공유 목록을 저장할 파일을 지정한다. 보통 DEFAULT_SHARE_HISTORY_FILE_NAME를 사용하면 된다. void setShareIntent(Intent shareIntent) 공유할 때 사용할 인텐트를 지정한다. 공유 목록에서 항목을 선택하면 해당 서비스로 이 인텐트를 전달한다. 이번 예제는 텍스트 값을 다른 앱에 공유를 해본다. 위와 같이 ShareAction.java와 share_action.xml만 구성한다 res/menu/share_a..

안드로이드 - 액션바의 활용 두번째 액션 프로바이더

액션 프로바이더는 용도상으로 액션 뷰와 유사하지만 더 확장된 버젼이다. ActionProvider클래스를 상속받아 작성하며 필수 메소드 몇가지를 재정의 해야 한다. View onCreateActionView([MenuItem forItem]) 위의 메소드를 재정의하여 액션 뷰를 생성하여 리턴한다. 다음 메소드는 액션 뷰가 아닌 메뉴에 배치된 상태에서 메뉴를 선택할 때 호출된다. boolean onPerformDefaultAction() 메뉴 선택 시 이 메소드보다는 onOptionsItemSelected가 먼저 호출되는데 여기서 항목을 처리하지 않을 경우 onPerformDefaultAction 메소드가 대신 호출된다. 단 서브 메뉴가 있을 경우에는 이 메소드가 호출되지 않음. 이번 예제는 다음과 같이 ..

반응형