Learn & Record

[FastCampus] Android (구현 2,3) / Android 심화 (Android OS, Android 기본 요소, OT) 본문

Dev/Android

[FastCampus] Android (구현 2,3) / Android 심화 (Android OS, Android 기본 요소, OT)

Walker_ 2024. 2. 13. 23:52

- 영상 뷰 : MediaController

- 크기가 큰 영상 : Exoplayer ( 기능이 다양함, 사용이 쉽다)

- DRM(디지털 저작권)을 보장할 수 있다

 

[YoutubeActivity.kt]

package com.example.fastcampus

import android.content.Context
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory
import java.util.zip.Inflater

class YoutubeActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_youtube)

        val retrofit = Retrofit.Builder()
            .baseUrl("http://mellowcode.org/")
            .addConverterFactory(GsonConverterFactory.create())
            .build()
        val retrofitService = retrofit.create(RetrofitService::class.java)

        retrofitService.getYoutubeItemList().enqueue(object:Callback<ArrayList<YoutubeItem>>{
            override fun onResponse(
                call: Call<ArrayList<YoutubeItem>>,
                response: Response<ArrayList<YoutubeItem>>
            ) {
                val youtubeItemList = response.body()
                val adapter = YoutubeListAdapter(
                    youtubeItemList!!,
                    LayoutInflater.from(this@YoutubeActivity),
                    this@YoutubeActivity
                )
            }

            override fun onFailure(call: Call<ArrayList<YoutubeItem>>, t: Throwable) {
                Log.d("youyou", "fail" + t.message)
            }
        })
    }
}

class YoutubeListAdapter(
    val youtubeItemList : ArrayList<YoutubeItem>,
    val inflater: LayoutInflater,
    val contenxt : Context
): RecyclerView.Adapter<YoutubeListAdapter.ViewHolder>(){

    inner class ViewHolder(itemView: View): RecyclerView.ViewHolder(itemView) {
        val title : TextView
        val thumnail : ImageView
        val content : TextView

        init {
            title = itemView.findViewById(R.id.title)
            thumnail = itemView.findViewById(R.id.thumbnail)
            content = itemView.findViewById(R.id.content)

            itemView.setOnClickListener{
                val position: Int = adapterPosition
                val intent = Intent(contenxt, YoutubeItemActivity::class.java)
                contenxt.startActivity(intent)
            }
        }

    }

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
        val view = inflater.inflate(R.layout.youtube_list_item, parent, false)
        return ViewHolder(view)
    }

    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        holder.title.text = youtubeItemList.get(position).title
        holder.content.text = youtubeItemList.get(position).content
    }

    override fun getItemCount(): Int {
        return youtubeItemList.size
    }
}

 

 

2. Android OS

 - Linux 기반의 운영체제

 - 오픈소스 기반

 - 스마트폰 OS의 약 70%를 차지

 - 스마트폰 뿐만 아니라 웨어러블, TV, 자동차 등 다양한 플랫폼에서 동작

 - 버저닝이 디저트 이름으로 되어 있음

 

3. Android 기본 요소

 - 앱 구성요소 : 필수적인 구성요소로, 각각은 시스템이나 사용자가 앱에 들어올 수 있는 진입점

 - Activity : 앱과 사용자가 상호작용을 하기 위한 진입점

   - 모든 앱에 반드시 1개 이상 존재

   - Activity는 사용자와 상호작용을 위한 UI가 있음 (입력값 받음, 

   - Lifecycle이 있음

 - Service : 백그라운에서 오래 실행되는 작업 수행을 위한 컴포넌트

   - 사용자가 다른 앱으로 전환하더라도 백그라운드에서 계속 실행

   - 포그라운드 서비스 (사용자에게 잘 보이는 작업, 알림 표시 ex) 음악재생 등)

   - 백그라운드 서비스 (사용자에게 잘 보이지 않는 작업 ex) 업데이트, 파일 압축 등)

   - 바인드 서비스 (바인딩 된 서비스는 클라이언트-서버 인터페이스를 제공해 서비스와 상호작용함)

 - BroadcastReceiver

   - OS에서 발생하는 다양한 이벤트와 정보를 앱에서 수신할 수 있도록 하는 구성요소

   - 예시 : 배터리 부족, 화면 종료 

 - ContentProvider

   - 파일 시스템, SQLite 데이터 베이스, 웹상이나 앱이 액세스하는 저장 가능한 앱 데이터의 집합을 관리

   - 예시 : 연락처, 갤러리  

 - Manifest 

   - 앱의 필수적인 정보를 담고 있는 파일 

   - 앱의 패키지 이름, 앱의 구성요소, 권한, 필요한 기능

 - Intent

   - 구성요소간의 통신을 할 수 있게 하는 역할

   - 앱에 포함된 구성요소 외에, 다른 앺의 구성요소와도 통신할 수 있음

   - 명시적 인텐트 (특정 액티비티를 명확히 실행할 경우), 암시적 인텐트 (실행될 대상이 달라질 수 있는 경우)

 

 

FastCampus 강의 : https://fastcampus.co.kr/dev_online_androidstandard

 

Android 앱 개발의 정석 with Kotlin 올인원 패키지 Online. | 패스트캠퍼스

앱 개발 기초 지식부터 배포 후 유지·보수까지 한 번에 끝내는 Android 앱 개발 입문 강의 | 입문자부터 주니어 개발자까지, 모두를 위한 Android 앱 개발 강의! 3개의 클론프로젝트와 4개의 기능 구

fastcampus.co.kr

 

FastCampus 강의 : https://fastcampus.co.kr/dev_online_androidappfinal

 

35개 프로젝트로 배우는 Android 앱 개발 feat. Jetpack Compose 초격차 패키지 Online. | 패스트캠퍼스

35개 프로젝트로 학습하는 '안드로이드 앱 개발의 모든것'. 입문자부터 실무자까지 아우르는 101시간의 풍부한 커리큘럼을 통해 무한한 성장 뿐 아니라 원하는 기업으로의 이직에 성공하세요.

fastcampus.co.kr