본문 바로가기
반응형

Android/안드로이드 기본지식19

wifi p2p 통신 시 특정 크기의 단위로 데이터 전송 방법 1. 개요 안드로이드에서 wifi p2p로 데이터 통신을 하다보면 특정 데이터 사이즈 크기만큼 자르면서 데이터를 전송하고 싶을 때가 있다. 허나 자바스크립트와 다르게 안드로이드는 이러한 방법에대한 API를 제공하지 않고 그저 continuous하게 데이터를 읽는 방법만 제공하고 있다. 2. 아이디어 read함수는 데이터를 특정 길이만큼 읽어올 수 있다. 허나 실제로 읽어온 데이터의 길이는 내가 요청한 데이터와 다를 수 있고, 함수의 리턴값으로 실제 읽어온 값을 사용한다. 이 리턴값을 이용하면 특정 데이터 크기만큼만 자르면서 읽어오는것이 가능하다 아래는 그 예시이다 val inputStream = socket.getInputStream() var result = ByteArray(614398) var ne.. 2023. 1. 17.
안드로이드 공부시 주의사항 개발자의 가장 중요한 덕목중 하나는 구글링이다. 당연히 안드로이드 개발자들도 구글링을 열심히 한다. 허나 한가지 주의사항이 있다. 만약 당신이 구글링해서 아래 공식문서로 들어갔는데 링크가 training으로 되있다고 하자 똑같은 내용을 공식문서에서 시작해서 다시 들어가 보면 guide 라고 나온다 그리고 둘의 내용이 다르다. 아래내용을 반드시 기억하자 guide의 링크가 걸린 내용이 좀 더 최신이고 설명도 더 알아먹게 되어있다 모든 항목에 대하여 guide url이 존재하지 않는다 그러므로 구글링으로 공식문서에 들어갔는데 url이 training이라 적혀있으면 반드시 공식홈페이지에서 수동으로 다시 들어가보자. 그럼 최신 내용의 문서가 있을지도 모른다 2023. 1. 12.
wifi direct p2p 연결 https://developer.android.com/guide/topics/connectivity/wifip2p?hl=ko Wi-Fi Direct(P2P) 개요 | Android 개발자 | Android Developers Wi-Fi Direct(P2P) 개요 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Wi-Fi Direct(P2P)는 적절한 하드웨어를 갖춘 Android 4.0(API 레벨 14) 이상을 실행하는 기기가 중 developer.android.com 1. 개요 공식문서의 내용을 읽고 있는데 가독성이 도저히 안좋아서 좀더 편하게 읽기위해 블로글을 작성하게 되었다 WiFi-Direct란 와이파이 다이렉트란 P2P 연결을 해주는 기술이고 블루투스보다 훨씬 더.. 2023. 1. 11.
[Android] apk에서 패키지네임 확인방법 구글링하면 aapt 사용법이 많이 나온다. 헌데 그건 deprecated 되었다고 한다. 대신 aap2를 이용하자 aapt2 dump badging "APK경로" 2022. 8. 22.
[Android] sp에서 dp로 변환, dp에서 sp로 변환 https://stackoverflow.com/questions/29664993/how-to-convert-dp-px-sp-among-each-other-especially-dp-and-sp How to convert DP, PX, SP among each other, especially DP and SP? I have known the difference among DP, SP and PX. And after searching this topic, I found nothing satisfying me completely. Maybe this post is a duplicate, but I still want to know what is the formu... stackoverflow.com 위 사이트를.. 2022. 7. 13.
[Android] dp, sp, dpi, pt용어정리 DP Display Independent Pixel 이라는 의미이다. 디스플레이 크기와 상관없이 항상 일정한 크기를 나타내기 위해 사용하는 단위이다. dp를 위해서는 dpi라는 개념을 알아야 한다. dpi란 dots per inch 라는 뜻으로 1인치당 몇개의 픽셀이 안에 담겨있는지를 의미한다. dpi가 높을수록 1인치당 많은 픽셀들이 담겨있으므로 화질이 높다. 안드로이드에서느 1dp는 160dpi에서 하나의 픽셀(점)을 의미한다. 한마디로 1/160inch 라는 뜻 만약 dpi가 320dpi로 늘었다고 가정하자. 그럼 1dp는 2픽셀이 사용된다. dpi가 두배로 늘었으니 픽셀의 크기는 반으로 줄어들지만 사용되는 픽셀을 2픽셀로 늘었으니 크기는 동일하다. 그럼 1인치는 몇 dp일까? 바로 160이다. 그.. 2022. 7. 1.
[Android] Recycler View 사용하기 https://developer.android.com/guide/topics/ui/layout/recyclerview RecyclerView로 동적 목록 만들기 | Android 개발자 | Android Developers RecyclerView로 동적 목록 만들기 Android Jetpack의 구성요소 RecyclerView를 사용하면 대량의 데이터 세트를 효율적으로 표시할 수 있습니다. 개발자가 데이터를 제공하고 각 항목의 모양을 정의하면 R developer.android.com 1. Recycler View란? 데이터를 리스트로 나타내주는 뷰 이다. 아니 그럼 리스트뷰 쓰면 되지 왜 Recycler View를 쓰는가? 그 이유는 리스트뷰가 가지고 있던 성능문제를 Recycler View는 해결했기.. 2022. 6. 15.
[Android] Service 배우기 https://developer.android.com/guide/components/services?hl=ko 서비스 개요 | Android 개발자 | Android Developers 서비스 개요 Service는 백그라운드에서 오래 실행되는 작업을 수행할 수 있는 애플리케이션 구성 요소이며 사용자 인터페이스를 제공하지 않습니다. 다른 애플리케이션 구성 요소가 서비스를 시 developer.android.com 서비스란? 서비스는 안드로이드 어플리케이션을 구성하는 4개의 컴포넌트(액티비티, 서비스, 브도르캐스트, 컨텐트 프로바이더) 중 하나로 백그라운드에서 수행작업을 할 때 사용되는 구성요소이다. 서비스의 타입 서비스는 총 3가지의 타입이 존재한다 1. Foreground 서비스 포어그라운드 서비스는 유.. 2022. 5. 25.
[Android] Camera2 배우기 https://developer.android.com/training/camera2 Camera2 | Android Developers Camera2 Camera2 is the latest low-level Android camera package and replaces the deprecated Camera class. Camera2 provides in-depth controls for complex use cases, but requires you to manage device-specific configurations. You can read about specific Camera developer.android.com 1. Camera2란? Camera2란 안드로이드 기기에서 카메라 제어를 하는.. 2022. 5. 13.
[Android] Canvas를 이용하여 UI 그리기 https://developer.android.com/training/custom-views/custom-drawing 맞춤 그리기 | Android 개발자 | Android Developers 맞춤 뷰에서 가장 중요한 부분은 디자인입니다. 맞춤 그리기는 애플리케이션의 필요에 따라 쉽거나 복잡할 수 있습니다. 이 과정에서는 가장 일반적인 작업 몇 가지에 관해 설명합니다. 맞춤 뷰 developer.android.com 먼저 이를 배우기 전에 Custom View에 대한 대략적인 개념을 학습하고 오자 https://lucky516.tistory.com/173 [Android] Custom View 만들기 https://developer.android.com/training/custom-views/creat.. 2022. 4. 14.
[Android] Custom View 만들기 https://developer.android.com/training/custom-views/create-view 뷰 클래스 만들기 | Android 개발자 | Android Developers 잘 설계된 맞춤 뷰는 잘 설계된 다른 클래스와 매우 유사합니다. 즉, 사용하기 쉬운 인터페이스로 일련의 특정 기능을 캡슐화하고 CPU 및 메모리를 효율적으로 사용하는 등의 역할을 합니다. 그 developer.android.com 0. 개요 먼저 안드로이드의 기본개념을 학습하자. 안드로이드의 UI는 기본적으로 두개의 구성요소로 구성되어 있다 View 그리고 ViewGroup 이 둘의 상속받는 subclass들을 각각 Widget 그리고 Layout 이라고 한다 즉 View -> 위젯 ViewGroup -> 레이아.. 2022. 4. 13.
[Android] Content Provider 컨텐트 프로바이더 https://developer.android.com/guide/topics/providers/content-providers 콘텐츠 제공자 | Android 개발자 | Android Developers Content providers manage access to a structured set of data. They encapsulate the data, and provide mechanisms for defining data security. Content providers are the standard interface that connects data in one process with code running in another process developer.android.com 1. Cont.. 2022. 4. 5.
[Android] Task와 back stack https://developer.android.com/guide/components/activities/tasks-and-back-stack 작업 및 백 스택 이해 | Android 개발자 | Android Developers 일반적으로 앱에는 여러 활동이 포함됩니다. 각 활동은 사용자가 실행할 수 있는 특정 종류의 작업을 중심으로 설계되어야 하며 다른 활동을 시작할 수 있어야 합니다. 예를 들어 이메일 앱에는 developer.android.com task와 back stack 이란? task는 유저가 앱과 소통하는 액티비티의 모음이다. 이러한 액티비티들은 스택 형태로 저장된다. 이를 back stack이라고 하며 액티비티를 open한 순서대로 저장된다. 예를 들면 메일 앱을 사용한다고 하자. 메일앱은.. 2022. 2. 17.
안드로이드 inflate, inflater란? fragment, recyclerview를 공부하는데 inflate, inflater라는게 계속 등장하며 View를 하나 리턴하는데 이 View가 도대체 뭔지 몰라서 검색해서 찾아보니 다음과 같았다. inflate라는 작업은 xml을 파싱해서 객체화 시켜주는 작업을 말한다. 즉 inflater의 return의로 나오는 View는 내가 넣어준 xml이 파싱되서 나온 View 라는 것이다! 2021. 7. 19.
안드로이드 onSaveInstanceState onSaveInstanceState 이게뭐임? 안드로이드 액티비티는 다양하게 종료될 수 있음. 예를들어 스마트폰의 메모리가 부족할경우 안드로이드는 실행되고있는 앱들을 죽이기 시작함. 이때 앱이 죽기전에 엉엉 울면서 onSaveInstanceState라는 메소드에 자신의 유산을 남기고 죽을 수 있음. 어케씀? 1. 액티비티 클래스에 onSaveInstanceState 를 오버라이딩 하셈 2. 남기고 싶은 데이터를 key, value 쌍으로 Bundle에 저장한다 3. 액티비티 onCreate때 onSaveInstanceState 에서 key값으로 유산을 찾으면 됨 예제좀 다음예제는 앱이 죽기전에 사랑했던 물고기의 이름을 남기는 예제이다 앱은 죽기전에 "내가 사랑했던 물고기" 라는 key값과 "붕어"라는 v.. 2021. 7. 8.
안드로이드 ViewModel 사용하기 ViewModel 이란? 안드로이드 앱에 UI에 관한 정보를 담는 클래스이다 ViewModel 왜 씀? 내가 스마트폰에서 세로 기준으로 버튼을 누르면 숫자가 올라가는 앱을 만들었다고 하자 그런데 스마트폰을 가로로 돌리면 숫자가 초기화 된다. 이유는 간단하다. 가로로 돌리면 액티비티가 파괴되고 처음부터 onCreate를 시작으로 다시 생성되기 때문 이때 ViewModel에 데이터를 저장하면 UI에 관한 데이터를 보존할 수 있다. 안드로이드 공식 문서에도 앱을 설계할 때 아래와 같이 ViewModel + LiveData로 UI데이터를 보존하라고 명시하고 있다. https://developer.android.com/jetpack/guide?hl=ko 앱 아키텍처 가이드 | Android 개발자 | Androi.. 2021. 7. 8.
안드로이드 LiveData 기본예제 LiveData란? LiveData란 UI에 사용되는 데이터를 저장하는 class이다. 왜씀? 장점이 뭐임? UI에 사용되는 데이터가 바뀌면 그걸 실시간으로 반영해줌. 가령 내가 TextView에 Hello World! 라고 적었는데 이걸 Hell World!라고 바꿧다고 치자 그럼 나는 이걸 UI에 반영하려면 text = "Hell World!"; textView.setText(text); 라고 적어야 되는데 라이브 데이터를 이용하면 text = "Hell World"; //textView.setText(text); { boungaCounter.setValue("Number Of Bounga is " + Integer.toString(count++)); }); } } 결과 ADD BOUNGA 버튼을 클.. 2021. 7. 1.
안드로이드 Fragment 사용하기 Fragment란? 프래그먼트란 액티비티 위에서 화면을 유동적으로 구사해주는 안드로이드의 기법이다. 위 그림은 똑같은 앱을 테블릿과 스마트폰에 뛰운 모습이다. 테블릿은 한 화면에 두개의 프레그먼트를 보여주고 스마트폰은 하나의 프래그먼트를 보여준다. 보통 화면전환으로 intent를 이용한 액티비티전환을 많이 배우는데 속도도 느리고 코드관리도 어려와 나온 기능이다. 위와같은 그림으로 MainActivity에 프래그먼트가 들어갈 틀을 선언하고 틀 위에 올려놓을 프래그먼트를 여러개 만들어 끼우고 빼고 하는게 가능하다. 그럼 본격적으로 만들어보자 activity_main.xml 위의 이미지처럼 버튼두개를 만들고 프래그먼트가 들어갈 FrameLayout을 만들었다. 아직 아무 프래그먼트가 들어가지 않았으므로 텅 비.. 2021. 6. 30.
[Android] kotlin에서 안드로이드 Fragment 제거하기 Fragment를 add 해주고 add 해준 클래스로 remove를 하려 하니 아무것도 하지 않아서 한참 헤멨다 아래처럼 add할때 tag 달아준 뒤에 tag기준으로 remove 해주어야 한다 그럼 Fragment가 지워진다. supportFragmentManager.commit { supportFragmentManager.findFragmentByTag("mytag")?.let { remove(it) } } 2021. 6. 14.
반응형