전체 글

Kotlin, Android
Android/삽질

Splash Activity 만들기

코드를 먼저 살펴보자. splash activity -> main activity로 실행된다. Handler().postDelayed({ startActivity(Intent(this, MainActivity::class.java)) finish() }, 3000) 처음에 이에 대해서 생각할때는, 화면을 보여준상태에서 타이머를 설정해 인텐트로 다음 액티비티로 넘어가는 방식을 떠올렸다. 그러나 이 방식은 인텐트실행 후 스플래쉬 액티비티를 바로 종료할 수 없는 문제가 있다. 따라서 고전적인 방식인 Handler를 사용해야한다. https://developer.android.com/reference/kotlin/android/os/Handler?hl=en Handler | Android Developers a..

Android/삽질

[버그/오류]Warning: Mapping new ns http://schemas.android.com/repository/android/common/02 to old ns http://schemas.android.com/repository/android/common/01

Warning: Mapping new ns http://schemas.android.com/repository/android/common/02 to old ns http://schemas.android.com/repository/android/common/01 Warning: Mapping new ns http://schemas.android.com/repository/android/generic/02 to old ns http://schemas.android.com/repository/android/generic/01 Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/addon2/02 to old ns http://schemas.a..

Android

로그 찍기 Log.d(), Log.i(), Log.wtf()

android.util에 속한 Log클래스다. public final class Log { public static final int ASSERT = 7; public static final int DEBUG = 3; public static final int ERROR = 6; public static final int INFO = 4; public static final int VERBOSE = 2; public static final int WARN = 5; } 멤버를 보면 로그의 종류를 알 수 있다. Log.d("태그이름", "로그메시지"); Log.i("태그이름", "로그메시지"); 위와 같이 사용하는데 print문으로 할 수 있는 걸 이름을 붙여서 사용한다고 생각하면 되겠다. d의경우 debu..

Android/삽질

Layout Inflater

Layout Inflater는 레이아웃을 객체화 시켜주는 작업이다. 이 때 객체화 과정은 runtime 때 이루어진다. 이 Inflater를 이용해 부분 화면을 설계할 수 있다. LinearLayout container; // container view 추가. @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_menu); container = findViewById(R.id.container); Button button = findViewById(R.id.button); button.setOnClickListener(ne..

Android/삽질

MediaRecorder(2)

startRecording() 왼쪽이 샘플코드, 오른쪽이 내가 MediaRecorder(1)에서 작성했던 startRecording 코드이다. 구성내용이 99% 동일해 당황했다. 다른 거라곤 fileName부분인데 fileName에서 오류가 났을 경우가 아니라면 이 코드블럭에는 문제가 없나보다. 다만 나는 버튼으로 바로 불러오는 것이고 샘플은 함수로 만들어서 호출하는 방식을 취했다. 그러면 stopRecorder를 보자. stopRecording() 이번에도 왼쪽이 샘플코드, 오른쪽이 내가 만든 코드이다. recorder에 null로 만들어주는 것을 제외하면 동일하다. 그렇다면 recorder = null을 추가해주고 fileName을 변경해 다시 디버깅해보도록 했다. 놀랍게도 문제없었다. 그러나 재생을..

Android/삽질

MediaRecorder(1)

일단 권한먼저 넣어놓자. API지원은 21부터로 설정했고 실습을 위해 갤럭시 노트3를 준비해뒀다. api 26 부터 하고 싶었으나 놀고있는 공기계가 없었다. 구해볼 예정이다. minSdk 변경은 gradle에서 적용한다. build.gradle 중 app 수준 파일에서 minSdk값을 21로 바꿔주면 실제 기기인 노트3를 연결해 디버깅을 할 수 있다. https://developer.android.com/guide/topics/media/mediarecorder?hl=ko#kotlin MediaRecorder 개요 | Android 개발자 | Android Developers MediaRecorder 개요 Android 멀티미디어 프레임워크에는 다양한 일반 오디오 및 동영상 포맷을 캡처하고 인코딩하는 지..

kimmandooo
code