Learn & Record
[FastCampus] Android (Network 실습 7, 8 / 권한 이론, 실습 / 프로젝트 강의 1) 본문
[FastCampus] Android (Network 실습 7, 8 / 권한 이론, 실습 / 프로젝트 강의 1)
Walker_ 2024. 2. 12. 10:32
1. Profieler(앱분석툴) 요소
- CPU, MEMORY, NETWORK, ENERGY
- CPU를 최대 50% 사용이 좋음
- Memory 탭을 통해 메모리 누수 (불필요한 메모리)가 발생하지 않는 지 확인
- Network : 주고 받는 객체와 송수신된 시간을 확인 가능
findViewById<TextView>(R.id.easyEreateStudent).setOnClickListener {
val student = StudentFromServer(name = "서울", age =200, intro = "well com to seoul")
retrofitService.easyCreateStudent(student).enqueue(object : Callback<StudentFromServer>{
override fun onResponse(
call: Call<StudentFromServer>,
response: Response<StudentFromServer>
) {
val student = response.body()
Log.d("testt", "등록한 학생 : " + student!!.name)
}
override fun onFailure(call: Call<StudentFromServer>, t: Throwable) {
Log.d("testt", "요청 실패")
}
})
}
2. 권한
- 사용자에게 특정 부분에 접근 할 수 있는 권한을 요청한다
- 인터넷, GPS
1> 일반권한
- 사용자에게 권한을 요청 하지 않습니다
2> 위험권한
- 사용자에게 권한을 요청한다
- 사진, 카메라, 주소록 -> 개인정보에 관련된 권한
구글정책
- API 버전에 따라 다르다
package com.example.fastcampus
import android.content.pm.PackageManager
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.widget.TextView
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
class PermisionActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_permision)
findViewById<TextView>(R.id.askPermission).setOnClickListener {
val cameraPermission = ContextCompat.checkSelfPermission(
this,
android.Manifest.permission.CAMERA
)
if ( cameraPermission != PackageManager.PERMISSION_GRANTED) {
// 권한이 없는 경우
ActivityCompat.requestPermissions(
this,
arrayOf(android.Manifest.permission.CAMERA, android.Manifest.permission.ACCEPT_HANDOVER),
1000
)
} else {
// 권한이 있는 경우
Log.d("testt", "권한 있음")
}
}
}
override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<out String>,
grantResults: IntArray
) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
if(requestCode == 1000) {
// 우리가 보낸 권한 요청이 맞다면
if(grantResults[0] == PackageManager.PERMISSION_GRANTED){
Log.d("testt", "승낙")
} else {
Log.d("testt", "거부")
}
}
}
}
3. 유튜브 프로젝트 강의 1
- Activity 생성 > (Run) Edit Configurations 설정 > manifests 설정
- XML 파일 > LinearLayout 변경 > orientatito(Vertical) 설정
- src, TextView설정 > recyclerview 설정
<?xml version="1.0" encoding="utf-8"?>
<androidx.appcompat.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".YoutubeActivity">
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/black"
android:padding="12dp"
android:gravity="center_vertical">
<ImageView
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="16dp"
android:src="@drawable/youtube_logo"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Youtube"
android:textColor="@color/white"
android:textSize="24dp"/>
</androidx.appcompat.widget.LinearLayoutCompat>
<androidx.recyclerview.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"/>
</androidx.appcompat.widget.LinearLayoutCompat>
- 통신작업 : retrofit 설정 > 레트로핏 서비스.kt 파일에 유튜브 arraylist 추가
- implement method 추가
package com.example.fastcampus
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory
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>>
) {
}
override fun onFailure(call: Call<ArrayList<YoutubeItem>>, t: Throwable) {
}
})
}
}
- 강사님이 URL에 설정을 바꾸셨는지 데이터가 오지 않아 당황스럽지만, 완강을 다해가니까 그러려니 할수있다.
FastCampus 강의 : https://fastcampus.co.kr/dev_online_androidstandard
Android 앱 개발의 정석 with Kotlin 올인원 패키지 Online. | 패스트캠퍼스
앱 개발 기초 지식부터 배포 후 유지·보수까지 한 번에 끝내는 Android 앱 개발 입문 강의 | 입문자부터 주니어 개발자까지, 모두를 위한 Android 앱 개발 강의! 3개의 클론프로젝트와 4개의 기능 구
fastcampus.co.kr