목록Computer (144)
안드로이드 개발자의 창고
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bmMlG7/btsL4NzNZ2P/PJZu9fzEDfnhp90GMNYYn1/img.png)
자소분리란?macOS에서는 유니코드 인코딩 방식을 NFD(조합형)로 채택하고, Windows에서는 NFC(완성형)로 채택하여 서로 다른 인코딩 방식을 사용 중이다. macOS에서 NFD로 작성된 파일을 Windows에서 확인할 경우 한글이 깨지는 문제가 발생한다.macOS에서 채택한 NFD(조합형)한글의 초성, 중성, 종성을 분리된 코드로 저장한다.예시)안녕하세요.txt → ㅇㅏㄴㄴㅕㅇㅎㅏㅅㅔㅇㅛ.txt위 (U+C704) → ᄋ (U+110B) + ᅱ (U+1171) Windows에서 채택한 NFC(완성형)한글의 초성, 중성, 종성이 합쳐져 있는 형태의 코드로 저장한다.예시)안녕하세요.txt → 안녕하세요.txtᄋ (U+110B) + ᅱ (U+1171) → 위 (U+C704)회사에서 일을 하면서 Wind..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/elnCug/btss74GPKEG/mFMbF932gC58jC38BAt7Vk/img.png)
Coroutine, Thread 와의 차이와 그 특징 처음 Kotlin 를 사용하던 중에 비동기 처리를 위해 Coroutine 개념을 마주했었습니다. 동기란 요청을 보낸 후 요청에 대한 반환값을 얻기 이전까지 대기하는걸 의미하고, 비동기는 그 대기시간동안 aaronryu.github.io 📖 Process & Thread Process : 프로그램이 메모리에 적재되어 실행되는 인스턴스(객체) Thread : Process 내에서 실행되는 실행 단위 각 작업에 해당하는 메모리 영역을 할당 OS 레벨에서 각 작업들을 얼만큼씩 분배하여 수행해야지 효율적일지 선점 스케줄링(Preempting Scheduling)을 필요로 함 Task 단위 = Thread 다수의 작업 각각에 Thread를 할당한다. 각 Thre..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bUQGvO/btssUaAuWfW/RSznCJqPbkD1cOhSk6ctDk/img.png)
📖 MVC Model - View - Controller로 이루어진 패턴 Model 앱이 포함해야할 데이터가 무엇인지를 정의 데이터의 상태가 변경되면 일반적으로 View에게 알려주지만 가끔은 Controller에도 알려준다. 가끔 Controller에게 알려주는 경우는 업데이트 된 View를 제어하기 위해 다른 로직이 필요한 경우이다. View 데이터를 보여주는 방식을 정의한다. 표시할 데이터는 Model로 부터 받게 된다. Cotroller 사용자로부터 입력에 대한 응답으로 Model 또는 View를 업데이트하는 로직을 포함한다. 동작 과정 예시 사용자가 to-do 리스트 목록에 있다고 가정하면 사용자가 리스트를 추가하기 위해 내용을 작성하고 추가 버튼을 눌렀다. 이러한 이벤트는 Controller에 ..
데이터 바인딩 및 MVVM - UWP applications 데이터 바인딩은 MVVM(Model-View-ViewModel) UI 아키텍처 디자인 패턴의 핵심이며 UI 및 비 UI 코드 간의 느슨한 결합을 가능하게 합니다. learn.microsoft.com 다른 블로그 글 보다는 공식 문서가 좋을 것 같아 microsoft 공식 문서를 가져왔다. 📖 MVVM이란? UI 및 비 UI 코드를 분리하기 위한 UI 아키텍처 디자인 패턴 Model, View, ViewModel로 분리 Model : 데이터를 관리하는 클래스 View : 화면 UI ViewModel : 화면과 관련된 데이터를 관리하는 클래스 repository : 데이터를 구하는 클래스 MVVM의 장점 단위 테스트 간소화 유지 관리 효율성 향상 ..
출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 PPT 📖 Socket 서버와 클라이언트 간에 연결된 Socket을 통해 통신하는 방법으로 프로그램 종료 시 까지 온라인으로 유지할 수 있는 특징을 가지고 있다. 안드로이드 Socket 네트워크 구현 방법은 일반 자바 프로그램에서 구현하는 방법과 동일하다. 데이터를 주고 받는 부분 뿐만 아니라 접속 관리 등 많은 기능을 구현해야 하기 때문에 서버 구현이 어려운 편이다. 예제 코드 Server.kt fun main() { // 사용할 포트 번호 val portNumber = 50000 // 서버 객체 생성 val serverSocket = ServerSocket(portNumber) // 사용자 접속 대기 println("사용자 접속 대기") val so..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bVspWw/btsoTmxtbde/3hGDuNM3tci2CkN9BBjOJk/img.png)
출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 PPT 📖 앨범에서 사진 가져오기 앨범에서 사진을 가져올 때 다른 Activity를 실행시켜서 사진을 가져올 수 있다. Intent.ACTION_PICK 예제 코드 AndroidManifest.xml ... MainActivity.kt 안드로이드는 영상, 음원, 사진 등의 미디어 파일을 단말기 내부에 저장하면 미디어 스캐너라는 것이 자동으로 가동된다. 미디어 스캐너의 역할은 영상, 음원, 사진 등에 관련된 데이터를 추출하여 SQLiteDatabase에 저장한다. 이 정보를 가져다 사용할 수 있는 Content Provider를 이용해 정보를 가져온다. 안드로이드 버전이 10(Q) 이상이면 Content Resolver로 바로 접근 가능하다. 10 버전 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/qkcvR/btsoyrUYKiX/BjKaY3AcjxfrL6B1ssXFcK/img.png)
출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 PPT 📖 사진 촬영하기 카메라 기능이 구현되어 있는 Activity를 실행하여 사진을 촬영할 수 있다. 만약 카메라 기능이 구현되어 있는 애플리케이션이 다수 설치되어 있다면 앱을 선택하면 된다. 기본 카메라 사용하는 방법을 사용하면 사진 원본이 아닌 썸네일 이미지를 가져오게 된다. 촬영된 사진의 원본을 가져오려면 촬영된 사진을 파일로 저장한 다음 파일로부터 이미지 데이터를 가져오는 방식으로 개발해야 한다. 예제 코드 AndroidManifest.xml = Build.VERSION_CODES.TIRAMISU) { val bitmap = it.data?.getParcelableExtra("data", Bitmap::class.java)!! activity..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bGxcGJ/btsonHpGlEJ/jknIQ3FUhpVkHhaYSblxkk/img.gif)
출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 PPT 📖 Location GPS : Global Positioning System 단말기와 네트워크 망, 위성 등을 모두 연결해 현재 위치를 측정할 수 있는 시스템 안드로이드는 단말기 내부에서 가용한 위치 측정 수단을 모두 동원해 위치를 측정하고 있다. 애플리케이션에 측정된 위치 값을 가져다 사용할 수 있다. Porovider 안드로이드는 위치 측정을 위해 위치 정보 제공자를 선택해서 사용하며 가급적이면 모든 위치 정보 제공자를 사용하는 것이 좋다. GPS Provider : GPS 위성과 통신하여 3각 측량 방법을 이용해 위치 정보를 습득한다. 위성과의 전파 송수신이 방해가 되는 요인(방해전파, 실내, 건물내, 계곡 등)이 있으면 정확한 위치를 측정..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bmGg5Q/btsoo7VhxnA/IX87KaoHZDVHKVXekmx9o1/img.png)
출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 PPT 📖 Sensor 스마트폰에는 수십가지의 센서가 장착되어 있으며 이를 통해 사용자에 대한 정보를 수집할 수 있다. 스마트폰이 부팅되면 단말기에 장착되어 있는 모든 센서들이 동작하기 시작하고 애플리케이션에서는 이 값을 받아와 사용할 수 있다. 예제 코드 단말기 센서 목록 출력 class MainActivity : AppCompatActivity() { lateinit var activityMainBinding: ActivityMainBinding override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) activityMainBinding = Activ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/beH4tj/btsn9KONGgN/JRuZaRKdh0ksubaZKkVwX0/img.png)
출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 PPT 📖 Device Information 안드로이드 애플리케이션에서 단말기의 정보가 필요할 경우 정보를 가져다 사용할 수 있다. 안드로이드 8.0 부터 단말기 일련번호, 유심 일련번호 등 단말기의 고유한 정보는 사용할 수 없다. TelephonyManager 전화 기능과 관련된 정보를 가져올 수 있다. 정보 코드 전화번호 line1Number SIM 국가 코드 simCountryIso 모바일 국가코드 + 모바일 네트워크 코드 simOperator 서비스 이름 simOperatorName SIM 상태(통신 가능 여부, PIN LOCK 여부) simState 음성 메일 번호 voiceMailNumber 예제 코드 class MainActivity : A..