본문 바로가기

전체 글1475

[Java][Android] Dialog 외부 터치 시 닫히지 않게 하기 안녕하세요.오늘은 Dialog 외부 터치 시 닫히지 않게 해보도록 하겠습니다. 안드로이드의 Dialog는 기본적으로 외부를 터치하면 자동으로 닫히는 동작을 합니다.그러나 중요한 알림이나 경고 문구, 또는 사용자의 명확한 동의를 받아야 하는 안내사항의 경우, 반드시 버튼을 클릭해야 넘어가도록 구현할 필요가 있습니다.이럴 때 외부 터치로 다이얼로그가 닫히지 않게 설정하면, 보다 안전하고 명확한 사용자 경험을 제공할 수 있습니다. 우선 전체 코드입니다. activity_main.xml MainActivity.javapublic class MainActivity extends AppCompatActivity { private Button btnShowDialog; private AlertDialog cu.. 2025. 4. 29.
[JAVA] java.nio.file을 사용한 간단한 메모장 만들기 java.nio.file 패키지를 사용한 모던 자바 파일 입출력(I/O) 방법과 사용자 입력을 처리하는 간단한 메모장을 만들어 보겠습니다. 언제 사용하면 좋을까요? 1. 설정 파일 또는 데이터 초안 생성: 사용자가 입력한 특정 키 값(첫 줄)을 파일 이름으로 하고 나머지 내용을 값으로 하는 설정 파일(.txt, .properties 등)의 초안을 만드는 데 활용할 수 있습니다.2. 사용자 생성 콘텐츠 저장: 사용자가 게시글 제목과 내용을 입력하면, 제목을 기반으로 파일 이름을 만들어 저장하는 간단한 시스템의 로직을 이해하는 데 도움이 됩니다. java.nio.file 장점1. 직관적인 API: Path 객체로 파일/디렉토리 경로를 명확하게 표현하고, Files 유틸리티 클래스로 다양한 파일 관련 작업을.. 2025. 4. 28.
[Java][Android] FLAG_SECURE 플래그로 스크린샷/화면 녹화 방지 안녕하세요, 오늘은 FLAG_SECURE 플래그를 사용해서 간단하게 스크린샷/화면 녹화 방지를 해보도록 하겠습니다. WindowManager.LayoutParams.FLAG_SECURE 플래그는 앱 화면이 스크린샷, 화면 녹화, 미러링 등에 노출되지 않도록 막아줍니다. 아래 예제는 안드로이드 스튜디오 에뮬레이터에서 적용되지 않으며,기기에서 테스트해야 확인할 수 있습니다. MainActivity.javapublic class MainActivity extends AppCompatActivity { private boolean isSecureEnabled = false; private Button toggleSecureButton; @Override protected void .. 2025. 4. 27.
[Java][Android] livedata 활용 예시 만들기 오늘은 livedata를 활용해 액티비티가 활성화 상태일때만 livedata의 콜백이 호출되는지 확인하는 예시를 만들어 보겠습니다. 레이아웃 xml 파일 코드(activity_main.xml) 액티비티 자바 코드public class MainActivity extends AppCompatActivity { private static final String TAG = "LiveData"; //로그 필터링을 위한 값 // 정수형 값을 관찰할 수 있는 LiveData 객체 private MutableLiveData counterLiveData = new MutableLiveData(); private Handler handler = new Handler(Looper.getMai.. 2025. 4. 25.
[JAVA] 사용자 정의 예외 만들기 안녕하세요.오늘은 사용자 정의 예외를 만들어보겠습니다. 1. Checked 예외와 Unchecked 예외의 차이와 특징(1) Checked 예외 (체크드 예외)컴파일러가 예외 처리를 강제합니다.예외가 발생할 수 있는 코드를 사용할 때, 반드시 try-catch로 처리하거나 throws로 선언해야 합니다.주로 외부 환경(파일 입출력, 네트워크, 데이터베이스 등)과 관련된 예외입니다.예시: IOException, SQLExceptiontry { FileReader fr = new FileReader("test.txt");} catch (FileNotFoundException e) { System.out.println("파일이 없습니다!");} (2) Unchecked 예외 (언체크드 예외)컴파일러.. 2025. 4. 24.
[Java] HttpClient 사용해서 OpenAI GPT API 호출하기 안녕하세요 오늘은 OpenAI 에서 제공하는 API 를 호출해보도록 하겠습니다. OpenAI의 GPT 시리즈는 대표적인 LLM 중 하나이며, 우리는 OpenAI에서 제공하는 API를 통해 이 모델에 직접 질문을 보내고 응답을 받아보겠습니다. 즉, “프롬프트”라는 입력을 전달하고, 모델이 생성하는 자연어 응답을 받아볼 수 있습니다. LLM(Large Language Model, 대규모 언어 모델) 이란 말그대로 "엄청 큰 언어 모델" 입니다.수십억 개 이상의 단어, 문장, 문서를 학습해서 사람처럼 문장을 이해하고 생성하는 인공지능을 의미합니다. 1. 먼저 open ai 홈페이지에서 API 인증 키를 발급 받습니다. 2. Http 통신 (HttpClient) 으로 오픈 AI 의 서버에 요청.. 2025. 4. 23.
[Java][Android] Lottie 라이브러리 활용해 애니메이션 기능 구현하기 안녕하세요오늘은 Lottie 라이브러리로 애니메이션 기능을 구현해보도록 하겠습니다.Lottie는 애니메이션을 JSON 형식으로 앱에서 재생할 수 있도록 해주는 도구입니다. https://lottiefiles.com 에서 마음에 드는 .json 애니메이션 파일을 다운로드 해주시고 이름을 animation.json 으로 변경해준 뒤에,(*이름을 꼭 animation으로 할 필요는 없지만 이번 포스팅에서는 animation을 사용하겠습니다.)해당 json 파일을 res/raw/ 폴더에 저장해주시면 됩니다.(*raw 폴더가 없으면 만들어주세요.) 그리고 build.gradle.kts (Module :app) 에implementation ("com.airbnb.android:lottie:6.0.0")로티 라이브.. 2025. 4. 22.
[Java][Android] 안드로이드 Java로 유튜브 검색 구현하기 안녕하세요 youtube API를 사용해서 유튜브 검색을 하는 방법을 알아보도록 하겠습니다. https://stickode.tistory.com/331 [JAVA][Android] Youtube API 사용법이번에는 유튜브 API 를 사용해보겠습니다. https://stickode.com/detail.html?no=2714 스틱코드 stickode.com 위의 포스트를 즐겨찾기 하시면 'Activity_Youtube.java' 를 입력하여, 해당 코드를 사용할 수 있습니다. 1.stickode.tistory.comAPI 발급 방법입니다. 참고하시길 바랍니다. build.gradle 파일에 다음의 depencies를 추가해주세요.implementation 'com.squareup.retrofit2:retr.. 2025. 4. 21.
[Java][Android] SpannableString 와 ImageSpan으로 TextView에 아이콘 넣기 안녕하세요, 오늘은 SpannableString 와 ImageSpan을 사용하여 텍스트에 아이콘(이미지)를 삽입하는 예제를 만들어보겠습니다. MainActivity.javapublic class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView textView = findViewById(R.id.textView); // 1. 텍스트 준비 (앞에 공백 포함).. 2025. 4. 20.