일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 코틀린 이미지저장 #파일저장
- 안드로이드 mvvm
- 안드로이드 스튜디오 애뮬레이터
- 라이브데이터 postValue
- 스레드 #코루틴
- 커스텀스피너
- bluetoothmanager
- 모의위치 주입
- compse collectAsState
- 토글 험수
- #큐구조 #큐다운로드
- viewmodelscope
- 1회용 플라스틱컵
- json 저장
- 코루틴스코프
- TwomonUSB
- 비콘스캐닝
- apk이름변경
- 플라스틱 생분해
- 안드로이드 비콘
- 안드로이드 sms
- 안드로이드스튜디오 jdk
- 셀룰로오스-g-폴리락타이드 공중합체
- var 와 val
- Room 데이터베이스 업데이트
- compse state
- 코틀린 트리거 버튼
- 코루틴 job
- TowmonUSB 연결오류
- withContext
- Today
- Total
목록분류 전체보기 (53)
EnjoyLife

chatGpt 가 설명한거여서, 여러분이 읽기에 멘트가 거북하거나 느끼할수 있다는점 감안하여 주시기 바랍니다. 설명은 아주 완벽합니다. 참고로. 그래프의 "Application Code" 은 안드로이드 앱을 의미합니다. MediaPlayer 달리앱안에 Exoplayer 가 종속되어 있습니다이 다이어그램을 쉽게 설명하자면, ExoPlayer가 어떻게 음원이나 비디오를 재생하는지 단계별로 나눠서 보여주는 거야. 각 부분이 어떤 역할을 하는지 간단하게 알아볼게.1. Application Code (앱 코드)너는 앱을 개발하면서 ExoPlayer에게 "음악 재생해!", "잠깐 멈춰!", "저기로 이동해!" 같은 명령을 내릴 거야. 그 명령들은 prepare(), seekTo(), play(), pause() ..
class MainActivity : AppCompatActivity() { companion object { const val REQUEST_CODE = 1 } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val button = findViewById(R.id.button) button.setOnClickListener { val intent = Intent(this, SecondActivity::class.java) ..
val isOpen = MutableLiveData(false) fun toggleVisibility() { isOpen.value = !(isOpen.value ?: false) } 위 코드와 아래코드는 동일하다. 위의 코드가 간결하기에 위의 코드를 항상 사용하는데, 항상 헷갈린다.그래서 여기에 기록한다 ㅜㅜ val isOpen = MutableLiveData(false)fun toggleVisibility() { if (isOpen.value == true) { isOpen.value = false } else { isOpen.value = true }}
@Preview(showBackground = true)@OptIn(ExperimentalMaterial3Api::class)@Composablefun Test() { val viewModel: MainViewModel = viewModel() val inputTxt by viewModel.inputTxt.collectAsState() val outTxt by viewModel.outTxt.collectAsState()// var inputTxt by remember {// mutableStateOf("")// } Log.e("Test", "inputTxt: $inputTxt") //var outTxt by remember { mutableStateOf(..
서버에서 데이터 수신시 특수기호(+ , *,공백)에 대한 처리가 필요할 경우 아래 함수를 적용한다. fun encodeUrlPart(originalUrl: String): String { val url = URL(originalUrl) val path = url.path.split("/").joinToString("/") { URLEncoder.encode(it, StandardCharsets.UTF_8.toString()) .replace("%2F", "/") .replace("+", "%20") .replace(" ", "%2B") } val ..
val numbers = listOf(1,2,3) 와 val numbers = mutableListOf(1,2,3) 에서 val 의 쓰임새가 완전히 다르다. 1) numbers 에 mutableListOf 객체생성을 하고 또 아래처럼 객체를 생성하거나 numbers = mutableListOf(5,7,23,44) 2) 다른 변수의 주소를 참조하게 하면 오류를 발생시킨다. val murisu = mutableListOf(1,2,3) numbers = murisu 즉 자바개념으로 설명하면 new로 생성후 다시 new 생성만 하지 않으면 된다. 그리고 참조주소를 변경하면 안된다. 아래처럼 같은주소안에 값을 수백번, 수천번 변경해도 상관없다.아주 중요한 개념이다. number[0] = 4num..
fun downloadImage(url: String, folderName: String, fileName: String?) { val appContext = applicationContext() //본인코드에 맞게 가져온다. // 폴더 생성 val folder = File(appContext.filesDir, folderName) if (!folder.exists() && !folder.mkdirs()) { Log.e("FileRepository", "Failed to create directory: $folderName") return } // 파일 경로 설정 val outputFile = File(folder, fileName) ..
https://developer.android.com/studio/write/annotations?hl=ko프로젝트에 주석 추가하기프로젝트에서 주석을 사용하려면 라이브러리나 앱에 androidx.annotation:annotation 종속 항목을 추가합니다. 그러면 추가하는 주석에 대해 코드 검사 또는 lint 작업을 실행할 때 검사가 이루어집니다.Jetpack Annotations 라이브러리 종속 항목 추가Jetpack Annotations 라이브러리는 Google의 Maven 저장소에 게시됩니다. 프로젝트에 Jetpack Annotations 라이브러리를 추가하려면 build.gradle 또는 build.gradle.kts 파일의 dependencies 블록에 다음 줄을 포함합니다.KotlinGroo..