본문 바로가기
반응형

Tips/Android10

[Android] socket failed: EPERM (Operation not permitted) 해결하기 socket failed: EPERM (Operation not permitted) 해결하기 INTERNET 권한이 없어서 그렇다. uses-permission으로 권한을 요청하면 해결된다. ... 만약 그래도 안되면 application 태그의 usesCleartextTraffic을 true로 설정해주자. ... 2022. 9. 7.
[Android] Status Bar, Navigation Bar 없애기 Status Bar, Navigation Bar 없애기 앱을 만들다 보면 상태표시줄과 네비게이션 바 없이 전체화면으로 출력하고 싶을 때가 있다. 이럴 때 window.decorView.systemUiVisibility를 통해 전체화면으로 만들 수 있다. API 30 이후로는 systemUiVisibility가 Deprecated 되어서 windowInsetsController를 대신 사용해야 한다. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { window.setDecorFitsSystemWindows(false) window.insetsController?.hide(WindowInsets.Type.systemBars() or WindowInsets.Ty.. 2022. 7. 19.
[Android] RecyclerView 스크롤 비활성화 Intro Android에서 RecyclerView를 사용할 때 스크롤을 비활서화하고 싶을 때가 있다. 하지만 기존의 스크롤 활성화 여부를 설정하는 setLayoutFrozen이 Deprecated 되었는데, 이제는 아래와 같은 방법으로 스크롤 활성화 여부를 변경할 수 있다. 스크롤 비활성화 recyclerView.suppressLayout(true) 스크롤 활성화 recyclerView.suppressLayout(false) suppressLayout을 true로 설정해두면 notifyXXXChanged로 인한 Layout 업데이트 작업이 일어나지 않게 된다. 따라서 데이터가 변경되어야 할 경우 잠깐 false로 설정했다가 notify 후 true로 바꿔주면 된다. recyclerView.suppres.. 2022. 5. 17.
[Android] Vibrator 클래스로 진동 제어하기 Intro 진행중인 프로젝트에서 진동 기능을 사용하게 되어 개발 중 조사한 내용을 정리해봤다. Vibrator 인스턴스 생성 진동을 제어하기 위한 권한 설정 코드이다. vibrator = getSystemService(Vibrator::class.java) 클래스로 getSystemService를 호출하면 SDK 버전에 관계없이 Vibrator 인스턴스를 반환해준다. Android API 31부터는 Context.VIBRATOR_SERVICE가 Deprecated 되어서 String으로 받아오고싶다면 아래와 같이 처리해야 한다. vibrator = if(Build.VERSION.SDK_INT < Build.VERSION_CODES.S) { getSystemService(Context.VIBRATOR_SE.. 2022. 5. 16.
[Android] currentTimeMillis로 절대시간 구하기 Intro 앱 개발 도중 빌드 시간을 빌드번호로 만들기 위해 System.currentTimeMillis로 받은 현재 시간을 SimpleDateFormat 클래스를 통해 20220503101100과 같은 형식으로 변환해주는 코드를 작성했다. //BuildConfig.BUILDTIME: 빌드 시 호출된 System.currentTimeMillis() 결과값 binding.buttonTest.text = SimpleDateFormat("yyyyMMddHHmmss", Locale.getDefault()) .format(BuildConfig.BUILDTIME) 그런데 이 코드를 테스트폰과 AVD에서 실행시켰을 때, 둘의 현재 시간이 달라 빌드번호가 다르게 나왔다. SimpleDateFormat이 절대시간이 아닌.. 2022. 5. 3.
[Android] Binding 사용 시 모든 요소가 아무 동작도 안할 때 Binding 사용 시 모든 요소가 아무 동작도 안할 때 viewBinding 사용 시 간혹 OnClick, OnCheckChange 등의 이벤트들이 하나도 동작하지 않을 떄가 있다. binding 사용 후 binding을 통해 이벤트를 등록했으면 그걸 보여주도록 설정을 변경해야 하는데, 기존 코드를 그대로 놔둬서 오류가 발생하는 것이었다. Activity의 경우 setContentView의 인자값을 binding.root로 변경해주면 된다. override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityMainBinding.inflate(layoutInflater) setCon.. 2022. 2. 9.
[Android] 오디오 모드 변경 및 볼륨 조절 권한 설정 소리 설정을 변경하기 위해 Write Settings 권한이 필요하다. AndroidManifest.xml Write Settings는 시스템 권한이라 앱 실행 시 자동으로 권한을 묻는 창이 뜨지 않기 때문에 설정 창을 띄워서 사용자가 직접 권한을 부여하도록 해야 한다. MainActivity.kt private fun requestWriteSettingsPermission() { if(!Settings.System.canWrite(this)) { Toast.makeText(this, "알림음을 켜기 위해 권한 설정이 필요합니다.", Toast.LENGTH_SHORT).show() startActivity(Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS)) } .. 2022. 2. 7.
[Android] Ringtone 재생 및 목록 가져오기 Ringtone 재생 val ringtoneUri: Uri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM) val ringtone: Ringtone = RingtoneManager.getRingtone(context, ringtoneUri) ringtone.play() ringtoneUri 자리에 아래의 Ringtone 목록에 조회된 Uri로 대체할 수 있다. Ringtone 목록 가져오기 RingtoneManager(context).cursor.run { Log.d(TAG, "Ringtones: ") while(moveToNext()) { Log.d(TAG, "${getString(RingtoneManager.TITLE_COLUMN_INDEX).. 2022. 1. 24.
[Android] Quick Documentation 안뜨는 현상 해결법 Intro Android Studio를 사용해 개발하다 보면 Quick Documentation이 아예 켜지지 않거나, "Fetching Documentation..." 이라는 메시지만 나와 답답할 때가 있습니다. 이번 시간에는 Quick Documentation이 뜨지 않는 현상을 해결하는 방법에 대해 알아보겠습니다. 마우스를 올려도 아무런 창이 뜨지 않는 경우 [File] - [Settings] - [Editor] - [General] - [Code Completion]의 Show the documentation pop in 옵션을 활성화합니다. Fetching Documentation 메시지만 뜨는 경우 [File] - [Settings] - [Appearance] - [System Settings.. 2021. 12. 23.
반응형