이론





FCM(Firebase Cloude Messaging): 구글에서 제공하는 Server와 Client app 간의 푸쉬 메세지를 보낼수 있는 서비스

Android & iOS & Mobile Web 등의 다양한 플랫폼을 모두 커버한다


GCM(FCM의 예전버전) 과 FCM의 차이

GCM 의 Client 단 구현시에 번거로웠던 등록 및 구독 로직을 FCM 라이브러리 안에 포함시켜 개발자가 별도로 개발하지 않아도 된다.

또한, Firebase Analytics insight 의 기능을 활용하여 특정 타겟층에 push 전송이 가능해졌다.

앞으로 구글에서는 새로운 기능들을 모두 FCM 쪽에만 추가하고, GCM 에는 추가하지 않을 것이라고 한다. 따라서, FCM SDK 사용을 강력히 권장하고 있다.

GCM 은 결국 FCM 의 일부이며 GCM 으로 기 구현된 서비스들도 FCM 으로 동일하게 구현이 가능하다고 한다.


안드로이드에서 서비스와 스레드의 차이 :

서비스 : UI와는 상관없이 백그라운드에서 실행되는 기능이다(프로그램이 종료되어도 별도의 스택에서(백그라운드에서) 계속 돌아감)

스레드 : (UI==메인스레드)와 병렬적으로 실행되는 기능이다


(복습)백엔드란? :  사용자가 볼수없는 영역, 즉 프론트엔드에서 전달된 데이터 및 서버관리를 하는일을 말한다.



[클라이언트 제작해보기]


***Firebase 가이드 영상(예전 버전인 것을 참고) : https://youtu.be/cNPCgJW8c-E

***Firebase 레퍼런스 사이트 : https://firebase.google.com/docs/android/setup#add_the_sdk



★[서버 구축]

파일다운

https://mvnrepository.com/artifact/com.ganyo/gcm-server/1.0.2 -> jar 다운

https://mvnrepository.com/artifact/com.googlecode.json-simple/json-simple/1.1.1 -> bundle 다운


***자바에는 서버키***

***JSP에는 인스턴스키(휴대폰 key)***




실습


fcm_main.xml

MyFirebaseInstanceIDService.java

MyFirebaseMessagingService.java

string.xml

MainActivity.java

GcmService.java


'학원수업 > 안드로이드' 카테고리의 다른 글

학원 52일차 복습(6/1)  (0) 2018.06.01
학원 31일차 복습(4/25)  (0) 2018.04.25
학원 30일차 복습(4/24)  (0) 2018.04.25
학원 29일차 복습(4/23)  (0) 2018.04.23
학원 28일차 복습(4/20)  (0) 2018.04.20

이론





LBS사용을 위한 설정 추가1

Gradle Scripts/build.gradle(Module.app) ->google plays 사용을 위해...


apply plugin: 'com.android.application'

 

android {

    compileSdkVersion 27

    defaultConfig {

        applicationId "com.example.kosta.andforflask"

        minSdkVersion 18

        targetSdkVersion 27

        versionCode 1

        versionName "1.0"

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

    }

    buildTypes {

        release {

            minifyEnabled false

            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

        }

    }

}

 

dependencies {

    implementation fileTree(dir: 'libs', include: ['*.jar'])

    implementation 'com.android.support:appcompat-v7:27.1.1'

    implementation 'com.android.support.constraint:constraint-layout:1.1.0'

    implementation 'com.google.android.gms:play-services-location:15.0.0'

    testImplementation 'junit:junit:4.12'

    androidTestImplementation 'com.android.support.test:runner:1.0.2'

    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

}



LBS사용을 위한 설정 추가2

AndroidManifest.xml에 퍼미션 추가 -> GPS 사용을 위해....

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>




[서비스]

서비스 : 백그라운드로 계속 돌리고 싶은 기능이 있을때 서비스로 구현하는게 좋다.

주기적으로 업그레이드 해야 하는 부분은 onCreate()에 넣지않는다. 

startService()로 서비스를 시작했을경우, onCreate()는 딱 한번만 호출되기 때문



START_STICKY : 서비스가 강제로 종료됬을때, intent를 초기화하면서 다시 시작

START_NOT_STICKY : 서비스가 강제로 종료된후다시 시작하지 않겠다

START_REDELIVER_STICKY : 서비스가 강제로 종료됬을때, 기존의 intent를 유지



펜딩인텐트 :컴포넌트에서 다른 컴포넌트에게 작업을 요청하는 인텐트를 사전에 생성시키고 만든다는 점과 "특정 시점"에 자신이 아닌 다른 컴포넌트들이 펜딩인텐트를 사용하여 다른 컴포넌트에게 작업을 요청시키는 데 사용된다는 점이 차이점이다.

수행시킬 작업 및 인텐트(실행의도)와 및 그것을 수행하는 주체를 지정하기 위한 정보를 명시 할 수 있는 기능의 클래스라고 보면 된다.





실습


flask_client.xml


flask_client.java


AndroidManifest.xml


ex2_fusedlocation.xml


LocationActivity.java


Ex2_FusedLocationDemo.java


ex1_service.xml


ServiceThread.java


MyServiceExam.java


ex0_notification.xml


Ex1_Notification.java


Location.AndroidManifest.xml


'학원수업 > 안드로이드' 카테고리의 다른 글

학원 53일차 복습(6/4)  (0) 2018.06.04
학원 31일차 복습(4/25)  (0) 2018.04.25
학원 30일차 복습(4/24)  (0) 2018.04.25
학원 29일차 복습(4/23)  (0) 2018.04.23
학원 28일차 복습(4/20)  (0) 2018.04.20

이론



REST의 기본 개념

REST - 평범한 HTTP URL 을 통해 호출

REST - 리소스 지향적이고 애플리케이션을 표현하는 객체와 명사를 강조

표현(Representational) - REST 리소스는 XML, JSON(JavaScript Object Notation), HTML 등 사실상 거의 모든 형식으로 표현

상태(State) - 리소스에 대해 액션보다 상태에 더 많은 관심

전달(Transfer) - REST는 한 애플리케이션에서 다른 애플리케이션으로 어떤 표현 형식으로 리소스 데이터 전달을 포함한다.

URL에서 리소스 구별, 서버에 명령어를 보내지 않음


스프링이 REST를 지원하는 방법

이전부터 가능. 스프링 3부터 개선. 4.0 기준 설명

컨트롤러 REST 네 가지 주요 메소드 - GET, PUT, DELETE, POST. PATCH 는 스프링 3.2 이상

@PathVariable 파라미터화된 URL(경로의 일부분에 변수 입력이 있는 URL)에 대한 요청을 처리.

@RequestMapping("/dog/{name}")public String dog(@PathVariable String name) {

XML, JSON, Atom, RSS 등 다양한 방식으로 표현. 스프링의 뷰와 뷰 리졸버를 이용

클라이언트에 대한 가장 적합한 표현은 새로운 ContentNegotiatingViewRsolver를 이용해 선택

@ReponseBody 애너테이션, 다양한 HttpMessageConverter 로 뷰 기반 렌더링 무시

마찬가지로 새로운 @RequestBody 애너테이션은 HttpMethodConverter 구현체와 함께 인바운드 HTTP 데이터를 컨트롤러의 핸들러 메소드에 전달하는 자바 객체로 변환

RestTemplate은 클라이언트 측의 REST 리소스 사용을 간소화


RESTful 컨트롤러 생성

@Controllerpublic class DemoController {  @ResponseBody  @RequestMapping(value="/hello2", method= RequestMethod.GET)  public HashMap<String, Object> test2() {      HashMap<String, Object> map = new HashMap<>();      map.put("abc", "ddd");      return map;  }

@RestController 이용하기. @RestController 는 @Controller 와 @ResponseBody 포함. 스프링 4.0


@RestControllerpublic class DemoController {  @RequestMapping(value="/hello3", method= RequestMethod.GET)  public HashMap<String, Object> test3() {      HashMap<String, Object> map = new HashMap<>();      map.put("abcaa", "ddeeed");      return map;  }

최소한 json을 지원하기를 추천


실제로 Spring Boot 환경에서 별다른 설정 안하면 json 이 기본

스프링은 리소스의 자바 표현을 클라이언트에 전달될 표현으로 변환하는 두 가지 방법을 제공


콘텐츠 협상 (Content Negotiation) - 모델이 클라이언트에 제공되는 표현으로 렌더링될 수 있도록 뷰는 선택된다

메시지 변환 (Message Converter) - 메시지 변환기는 컨트롤러에서 반환된 객체를 클라이언트에 제공되는 표현으로 변경



래스트풀 쓰는이유: 바로 데이터를 바인딩하기 위해



실습


스프링소스


pom.xml

kosta-servlet.xml

or.kosta.config/config.xml

or.kosta.mapper/map.xml

or.kosta.mvc.controller/DefaultController.java

or.kosta.mvc.controller/MemoRestController.java

or.kosta.mvc.controller/MessageController.java

or.kosta.mvc.controller/SpringRestController.java

or.kosta.mvc.dao/MvoDao.java

or.kosta.mvc.map/MemoMapper.java

or.kosta.vo/MemberVO.java

or.kosta.vo/MemoVO.java

result.jsp


안드로이드소스


ex1_http.xml

ex1_listview.xml

exam2_column.xml

Ex1_Http.java

Exam_UrlListView.java


'학원수업 > 안드로이드' 카테고리의 다른 글

학원 53일차 복습(6/4)  (0) 2018.06.04
학원 52일차 복습(6/1)  (0) 2018.06.01
학원 30일차 복습(4/24)  (0) 2018.04.25
학원 29일차 복습(4/23)  (0) 2018.04.23
학원 28일차 복습(4/20)  (0) 2018.04.20

이론



raw폴더생성:  new -> Android Resource Directory -> Resource Type탭을 raw로 변경후 생성


다이얼 로그는 protected로 되어 있기 때문에 반드시 Builder로 생성





실습


activity_main.xml

ex2_dialog.xml

ex2_media2.xm;

ex3_http.xml

exam_media.xml

Ex2_Dialog.java

Ex2_Mediaplayer.java

Ex3_Http.java

Exam_MediaPlayerBar.java

MainActivity.java

MyBall.java

MyViewBall1.java

MyViewBall2.java


'학원수업 > 안드로이드' 카테고리의 다른 글

학원 52일차 복습(6/1)  (0) 2018.06.01
학원 31일차 복습(4/25)  (0) 2018.04.25
학원 29일차 복습(4/23)  (0) 2018.04.23
학원 28일차 복습(4/20)  (0) 2018.04.20
학원 27일차 복습(4/19)  (0) 2018.04.19

이론


스프링 서버 3/28 소스 활용


drawable v24는 24버전부터 적용됨


 핸들러 객체에 메시지를 보내기

        1.주기적으로 반복작업을 할 필요가 있을때 핸들러를 사용한다.

        2.스레드간의 메세지 전달이 필요할 때도 핸들러 사용

        3.내부적으로는 핸들러도 하나의 스레드이다.




View.INVISIBLE : 단순하게 사라지는 것

         , GONE, : 완전히 없어지는 것

                VISIBLE : 보여지는 것




실습


ex1_thread.xml

ex2_chat.xml

ex2_post.xml

ex2_progressbar.xml

activity_chatitem.xml

activity_main.xml

Ex1_Thread.java

Ex2_PostProgress.java

Ex2_Progress.java

Ex3_Chat.java

CustomAdapter.java

Ex2_ListView.java


'학원수업 > 안드로이드' 카테고리의 다른 글

학원 31일차 복습(4/25)  (0) 2018.04.25
학원 30일차 복습(4/24)  (0) 2018.04.25
학원 28일차 복습(4/20)  (0) 2018.04.20
학원 27일차 복습(4/19)  (0) 2018.04.19
학원 26일차 복습(4/18)  (0) 2018.04.18

이론



가상 sd카드생성 방법 

cmd에서 

cd AppData -> cd Local ->cd.android -> ->cd Sdk -> cd tools -> mksdcard 1024M c:\kosta182\android\sdcard.iso 입력


SD카드와 연동시 manifest에 

  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

추가하기


웹서버와 연동시 manifest에 

 <uses-permission android:name="android.permission.INTERNET"/> 

추가하기



실습


ex1_db.xml

ex2_webview.xml

ex3_file.xml

ex3_file2.xml

Ex1_DbTest.java

Ex1_MyDbClass.java

Ex2_WebViewDemo.java

Ex3_FileReadDemo.java

Ex3_FileWriteDemo.java

Exam_DbTest.java

Exam_DbTest2.java

MyDbHelper.java


'학원수업 > 안드로이드' 카테고리의 다른 글

학원 31일차 복습(4/25)  (0) 2018.04.25
학원 30일차 복습(4/24)  (0) 2018.04.25
학원 29일차 복습(4/23)  (0) 2018.04.23
학원 27일차 복습(4/19)  (0) 2018.04.19
학원 26일차 복습(4/18)  (0) 2018.04.18

이론


StringBuffer를 사용해라

향상된 for문을 사용해라

제네릭을 사용해라

인터페이스를 활용해라


인텐트 구성

인텐트(Intent)는 컴포넌트에 액션, 데이터 등을 전달하는 메시지 객체이다. 


명시적 인텐트

호출할 class를 명시적으로 정한 Intent


엑티비티 -> 서비스 -> 브로드캐스트리시버 -> 컨텐트프로바이더


뷰들은 직접 접근하기 힘듬, 어뎁터를 사용


글자크기는 sp를 사용

UI크기는 dp를 사용



실습


ex1_explict_main.xml

ex1_listview.xml

ex2_column.xml

ex3_table.xml

exam1_form.xml

exam5_sub.xml

Ex1_ListView.java

Ex3_Table.java

Ex1_ExplicitIntentMain.java

Ex1_ExplicitIntentSub.java

Exam.java

Exam_Main.java

Exam_Sub.java

Exam5_Main.java

Exam5_Sub.java


'학원수업 > 안드로이드' 카테고리의 다른 글

학원 31일차 복습(4/25)  (0) 2018.04.25
학원 30일차 복습(4/24)  (0) 2018.04.25
학원 29일차 복습(4/23)  (0) 2018.04.23
학원 28일차 복습(4/20)  (0) 2018.04.20
학원 26일차 복습(4/18)  (0) 2018.04.18

이론


AndroidManifest.xml: 안드로이드의 핵심파일이다.


액티비티는 여러개 가능

intent와 launcher를 가진 액티비티는 오직 하나

onCreate를 실행시켜줌 액티비티시작(메인메소드 개념)


안드로이드는 모든 리소스를 스태틱내부클래스 안의 자원으로 관리한다.


안드로이드에서 리스너 받는 3가지방법

1. implements

2. 내부익명클래스

3. 속성값으로 클래스 재정의


실습


res/layout/activity_main.xml

res/layout/ex1_hello.xml

res/layout/ex1_hello3.xml

res/layout/exam.xml

java/kr.or.kosta.myand0418/MainActivity.java

java/kr.or.kosta.myand0418/Ex1_Hello.java

java/kr.or.kosta.myand0418/Ex1_Hello2.java

java/kr.or.kosta.myand0418/Ex1_Hello3.java

java/kr.or.kosta.myand0418/Exam.java


'학원수업 > 안드로이드' 카테고리의 다른 글

학원 31일차 복습(4/25)  (0) 2018.04.25
학원 30일차 복습(4/24)  (0) 2018.04.25
학원 29일차 복습(4/23)  (0) 2018.04.23
학원 28일차 복습(4/20)  (0) 2018.04.20
학원 27일차 복습(4/19)  (0) 2018.04.19

+ Recent posts