안드로이드 192

[Android] 인앱 개발에 대해 알아보자 (실전)

Android 인앱 개발에 대해 알아보자 인앱 실전!! 1. SDK/extras/google/play_billing/IInAppBillingService.aidl -aidl파일 복사 2. SDK/extras/google/play_billing/samples/TrivialDrive/src/com/example/android/trivialdrivesample/util -util파일 복사 3. 복사 폴더위치 프로젝트/apps/src/main/aidl/com/android/vending/billing/IInAppBillingService.aidl 프로젝트/apps/src/main/java/com/yj/consulting/inapp/(util파일들) 4. AndoridManifest.xml 수정 5. Applic..

안드로이드 2022.10.20

[Android] 인앱 결제(inapp billing) 순서

Android 인앱 결제(inapp billing) 순서 1. 구글 인앱 빌링 라이브러리 설치 및 임포트 2. aidl, util부분 가져온다. 3. 매니페트스트 수정 - -V2에 비해 AndroidManifest.xml이 쉬워졌습니다. 위와같이 빌링 관련된 권한만 추가해주면 됩니다. 4. 인앱 빌링 초기화 및 인벤토리 요청 static final int RC_REQUEST = 1001//IabHelper용 콜백 결과를 구분하기 위한 상수 private IabHelper mHelper; /* strPublicKey는 구글 개발자 콘솔 -> 출시 앱 선택 -> 서비스 및 API -> 라이선스 및 인앱 결제 라이선스 키를 사용하여 앱의 무단 배포를 방지할 수 있습니다. 이 키를 사용하여 인앱 결제로 구매한 ..

안드로이드 2022.10.20

[Android] 문자 보내기 (SEND_SMS)

문자보내기 EX) 1.Manifest 2.브로드캐스트 리시버 등록 3.브로드캐스트 @Override public void onReceive(Context mContext, Intent intent) { String action = intent.getAction(); if("android.provider.Telephony.SMS_RECEIVED".equals(action)){ /** * SMS메세지 파싱 */ Bundle bundle = intent.getExtras(); Object messages[] = (Object[])bundle.get("pdus"); SmsMessage smsMessage[] = new SmsMessage[messages.length]; for(int i = 0; i < mess..

안드로이드 2022.10.20

[Android] 네비게이션(Navigation)에 대해 알아보자

[Android] 네비게이션(Navigation)에 대해 알아보자 # Navigation Component는 왜 등장 했을까? 기존 네비게이션 방식의 어려운 점들 Fragment Transaction(Lifecycle Dancing) 상황마다 목적지가 다른 Up and Back Action Passing Arguments Deep Links 위의 문제들로 인한 *Error-prone Boilerplate Code Error-prone : 발생하기 쉬운 오류 # 왜 Navigation Component를 쓸까? 우선 Navigation Component를 사용하면 여러 화면 (Fragment)를 하나의 Activity로 묶어서 그래프라는 개념으로 관리하게 된다. (Single Activity - Multi..

안드로이드 2022.09.22

Stack vs Heap

스택 VS 힙 # 메모리 구조 프로그램이 실행되기 위해서는 먼저 프로그램이 메모리에 로드되어야 한다. 또한, 프로그램에서 사용되는 변수들을 저장할 메모리도 필요하다. 따라서 컴퓨터의 운영체제는 프로그램의 실행을 위해 다양한 메모리 공간을 제공한다. 프로그램이 운영체제로부터 할당받는 대표적인 메모리 공간 1. 코드(code) 영역 2. 데이터(data) 영역 3. 스택(stack) 영역 4. 힙(heap) 영역 코드(Code) 영역 실행할 프로그램의 코드가 저장되는 영역 cpu는 코드 영역에 저장된 명령어를 하나씩 가져가서 처리한다. 데이터(data) 영역 전역 변수와 정적(static)변수가 저장 프로그램의 시작과 함께 할당되며, 프로그램이 종료 되면 소멸 스택(stack) 영역 함수 호출과 관계되는 지..

안드로이드 2022.09.20

TextView Ellipsize end가 OS낮은 버전에서 많이 줄여질 때

# 문제 저는 안드로이드 OS 8.0이하에서 발생하였습니다. (실제 더 높아도 발생할지도..?) TextView에 ellipsize="end"를 주었고 maxLines="1"을 적용한 상황 해당 텍스트 = "문자열이 길어요길어요길어요길어요길어요" 8.0이하 텍스트뷰 : 문자열이... (나머지는 여백) 뷰크기는 늘어나 있었습니다. 다른 정상 텍스트뷰 : 문자열이 길어요길어요길어요... "길어요길어요길어요길어요길어요" 부분이 띄어쓰기 없이 길다 보니 단어 전체를 말줄임 하는 문제가 발생하였습니다 singleLine="true"로 적용하니 다른 정상 텍스트뷰와 같게 나옴! # 궁금 singleLine은 Deprecated로 되어진 것으로 알고 있는데, 추후에 문제가 없을지..?

안드로이드 2022.09.20

[Kotlin] inline함수 reified키워드

# 람다의 패널티 고차 함수에 람다를 사용할 경우 런타임 시 특정 패널티가 발생한다, 라는 문구로 코틀린의 '인라인 함수' 참조 문서는 시작한다. 람다를 사용하면 각 함수는 객체로 변환되어 메모리 할당과 가상 호출 단계를 거치게 되는데, 이는 런타임 오버헤드를 초래한다는 것이다. # inline function 인라인(inline) 키워드는 자바에서는 제공하지 않는 코틀린만의 키워드입니다. 람다를 매개 변수로 사용하는 고차 함수를 '인라인 함수(Inline Function)'로 정의하여 오버 헤드를 줄일 수 있는 방법을 제공하고 있다. 인라인 함수로 정의된 함수는 컴파일 단계에서 호출하는 방식이 아니라 코드 자체가 복사되는 방식으로 컴파일 된다. # 람다식을 사용했을 대 무의미한 객체 생성을 예방 인라인..

안드로이드 2022.08.30

[Android] 제네릭(Generic)에 대해 알아 보자

[Android] 제네릭(Generic)에 대해 알아 보자 제네릭 이란? 데이터의 타입을 일반화한다는 것을 의미합니다. 제네릭을 통해 클래스나 메서드에서 사용할 내부 데이터 타입을 컴파일 타임에 미리 지정하는 방법입니다. 제네릭 장점 객체의 타입 안정성 증가 반환값에 대한 타입 변환 및 타입 검사 x 모든 객체에 대한 확장성 런타임 환경에 아무런 영향이 없는 컴파일 시점의 전처리 기술이다 기존의 방식 JDK 1.5 이전에서는 여러 타입을 사용하는 클래스나 메소드에서 인수나 반환값으로 최상위 객체인 Object 타입 을 사용했습니다. : 원하는 타입으로 변환해야 하며, 오류가 발생할 가능성도 존재 제네릭 도입 JDK 1.5부터 도입된 제네릭 컴파일 시에 미리 타입이 정해지므로, 안정성이 증가하고 타입 변환..

안드로이드 2022.08.24