본문 바로가기

[22일차]notification notification 이랑 push notification 주체 = Sender 이거를 받는 Receiver가 있다. 주체가 사용자에게 메시지를 보내는거다. push는 서버프로그램이 클라이언트 프로그램에게 어떤 메시지를 보내는게 push이다. notification이랑 push를 구분해야한다. 일반적으로 push-notification이라고 한다. 이거 누구한테 메시지 왔습니다. 이렇게 보여준다. 그래서 각각 쓰는 기술이 다르다. 우리가 지금 알아 볼 건 notification 이다. 전혀 다른 기술이다. 우리가 한건 client가 사용자에게 무언가를 알리는 것이다. 알릴 때 왜 알릴 필요가 있느냐 client라는게 액티비티만 있는게 아니다. service도 있고, receiver 이런 것 도 있다. .. 더보기
[21일차] 센서 센서는 주변상황을 능동적으로 인식하는 하드웨어 장치 네트워크 쓰면 배터리가 빨리 닳는다 lcd켜저있으면, 꺼져 있는다. 더보기
[21일차]카메라 사용하는 방법 간단하게 카메라를 사용하는 방법을 알아보겠다. camera2를 만들어서 사용한다. 하위버전에서는 camera 상위버전에서는 camera2 Deplcate됬지만 camera를 이용해서 사용하긴 한다. 얘는 워낙에 사용방법이 많이 달라져서 camera클래스를 다룰때 builde버전으로 구분해서 나눠서 쓰라고 한다. 하지만 실제로 camera 로 사용한다. 직접 camera로 액세스하는 법이 거의 없다. 왜냐면 호출해서 얻으면 되기 때문이다. 카메라를 가지고서 찍을 때, 버전에 따라서 어차피 따로 만들어야 한다. 그런 거 아니면 현실적으로 카메라를 쓸 일이 없다. 그래서 간단한 카메라 사용 방법을 알아보도록 하겠다. api9부터는 FACING_BACK,FACING_FOCUS 이런 전면 카메라 후면카메라 를 선.. 더보기
[21일차] 카메라 서피스뷰 메니페스트에 use feature camera 를 해줘야 한다. 서피스 뷰를 놓고 녹화를 할 수 있다. 카메라와 화면 이 안 맞기 때문에 landscape으로 고정할 수 있다. 파일로 부터 섬네일을 뽑아서 보여줄 수 있다. 그러기 위해서는 갤러리를 쓰지않고 뷰페이져를 써서 보여준다. imageView.setLayoutParams(new Gallery.Layoutparams(ViewGroup.LayoutParams.WRAP_CONTENT)) ViewGroup.LayoutParams.WRAP_CONTENT)); SurfaceView displayGallery gallery;// 갤러리는 디프리케이트 이다. gallery = 핸들러 같이 특이한 케이스를 제외하고는 클래스 변수를 사용하지 않는다. 더보기
[21일차] AudioData AudioData System Volume과 Media Volume 이 있다. 시스템 볼륨은 설정에서 볼륨을 설정하는거다. 안드로이드 시스템 전체에 설정하는 볼륨을 시스템 볼륨이라고 한다. 어떤 소리는 모든소리를 낮추거나 모든 소리를 높이거나 구분해서 설정할 수 있게 한다. 그래서 안드로이드 시스템 볼륨은 Stream Type에 따라서 바꿀 수 있다. MediaPlayer로 재생 시 Stream Type을 구분해서 재생한다. AudioManager audioManager = getSystemService(AUDIO_SERVICE); 이렇게 가져온다. 스피커가 양쪽으로 나올 수 있기 때문에 left, right로 나눠서 설정한다. AudioTrack 데이터 PcM 파형을 끊어 서 데이터를 만든다 . 뭐 악.. 더보기
[20일차] Loader , ContentProvider ContextProvider 안드로이드에서 Appilcation들이 접근할 수있는 방법을 제공해주는거 Uri를 넘겨줘야 한다. context://contacts/people/1 ContextResolver ContentProvider 통신 OpenAssetFileDescriptor, openFileDescriptor, openInputStream, 주소록 데이터를 가져오는 방법 주소록은 Contact이라고 하고 ContactsContract - 주소록데이터와 관련된 정보이다. 주소록 데이터는 실제로 복잡하다. 간단하게 말하면 Contact이라는 테이블이 있고, raw contact 이라는 게 있다. Data가 있다. raw contact 안에 Data에 대한 Table이 잇다. READ_CONTACTS,.. 더보기
[18일차] SharedPreferences SharedPreferences 데이터를 key - value를 저장하는 것, 앱의 dependency가 있어서 Context에 getSharedpreferences() 디폴트SharedPrefernence 를 만들어서 쓸 수 가 있다. 그냥 이런게 있다. 설정 할 때 많이 쓴다. 그럼 하나만 있어도 된다. 그래서 뭘 많이 쓰냐면 Default SharedPrefernece를 많이쓴다. 모든 값을 저장할 수 잇는게 아니고 리스트는 안되고 set 을 저장하거나 얻어올 수 있다. 주로 내가 만들어 쓰면 귀찮으니까 프로젝트 내에서 Singlton을 만들어서 그 안에서 쓴다. 그렇게 쓰는게 일반적이다. 여기까지 설명끝 ...................................................... 더보기
[18일차]퍼미션 shouldShowRequestPermissionRatonale 왜 이 퍼미션을 획득해야하는지 설명해야하는거 프로텍션 레벨 Dangerous Permission 은 개인정보와 관련된 Permission Compat checkSelfPermission 이 퍼미션을 가지고 있는지 아닌지 획득을 해준다.ㅏ shouldShowReqeustPermissionRationale 사용자에게 구체적으로 퍼미션 화면을 보여줌 setResult 해가지고 onRequestPermissionResult 로 결과가 넘어온다. private void checkPermission() { List permissions = new ArrayList(); if (ContextCompat.checkSelfPermission(this, Ma.. 더보기
[18일차] 파일 안드로이드 데이터 저장하는 방법. 캐싱하는게 정확히 무엇을 저장하는 건가 ? 파일을 쓰고 읽어오는 방법. File - 논리적인 데이터의 묶음. Block 단위로 파일 시스템 FS , hierarchy path가 파일을 나타내는 유니크한 ID 가 된다. 스키마 - 같은 형식으로 되있는 것을 모아놓은것.이런방식으로 DataBase라고 한다. 안드로이드만 특화되어있는 것 중 하나가 ContentProvider 라고 한다. 앞에 있는 것들은 내가 만들어서 내가 쓰는거다. 그런데 그렇지 않고 다른 앱에서 내가 만든 데이터를 쓰고 싶을 때 사용한다. 일반적으로 DataBase로 구현을 한다. 이건 모듈이다. 모듈이다. 모듈이다. File 객체는 사실 path를 메인데이터로 가지고 있기 때문에 실제 파일을 가지고 있.. 더보기
[17일차] Glide 네트워크 상태처리, NSD Glide 메모리 적게 쓰고 성능도 좋다. 기본적인 성능은 차이가 없다. 구글이 전부 Glide를 쓰니까 많이 쓴다. Glide.with(getContext()){ } Exception이 나면 안되니까 주석처리한 부분을 쓰면 안된다. Okhttp로 데이터를 받아오고 파싱은 gson 이미지는 Glide 네트워크 상태 처리 데이터를 받는 중에 끊길 경우 이어받기를 해야한다. 이런 것들을 하기위해서 네트워크 상태가 변화된 걸 알아야 한다. 상태처리를 위해 알아야될 것1. 현재 네트워크 상태가 모바일인지 와이파이인지 아는것 2. 네트워크를 쓸 수 있는 상태인지 아닌지 판단하는것. 3. 문제가 생길만한 로직은 감시하고 있다가 처리해주는것. 이런것들을 해줘야한다. 그래서 필요한게 ContivityManager Co.. 더보기