android

system screen rotate click listener

노명규 2023. 3. 7. 18:09
private val autoRotateObserver = AutoRotateObserver(this, listener)
contentResolver.registerContentObserver(
    Settings.System.getUriFor(Settings.System.ACCELEROMETER_ROTATION),
    true, autoRotateObserver
)
override fun onDestroy() {
    super.onDestroy()
    contentResolver.unregisterContentObserver(autoRotateObserver)
}
class AutoRotateObserver(context: Context, listener: RotateConfigEventListener) : ContentObserver(null) {

    private val mContext: Context = context
    private val listener = listener

    override fun onChange(selfChange: Boolean) {
        super.onChange(selfChange)
        // 설정값이 변경되면 호출됨
        val autoRotateEnabled = Settings.System.getInt( mContext.contentResolver, Settings.System.ACCELEROMETER_ROTATION, 0) == 1

//        Log.d(LOGTAG,"AutoRotateObserver onChange selfChange : ${selfChange} / ${autoRotateEnabled}")
        listener.onChangeRotate(autoRotateEnabled)
    }
}

autoRoateEnabled이 true면 회전 on, false면 off