본문 바로가기

전체 글110

[Open Source] AudioTrack 소개 및 PCM 파일 재생 시작 AudioTrack은 PCM 데이터를 이용해 실시간 오디오 재생이 가능하도록 하는 Android API입니다. 앱의 메모리에서 직접 오디오를 재생할 수 있는 방법 중 하나이기에 실시간 오디오 처리가 필요한 앱에 적합한 API라고 할 수 있습니다. PCM 파일 재생을 위해선 녹음 기능이 필요하기 때문에 이전 PCM 파일로 녹음하기 게시물을 진행하시고 오셔야 이해가 편합니다. AudioTrack이란? AudioTrack은 Object 클래스를 상속 받고 있으며 AudioRouting, VolumeAutomation 을 구현하고 있습니다. AudioTrack은 자바 응용프로그램에 대한 단일 오디오 리소스를 관리하고 재생합니다. 재생을 위해 PCM 오디오 버퍼를 오디오 싱크로 스트리밍할 수 있습니다. 이것.. 2023. 7. 26.
[Android] 화면 회전 시 onConfigurationChanged 호출 시작 아무런 설정 값 없이 안드로이드에서 화면을 회전하면 보통 destroy 후 다시 create를 하는 방식으로 진행 된다. 이 때, 기존에 설정했던 값들이 모두 초기화 되어 문제가 발생하게 되는데, 해결 방법은 아래와 같다. onSaveInstanceState(@NonNull Bundle outState) 를 이용해 onCreate에서 저장한 값을 다시 불러온다. AndroidManifest.xml에 configChanges 속성을 추가한다. 이번 게시물에서는 2 번의 방법에 대해 정리하려 한다. configChanges 속성 추가하기 configChanges의 속성 중에서 화면 회전에 관련된 속성은 orientation과 screenSize가 있다. orientation 화면 방향이 변경되었습니다... 2023. 7. 24.
[Git] Git remote url 수정 방법 remote add 중 url을 잘못 입력한 경우 url을 원격 저장소와 맞게 수정해야 한다. 이 때, 수정 할 수 있는 방법은 2 가지가 있는데, 하나는 Git 명령어로 수정하는 것이고 다른 하나는 로컬 저장소 git 설정 파일을 수정하는 방법이다. 시작 먼저 자신의 원격 저장소의 url을 확인하자. 1. Git 명령어로 수정 git remote set-url origin 주소 이때, 원격 저장소 이름인 origin 을 주소 앞에 붙혀줘야 한다. 2. 로컬 저장소 Git 설정 파일을 수정 vim 또는 gedit과 같은 텍스트 편집 툴로 .git/config 파일을 실행 시키면 아래처럼 나온다. url 부분에서 잘못된 부분을 수정해주면 된다. 2023. 7. 21.
[Algorithm] 2020 KAKAO BLIND RECRUITMENT 괄호 변환 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/60058 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내가 제출한 코드 및 풀이 class Solution { public static String solution(String p) { return repeat(p); } public static String repeat(String p){ if(p.isBlank()) { return ""; } StringBuilder sb = new StringBuilder(); String result.. 2023. 7. 20.
[Algorithm] 월간 코드 챌린지 시즌3 >> 나머지가 1이 되는 수 찾기 문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내가 제출한 코드 class Solution { public int solution(int n) { if(n==1) return 1; else { int divide = 2; while(divide < n){ if(n % divide == 1) break; else divide++; } return divide; } } } 설명은 따로 안 해도 될 것 같다. 결과 2023. 7. 20.
[Algorithm] 스택/큐 같은 숫자는 싫어 문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내가 제출한 코드 import java.util.*; public class Solution { public int[] solution(int []arr) { int[] answer = {}; Stack stack = new Stack(); for(int number : arr){ if(stack.size()!=0 && stack.peek() == number) continue; stack.push(number); } answer = new int[stack.size()]; for(int i = a.. 2023. 7. 20.
[Android] Window에서 LogFilter 사용 하기 LogFilter 소개 LogFilter는 Android Device의 Log 분석 툴로 특정 문자를 이용한 필터링이나 로그 타입에 따른 필터 등 등 여러 가지 필터링 기능을 제공하고 있다. LogFilter의 버전은 매우 많기 때문에 구글링 후 본인이 사용하고 싶은 버전을 사용하면 된다. 여기서 사용할 버전은 1.8 버전이며 설치 환경은 Windows로 설명할 예정이다. LogFilter 설치 먼저 첨부된 파일을 다운 받는다. LogFilter를 사용하기 위해선 ADB 환경 변수 필요하며 platform-tools를 다운로드하여야 한다. 만약 Android Studio를 다운로드하였으면 android_studio 디렉터리 안에 platform-tools가 있다. 그렇지 않은 경우는 아래 경로에서 다운로.. 2023. 7. 20.
[Android] ExecutorService를 이용해 AsyncTask 대체하기 개요 Wallpaper를 자동으로 적용시켜야 하는 작업을 하게 되었다. 시나리오는 아래와 같다. 적용할 Wallpaper를 전달 Wallpaper가 전달되는 동안 Loading 화면을 보여줌 세팅이 끝나면 Loading 화면을 닫고 설정이 완료되었다는 것을 유저에게 인지 시킴 위 시나리오처럼 동기 처리가 필요하기 때문에 AsnycTask를 사용하면 그렇게 어렵지 않게 작업할 수 있었지만 이미 deprecated 된 AsyncTask 클래스를 쓴다는 게 조금 찝찝해 ExecutorService와 Handler, Callable를 이용해 구현해 보았다. 코드 AutoSetWallpaperRunner 클래스는 ExecutorService로 Callable클래스를 호출하고 콜백 해줄 클래스다. class Aut.. 2023. 7. 20.
[Android] Open Source Library 표시하기 시작 기본적으로 앱을 배포하려면 오픈 소스 라이브러리를 표시해줘야 하는데, 이 부분을 직접 해주려면 꽤나 귀찮아진다. 때문에 Google에서 친절하게 play-services-plugins 라이브러리를 만들어 줬다. https://github.com/google/play-services-plugins/tree/master/oss-licenses-plugin gradle에 등록 먼저 라이브러리를 프로젝트에 등록해줘야 한다. build.gradle(Project)에 다음과 같이 classpath를 추가한다. 가장 최신 버전은 0.10.6인데 이걸 가져오면 release 버전이 아니라면 확인할 수 없다. 따라서 debug 버전이라면 0.10.4로 테스트해보자. classpath "com.google.andro.. 2023. 7. 20.