본문 바로가기

개발 이야기

(31)
Jetpack Compose 초보자 가이드 Jetpack Compose는 Android UI를 구축하는 데 사용할 수 있는 최신 선언적 UI 툴킷입니다.  기존의 XML 기반 UI보다 간결하고 강력하며, 코드를 사용하여 UI를 선언적으로 정의할 수 있습니다.이번 가이드에서는 초보자를 위한 Jetpack Compose 학습의 첫걸음을 소개합니다.  아래는 Jetpack Compose의 주요 개념을 설명하고, 샘플 코드를 분석하며 학습할 포인트를 제공합니다.  1. Jetpack Compose의 기본 개념선언적 UI란?Jetpack Compose는 선언적 방식으로 UI를 작성합니다. 즉, UI의 상태(state)에 따라 UI를 선언적으로 정의합니다.  XML 기반 UI와는 달리, UI와 데이터가 동기화되도록 간결하게 코드를 작성할 수 있습니다. 예:..
Android DataBinding과 ViewModel 적용하기 DataBinding이란?DataBinding은 Android에서 제공하는 라이브러리로, XML 레이아웃 파일에서 UI 구성요소를 직접 코드에서 참조하지 않고도 데이터와 UI를 연결할 수 있는 기능을 제공합니다. 이를 통해 코드의 가독성을 높이고, 유지보수를 쉽게 할 수 있습니다. DataBinding의 주요 장점코드 간소화: findViewById() 호출을 제거.양방향 데이터 바인딩: 데이터와 UI 간의 동기화를 쉽게 구현.타입 안전성: 컴파일 타임에 레이아웃 요소와 바인딩이 검증.MVVM 패턴 지원: ViewModel과의 결합이 자연스러움.ViewModel이란?ViewModel은 Android Architecture Components 중 하나로, UI 관련 데이터를 저장하고 관리하는 데 사용됩니다..
Fragment 효율적인 코딩 방법에 대한 정리 안녕하세요? 사진찍는 개발자입니다.효율적인 Fragment 셋팅은 어떤 것이 있을까 조사하고 최적환 결과를 작성해 봅니다.   UI 초기화 및 Handler 설정 @Overridepublic void onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // UI 초기화 (레이아웃 인플레이션) View view = inflater.inflate(R.layout.fragment_layout, container, false); // UI 컴포넌트 바인딩 recyclerView = view.findViewById(R.id.recyclerView); return vie..
Java8 Stream API 찍먹하기 안녕하세요? 사진찍는 개발자입니다.저번에 이어 JAVA8 Stream API 에 대해 추가적으로 조사한 내용 포스팅합니다. Java Stream API는 자바 8에서 도입된 강력한 기능으로, 데이터 처리의 효율성을 높여줍니다.이 API를 통해 우리는 배열이나 컬렉션을 쉽게 다룰 수 있으며, 다양한 연산을 통해 원하는 결과를 얻을 수 있습니다. 이번 포스팅에서는 Java Stream API의 기본 개념과 함께 고급 기능들을 살펴보겠습니다.  Java Stream API 개요 Java Stream API는 데이터의 흐름을 다루는 기능으로, 함수형 프로그래밍의 개념을 도입하여 데이터를 처리하는 방식을 혁신적으로 변화시켰습니다. 스트림은 데이터 소스(예: 컬렉션, 배열)에서 데이터를 추출하고, 다양한 연산을 통..
Android RecyclerView를 이용한 페이징 기법정리 Room 사용을 배제한 rawQuery()를 이용하여 SQL을 직접 작성해서 사용하는 방식으로 코드 구현한 내용을 정리해 봅니다.옛날 프로젝트는 이런 환경에서 개발했기 때문에 별도 정리해 봅니다. 1. SQLiteOpenHelper 설정먼저, SQLiteOpenHelper 클래스를 설정합니다.import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;public class MyDatabaseHelper extends SQLiteOpenHelper { private static final String DATABASE_NAME = "myda..
Android App 개발에 많이 사용하는 디자인패턴 Android에서 많이 사용하는 디자인 패턴에 대해 조사를 해 봤다.요즘 이직한 회사에서 Java로 개발해야 타업체 호환성이 좋다고 해서 예제코드 준비는 둘 다!! Android 앱 개발에서 널리 사용되는 디자인 패턴들은 다음과 같습니다: Model-View-Presenter (MVP) 패턴이 패턴은 뷰, 모델, 프레젠터 간의 책임을 명확하게 분리합니다.프레젠터는 뷰와 모델 사이의 중간자 역할을 하며, 뷰는 프레젠터의 구현 세부 사항을 모르게 됩니다.이를 통해 테스트 가능성이 높아지고 코드 유지보수가 용이해집니다.Java 예제:// View 인터페이스public interface MainView { void showData(String data);}// Presenter 클래스public class..
Android | Java | 특정 소수점까지 잘라서 계산 후 반올림 하기 요구사항 56.4345 값을 소수점 소수점 2자리까지 버린 후 남은 2자리에서 반올림해서 정수값으로 표시하고 싶다. 솔루션 Java에서 해당 요구사항 만족을 위해 제공하는 함수가 있을 거라 생각하고 조사해 봤다. 아주 편안한 클래스가 이미 존재하고 있더라. 이상한 함수와 알고리즘으로 만들지 말고 제공되는걸로 검증된 코드결과물을 사용해보자. BigDecimal bd = new BigDecimal("56.4345"); bd = bd.setScale(2, RoundingMode.HALF_UP); int result = bd.intValue();
Android | 앱 화면 구성 중에 DB에서 Data 읽어올때 코딩 가이드 안드로이드 앱 개발 시 onCreate() 에서 DB를 UI Thread에서 읽어온 후 화면구성하는 코드가 많아 Work Thread에서 데이터 가공 및 화면갱신하는 코드 기초가이드를 작성해 보겠습니다. 1. Handler 와 Threa 를 이용한 코딩 Thread를 통해 DB 가져오는 작업을 한 후에 실제 ListView adapter 갱신 부는 Handler 를 통해 UI Thread 상 업데이트를 실행하는 코드로 사용자가 back-key 를 입력해서 강제 종료 시 해당 DB가져오는 쓰레드도 종료하게 처리함. public class MyFragment extends Fragment { private ListView listView; private MyAdapter adapter; private Han..
Android | 스마트폰 설치한 앱의 APK 추출방법 안드로이드 단말기에 설치된 앱의 APK 파일을 추출하는 방법은 여러 가지가 있습니다. 여기서는 ADB(Android Debug Bridge)를 사용하는 방법에 대해 설명드리겠습니다. 먼저, 개발용 컴퓨터에 ADB가 설치되어 있는지 확인해야 합니다. 안드로이드 스튜디오를 설치했다면 ADB는 이미 설치되어 있을 것입니다. 터미널 또는 명령 프롬프트를 열고 아래의 명령어를 입력하여 설치된 앱의 패키지 이름을 찾습니다. 이 명령어는 단말기에 설치된 모든 앱의 패키지 이름을 출력합니다. 원하는 앱의 패키지 이름을 찾아 기억해둡니다. adb shell pm list packages 다음으로, 아래의 명령어를 입력하여 원하는 앱의 설치 경로를 찾습니다. 여기서 your.package.name은 앞서 찾은 패키지 이름..
JAVA | Stream 에 대해 궁금점 정리 안녕하세요? 사진찍는 개발자입니다.궁금했던 Java8 의 Stream 에 대해 정리한 내용 포스팅합니다.  Java 8에 추가된 스트림(Stream) API는 데이터를 더 선언적, 간결하고 가독성 있는 방식으로 처리할 수 있게 도와줍니다.  이는 대량의 데이터를 효율적으로 처리하는 데 유용하며, 병렬처리도 지원하여 성능 향상을 도모할 수 있습니다.스트림 API 사용의 주요 이점은 다음과 같습니다: 읽기 쉬운 코드: 스트림은 함수형 프로그래밍 패러다임을 따르므로, 코드가 더욱 읽기 쉽고 이해하기 쉬워집니다.효율적인 데이터 처리: 스트림은 '게으른 연산'을 지원합니다. 즉, 필요한 시점에서만 연산이 수행되므로 메모리 사용량과 계산 비용을 절약할 수 있습니다.병렬처리 가능: 스트림은 병렬처리를 지원하여 멀티코..
Android | BLE / BEACON 지원여부 체크 안드로이드 앱에서 BLE 지원여부를 확인하여 해당 기능 활성/비활성 시 사용할 코드를 작성. 참고용으로 실제 동작여부 확인 후 사용바랍니다. 1. BLE 지원여부 확인하기 For Java import android.content.Context import android.content.pm.PackageManager import android.os.Bundle import android.widget.Toast import androidx.appcompat.app.AppCompatActivity class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInst..
JAVA ByteBuffer 궁금점 정리 ByteBuffer 정의 ByteBuffer는 Java에서 바이트 배열에 대한 뷰를 제공하며, 바이트 배열의 데이터를 효과적으로 읽고 쓸 수 있는 메서드를 제공합니다. ByteBuffer는 주로 다음과 같은 상황에서 사용됩니다: 파일 I/O: ByteBuffer는 파일에서 데이터를 읽거나 파일에 데이터를 쓸 때 사용됩니다. 이 경우 FileChannel과 함께 사용되며, ByteBuffer가 파일로부터 데이터를 읽어오거나 파일에 데이터를 쓰게 됩니다. 소켓 네트워킹: 소켓을 통해 네트워크로부터 데이터를 받아오거나 네트워크로 데이터를 보낼 때도 ByteBuffer가 사용됩니다. 이 경우 SocketChannel과 함께 사용되며, ByteBuffer가 소켓으로부터 데이터를 읽어오거나 소켓에 데이터를 쓰게 됩..
[Android] Leak Canary를 이용하여 메모리 누수개선방안 LeakCanary는 앱에서 메모리 누수를 감지해주는 라이브러리입니다. 안드로이드 앱에서 LeakCanary를 사용하여 메모리 누수를 찾는 방법을 설명하겠습니다. 1. LeakCanary 추가 앱 프로젝트의 build.gradle 파일에 LeakCanary 종속성을 추가합니다. 새로운 버전의 LeakCanary가 존재할 수 있으므로, LeakCanary GitHub 저장소에서 최신 버전을 확인하세요. dependencies { // LeakCanary 종속성 추가 debugImplementation 'com.squareup.leakcanary:leakcanary-android:{latest-version}' } 2. LeakCanary 초기화 Application 클래스를 만들고 여기서 LeakCanar..
Android | Camera 로 부터 들어온 영상편집 onPreviewFrame() 콜백 함수에서 왼쪽 및 오른쪽 테두리 부분(넓이 10픽셀, 높이는 영상 크기와 동일)을 자르는 코드는 아래와 같습니다. 코드를 작성하기 전에 YUV 데이터에 대한 이해가 중요합니다. 일반적인 카메라 데이터는 YUV420 color space 포맷으로 도착하며, 이 데이터를 처리하려면 해당 포맷에 대한 처리를 수행해야 합니다. import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Rect; import android.hardware.Camera; import android.hardware.Camera.PreviewCallback; import java.nio.B..