본문 바로가기

728x90

프로젝트형 IoT 서비스 개발 4회차/3. 게이트웨이 디바이스 제어

(43)
[Day74] 2022-05-11(수) Android13 - Thread - 김서연 강사님 [1] Thread 1. Android Thread - 안드로이드 OS는 액티비티를 만들고 코드를 처리하기 위해서 쓰레드를 생성하고 실행한다. 이를 메인쓰레드(UI쓰레드)라 한다. - UI쓰레드는 아무 작업을 하고 있지 않아야, 즉, 유휴 상태여야 화면에 대한 작업이 가능하다. - UI쓰레드는 이벤트에 대한 처리를 해야 하므로 유휴상태로 유지해야 한다. - 개발자가 발생시킨 쓰레드에서는 화면처리를 할 수 없다. UI쓰레드에서만 화면 처리를 할 수 있다. - 화면에 출력된 상태에서 5초이상 반응하지 못하면 시스템에서 액티비티를 강제로 종료시킨다.(전화통화, 문자 등 스마트폰의 주된 기능을 방해받지 않고 실행할 수 있어야 하므로) - 비동기처리, 오래 걸리는 작업, 네트워크 연동은 쓰레드로 처리한다. 2. ..
[Day73] 2022-05-10(화) Android12 - Menu, Tab, View Pager - 김서연 강사님 [1] Menu 1. 메뉴 생성 예제 1) menu resource 생성 menu_drawer.xml 2) Drawer Layout 생성 (메인 화면) activity_drawer_test.xml navigation_header.xml (activity_drawer_test.xml 의 NavigationView의 속성 중 app:headerLayout에 들어가는 레이아웃) 3) themes.xml 리소스파일에 item 추가 themes.xml 4) 메뉴에 액션 추가 DrawerTest.kt package com.example.fragment.drawer import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import andro..
[Day72] 2022-05-09(월) Android11 - Fragment2 - 김서연 강사님 [1] Fragment 1. 데이터 전달 예제 - Activity -> Fragment 로 데이터 전달 (Activity/Fragment가 주체가 될 수 있음) - Fragment -> Activity 로 데이터 전달 (Activity/Fragment가 주체가 될 수 있음) 1) 메인 Activity activity_fragment_exam.xml SetGetTestFragmentActivity.kt package com.example.fragment.fragment import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.util.Log import android.view.View import andro..
[Day71] 2022-05-07(토) Android10 - Fragment1 - 김서연 강사님 [1] Fragment 1. Fragment Lifecycle 2. Lifecycle 확인 예제 1) 메인 화면 fragment_main.xml FragmentTestMainActivity.kt package com.example.fragment.fragment import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import com.example.fragment.R import kotlinx.android.synthetic.main.fragment_main.* class FragmentTestMainActivity : AppCompatActivity() { val firstFragment = FirstFragment() val..
[Day71] 2022-05-07(토) Android9 - Intent2(Activity2 - Launcher) - 김서연 강사님 [1] Intent(Activity - Launcher) - 어제 했던 intent 사용 방식은 최신 버전에서는 사용하지 않는 방식 1. Intent의 달라진 부분 1) ActivityResultLauncher객체 생성 2) ActivityResultLauncher객체 내부에서 registerForActivityResult를 생성하며 실행할 코드를 작성 => 액티비티를 실행하고 되돌아올 때 콜백이 실행되도록 설정 - registerForActivityResult 함수를 이용해서 작업 - registerForActivityResult 함수의 매개변수로 ActivityResultContracts 객체의 Static 함수들을 명시 [ActivityResultContracts종류] - StartActivityF..
[Day70] 2022-05-06(금) Android8 - Intent1(Activity1) - 김서연 강사님 [1] Intent(Activity) 1. Activity 호출 기본 예제 - 버튼을 클릭했을 때 지정한 activity가 호출되어 화면이 변경됨 - activity가 호출될 때 data를 같이 가지고 넘어가서 호출된 activity에서 활용 가능 1) 메인 화면 acivity_main.xml MainActivity.kt package com.example.intent import android.content.Intent import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import kotlinx.android.synthetic.main.activity_main.* class MainActivity : AppCompatAct..
[Day70] 2022-05-06(금) Android7 - MQTT 통신(Subscribe) - 김서연 강사님 [1] MQTT 통신 1. Subscribe 1) 라즈베리파이 led.py import paho.mqtt.client as mqtt import RPi.GPIO as gpio class LED: def __init__(self): gpio.setmode(gpio.BCM) self.led_pin = 22 gpio.setup(self.led_pin,gpio.OUT) def led_on(self): gpio.output(self.led_pin,gpio.HIGH) def led_off(self): gpio.output(self.led_pin,gpio.LOW) def clean(self): gpio.cleanup() mysensor.py # mysensor.py from threading import Thread..
[Day69] 2022-05-04(수) Android6 - MQTT 통신(세팅, Publish) - 김서연 강사님 [1] MQTT 통신 1. 안드로이드에서 MQTT 1) build.gradle(module) 파일에 라이브러리 등록 (dependencies 목록에 추가) 및 Sync now 클릭 implementation 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.0' implementation 'org.eclipse.paho:org.eclipse.paho.android.service:1.1.1' 2) MQTT는 외부 서버와 통신을 하기 때문에 권한 추가 - AndroidManifest.xml 파일에 추가 3) MQTT 라이브러리 내부에서 제공되는 Service 클래스를 AndroidManifest.xml 파일에 추가 - 백그라운드에서 지속적으로 연결을 수행하는 기능..

728x90