세팅 패널(Settings Pannel)은 3rd party 앱에서 직접 세팅의 UI를 패널로 띄우는 기능입니다. 패널로 띄우면 자신의 앱을 가리지 않기 때문에 불필요한 앱 전환이 필요없습니다. 안드로이드 공홈에서 소개하는 그림을 보면 어떤 부분에서 UX가 좋아지는지 느낄 수 있습니다.
위의 그림은 브라우저를 실행하려고 하지만 인터넷이 연결되지 않아 페이지를 띄우지 못하였습니다. 기존에 사용자는 Wifi를 띄우기 위해 세팅앱을 들어가거나, 상태바를 내려 Wifi를 켰어야 했습니다. 하지만 브라우저의 Get Connected
버튼을 누르면 Wifi에 대한 세팅패널이 나와 Wifi를 연결할 수 있습니다.
세팅 패널은 4개의 설정을 지원합니다.
- Internet 연결
- Wifi 연결
- NFC 설정
- Volume 설정
샘플 코드
세팅 패널을 띄우는 코드는 매우 간단합니다. 특정 액션으로 인텐트를 생성하고 startActivity로 실행해주면 됩니다.
val panelIntent = Intent(Settings.Panel.settings_panel_type)
startActivity(panelIntent)
위의 코드에서 settings_panel_type
은 다음 4개의 액션이 들어갈 수 있습니다.
- ACTION_INTERNET_CONNECTIVITY : 인터넷 연결에 대한 설정을 보여줌
- ACTION_WIFI : WIFI 연결에 대한 설정을 보여줌
- ACTION_NFC : NFC에 대한 설정을 보여줌
- ACTION_VOLUME : Volume에 대한 설정을 보여줌
코드로 구현하면 다음과 같습니다.
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
btnInternet.setOnClickListener {
val panelIntent = Intent(Settings.Panel.ACTION_INTERNET_CONNECTIVITY)
startActivity(panelIntent)
}
btnWifi.setOnClickListener {
val panelIntent = Intent(Settings.Panel.ACTION_WIFI)
startActivity(panelIntent)
}
btnNfc.setOnClickListener {
val panelIntent = Intent(Settings.Panel.ACTION_NFC)
startActivity(panelIntent)
}
btnVolume.setOnClickListener {
val panelIntent = Intent(Settings.Panel.ACTION_VOLUME)
startActivity(panelIntent)
}
}
}
ACTION_INTERNET_CONNECTIVITY
인터넷 설정에 대한 세팅 패널 화면입니다.
ACTION_WIFI
WIFI 설정에 대한 세팅 패널 화면입니다.
ACTION_NFC
NFC 설정에 대한 세팅 패널 화면입니다.
ACTION_VOLUME
볼륨 설정에 대한 세팅 패널 화면입니다.
정리
현재 안드로이드 Q는 Preview만 공개되었습니다. 구글은 앞으로 AndoridX에도 세팅패널을 지원할 계획이고, Q이하의 디바이스에도 사용할 수 있게 됩니다.
이 글에서 사용하는 샘플 코드는 GitHub에 있습니다.
참고
Loading script...
Related Posts
- Android 14 - 사진/동영상 파일, 일부 접근 권한 소개
- Android - adb push, pull로 파일 복사, 다운로드
- Android 14 - 암시적 인텐트 변경사항 및 문제 해결
- Jetpack Compose - Row와 Column
- Android 13, AOSP 오픈소스 다운로드 및 빌드
- Android 13 - 세분화된 미디어 파일 권한
- Android 13에서 Notification 권한 요청, 알림 띄우기
- Android 13에서 'Access blocked: ComponentInfo' 에러 해결
- 에러 해결: android gradle plugin requires java 11 to run. you are currently using java 1.8.
- 안드로이드 - 코루틴과 Retrofit으로 비동기 통신 예제
- 안드로이드 - 코루틴으로 URL 이미지 불러오기
- Android - 진동, Vibrator, VibrationEffect 예제
- Some problems were found with the configuration of task 에러 수정
- Query method parameters should either be a type that can be converted into a database column or a List
- 우분투에서 Android 12 오픈소스 다운로드 및 빌드
- Android - ViewModel을 생성하는 방법
- Android - Transformations.map(), switchMap() 차이점
- Android - Transformations.distinctUntilChanged() 소개
- Android - TabLayout 구현 방법 (+ ViewPager2)
- Android - 휴대폰 전화번호 가져오는 방법
- Android 12 - Splash Screens 알아보기
- Android 12 - Incremental Install (Play as you Download) 소개
- Android - adb 명령어로 bugreport 로그 파일 추출
- Android - adb 명령어로 App 데이터 삭제
- Android - adb 명령어로 앱 비활성화, 활성화
- Android - adb 명령어로 특정 패키지의 PID 찾기
- Android - adb 명령어로 퍼미션 Grant 또는 Revoke
- Android - adb 명령어로 apk 설치, 삭제
- Android - adb 명령어로 특정 패키지의 프로세스 종료
- Android - adb 명령어로 screen capture 저장
- Android - adb 명령어로 System 앱 삭제, 설치
- Android - adb 명령어로 settings value 확인, 변경
- Android 12 - IntentFilter의 exported 명시적 선언
- Android - adb 명령어로 공장초기화(Factory reset)
- Android - adb logcat 명령어로 로그 출력