개발

activity > service 만 통신을 하다가 service > activity 로 결과파일을 받고자 할 때 aidl 을 거쳐서 받는 방법을 서술하겠습니다 Activitiy 는 socketManager 이고 Service 는 CGService 입니다 개요는 .aidl 에 callback interface, startTask 메소드 추가 socketManager 의 ServiceConnection 부분에 binder.startTask 추가 socketManager 에 asBinder, onResult 메소드 추가 CGService 의 ICGService.Stub 에 startTask 추가 정도가 있습니다. .aidl 에 callback interface, startTask 메소드 추가 // ICGSe..
· 개발/Java
int 에 두개 숫자를 넣기 한 int 에 두개 숫자를 넣어 보낼 필요가 생겼습니다 int 는 4byte, 32byte 이므로 16byte 씩 2개로 나눈다면 65536 이내의 숫자라면 2개는 넉넉히 보낼 수 있습니다. 하지만 난 한 숫자가 50만이 넘어가는 경우였기 때문에, 8byte 와 24byte 로 나누어서 보내야 합니다. bitwise operator bitwise operator 를 이해할 필요가 있습니다. 위 그림은 char, 1byte, 8bit 를 기준으로 했습니다. 메모리 크기는 그대로인데, 비트 array 를 화살표 방향으로 옮긴다고 생각하면 편합니다. encoding encoding 하는 부분은 다음과 같습니다. startActivityForResult(i, cmdMsgIdEncod..
· 개발/Java
간략한 코드는 다음과 같습니다 bytetohex byte[] bytes = new java.math.BigInteger(hexText, 16).toByteArray(); hextobyte new java.math.BigInteger(hexByte).toString(16); 그런데 이렇게하면 추가시 00이 더해지는 에러가 발생할 수도 있기 때문에 big integer 나오기 전에 하던 방식도 추가해 두겠습니다 bytetohex final protected static char[] hexArray = "0123456789ABCDEF".toCharArray(); public static String bytesToHex(byte[] bytes) { char[] hexChars = new char[bytes.le..
android 에서 통신하는 방법 android 에서 통신하는 방법은 크게 3가지가 있다 intent handler aidl 이중 intent 로 통신하는 것은 activity 간 통신하는 것으로 가장 간단하고 기본적인 방식이다. intent 통신 특징 intent 통신 특징은 포그라운드에서 진행되기 때문에 항상 Main Thread 에서 동작해야만 한다는 단점이 있다. 백그라운드에서 데이터를 주고받고 싶다면 aidl 혹은 socket 혹은 handler 를 이용해야만 한다. intent 통신 절차 Mainactivity 에서 진행 1. intent 를 선언해준다. 첫번째엔 보낼 activity class, 두번째에는 수신받는 activity class 를 설정한다 Intent myIntent = new..
· 개발/Java
일반적으로 thread 를 실행하는 방법 일반적으로 thread 를 실행하는 방법은 다음과 같다 final static int AAV_GET_MSG_BUFFER_MAX = 301; int mySend(String msg) { final int[] r = new int[1]; r[0] = 0; Thread th = new Thread(new Runnable() { @Override public void run() { CGMessage cgMsg = new CGMessage(7); cgMsg.setMsgStatus(AAV_CG_MSG_START_END); cgMsg.setOut(getConnectedOutStream()); cgMsg.setIn(getConnectedInStream()); r[0] = cgM..
Aidl 로 class 옮기기 크게 보내는 함수 .aidl 생성 보내는 함수 .java 를 parcelable 로 implement 전송하는 .aidl 에 임포트 및 in 추가 정도로 정리할 수 있다. CGMessage.aidl (보내고자 하는 클래스) 우선 해당하는 Class 를 aidl 로 만들어야 한다 // CGMessage.aidl package com.ahope.test_ga; // Declare any non-default types here with import statements import com.ahope.test_ga.CGMessage; parcelable CGMessage; 단, 이때는 인터페이스를 의미하는 I 를 앞에 붙이면 안된다. CGMessage.java 보내고자 하는 cla..
PackageManager 란 앱 관리를 담당하는 시스템 서비스입니다. 설치된 앱에 대한 정보를 쿼리할 뿐만 아니라 앱을 설치, 업데이트 및 제거하기 위한 프레임워크를 제공합니다. PackageManager는 시스템 패키지 및 타사 응용 프로그램을 포함하여 장치에 설치된 모든 패키지의 데이터베이스를 유지하고 업데이트를 관리하며 패키지 간의 종속성이 충족되는지를 확인합니다. 패키지 설치 및 제거: PackageManager를 사용하여 Android 장치에서 패키지를 설치 및 제거할 수 있습니다. 이것은 PackageManager API를 사용하거나 장치의 설정 메뉴를 통해 프로그래밍 방식으로 수행할 수 있습니다. 패키지에 대한 정보 쿼리: PackageManager는 버전 번호, 패키지 이름 및 권한을 포..
activity 를 intent 로 실행 activity 를 intent 로 실행하는데는 두개 함수가 존재한다. startActivity startActivityForResult 차이는 startActivity 이벤트형식으로 실행만 시키고 끝나는가, startActivityForResult 는 실행을 시킨 다음에 실행시킨 activity 와 상호작용을 하는가로 나뉜다. startActivity 는 그래서 activity 를 실행할때보다는 intent 를 실행해 원하는 데이터를 보낼때 사용한다. 이때 intent.putExtra 와 intent.getStringExtra 를 함께 사용한다 startActivity public void startActivity(new Intent(MainActivity.th..
sharedpreference 란 SharedPreferences는 소량의 데이터를 키-값 쌍으로 저장하고 검색할 수 있는 Android API입니다. 사용자 설정, 사용자 인증 토큰 또는 기타 소량의 데이터와 같은 간단한 사용자 기본 설정을 저장하는 데 자주 사용됩니다. SharedPreferences는 Android 파일 시스템 위에 구축되어 기기의 로컬 파일 시스템에 데이터를 저장합니다. 데이터는 동일한 패키지 내의 여러 applications에서 액세스할 수 있는 XML 파일에 저장됩니다. SharedPreferences 예시 // Get the SharedPreferences object SharedPreferences sharedPref = getSharedPreferences("my_pref..
부팅시 서비스를 구동하게 하기위해선 크게 권한설정, 부팅시 실행될 class, register receiver 로 action등록 이 필요하다. 권한설정 (AndroidManifest.xml) // 부팅 완료 후 호출 두개로 권한을 열어준다. intent filter 는 저 intent 는 저 함수에 들어갈 수 있다는 필터역할. 부팅시 실행될 class (BootReceiver) public class BootReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent){ checkSocketService(context); } public static void checkSocketServ..
Context 란 Android Studio에서 Context는 '맥락' 이라는 의미 그대로 응용프로그램의 현재 상태를 나타냅니다. 또한 데이터베이스, 기본 설정 및 문자열 및 이미지와 같은 정보를 제공합니다. 안드로이드 개발의 기본 개념이며 안드로이드 앱의 많은 부분에서 요구됩니다. Context는 응용 프로그램이 기본 운영 체제와 상호 작용하고 다양한 리소스에 액세스할 수 있도록 하는 Android 시스템의 핸들로 생각할 수도 있습니다. 애플리케이션의 현재 상태를 나타낸다. 액티비티와 어플리케이션의 정보를 얻기 위해 사용할 수 있다. 리소스, 데이터베이스, shared preference 등에 접근하기 위해 사용할 수 있다. 액티비티와 애플리케이션 클래스는 Context 클래스를 확장한 클래스이다. ..
IPC 란 IPC는 프로세스 간 통신(Inter-Process Communication)의 약자로, 컴퓨터 시스템에서 여러 프로세스가 서로 통신할 수 있도록 하는 방법과 메커니즘을 의미한다. IPC를 통해 서로 다른 프로세스가 정보를 공유하고, 활동을 동기화하며, 운영을 조정하여 공통의 목표를 달성할 수 있습니다. IPC 방법 공유 메모리: 프로세스는 메모리의 일부를 공유할 수 있으므로 동일한 메모리 위치에 읽고 쓰는 방식으로 정보를 교환할 수 있습니다. 메시지 전달: 프로세스는 통신 채널을 통해 메시지를 주고받음으로써 통신할 수 있습니다. 파이프 및 FIFO: 프로세스는 공통 파일 설명자에 쓰고 읽음으로써 통신할 수 있습니다. 소켓: 프로세스는 서로 다른 컴퓨터 간의 통신을 위한 표준 인터페이스를 제공..
yeonlee
'개발' 카테고리의 글 목록