안드로이드 Q - Settings Pannel에 대해서 알아보기

세팅 패널(Settings Pannel)은 3rd party 앱에서 직접 세팅의 UI를 패널로 띄우는 기능입니다. 패널로 띄우면 자신의 앱을 가리지 않기 때문에 불필요한 앱 전환이 필요없습니다. 안드로이드 공홈에서 소개하는 그림을 보면 어떤 부분에서 UX가 좋아지는지 느낄 수 있습니다.

Settings pannel 위의 그림은 브라우저를 실행하려고 하지만 인터넷이 연결되지 않아 페이지를 띄우지 못하였습니다. 기존에 사용자는 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

인터넷 설정에 대한 세팅 패널 화면입니다.

Settings pannel for internet

ACTION_WIFI

WIFI 설정에 대한 세팅 패널 화면입니다.

Settings pannel for wifi

ACTION_NFC

NFC 설정에 대한 세팅 패널 화면입니다.

Settings pannel for nfc

ACTION_VOLUME

볼륨 설정에 대한 세팅 패널 화면입니다.

Settings pannel for volume

정리

현재 안드로이드 Q는 Preview만 공개되었습니다. 구글은 앞으로 AndoridX에도 세팅패널을 지원할 계획이고, Q이하의 디바이스에도 사용할 수 있게 됩니다.

이 글에서 사용하는 샘플 코드는 GitHub에 있습니다.

참고

Loading script...

Related Posts

codechachaCopyright ©2019 codechacha