androidbikekit
螢幕鎖

螢幕鎖

狀態列舉

/**
 * 螢幕鎖狀態
 * @property Lock 上鎖狀態
 * @property Unlock 解鎖狀態
 * @property Disable 不可使用狀態。(嘗試密碼超過限制次數)
 * @property Unknown 未知狀態
 */
enum class ScreenLockState(val state: Int) {
    Lock(1),
    Unlock(2),
    Disable(3),
    Unknown(99)
}

監聽狀態

FarmlandBikeKit
    .sleipnir()
    .deviceInfoPublisher
    .map { it as AppleDeviceInfo }
    .subscribe(
        { deviceInfo ->
            val state = deviceInfo.screenLockState  // 獲取螢幕鎖狀態
            val errorCount = deviceInfo.screenLockErrorCount  // 獲取螢幕鎖當前錯誤次數
        },
        {
            // Observable Error
        }
    )
 

設定螢幕狀態

鎖定

FarmlandBikeKit
    .sleipnir()
    .setScreenAccessControl(
        action = ScreenLockState.Lock,
        password = null
    )
    .doOnComplete {
        println("下發完成")
    }
    .doOnError {
        println("下發錯誤 $it")
    }
    .subscribe()

解鎖

FarmlandBikeKit
    .sleipnir()
    .setScreenAccessControl(
        action = ScreenLockState.Unlock,
        password = "0000"
    )
    .doOnComplete {
        println("下發完成")
    }
    .doOnError {
        println("下發錯誤 $it")
    }
    .subscribe()

存取密碼

非解鎖狀態 下執行密碼的存取,則會捕獲例外 ScreenIsLock

FarmlandBikeKit
    .sleipnir()
    .getCurrentScreenLockPassword()
    .doOnSuccess {
        println("當前密碼 $it")
    }
    .doOnError {
        println("獲取當前密碼錯誤 $it")
    }
    .subscribe()
 
FarmlandBikeKit
    .sleipnir()
    .setScreenLockPassword("1111")
    .doOnComplete { println("更改密碼成功") }
    .doOnError { println("更改密碼失敗 $it") }
    .subscribe()

更改密碼錯誤上限次數

非解鎖狀態 下,若修改上限次數,則會捕獲例外 ScreenIsLock

FarmlandBikeKit
    .sleipnir()
    .setScreenLockErrorLimit(10)
    .doOnComplete { println("密碼設定上限成功") }
    .doOnError { println("設定密碼上限失敗 $it") }
    .subscribe()

設置 Token

非解鎖狀態 下,若進行設置螢幕鎖 Token,則會捕獲例外 ScreenIsLock

Token 型態:UUID

FarmlandBikeKit
    .sleipnir()
    .setScreenLockToken(uuid)
    .doOnComplete { println("設置螢幕鎖 Token 成功") }
    .subscribe()

重置狀態

  • 當螢幕鎖狀態為 Disable (不可使用狀態) 時,可呼叫此方法,重置螢幕鎖狀態,錯誤次數將歸 0,密碼將回復預設值 (0000)。
  • 當帶入的 Token 與電控系統所保存之 Token 不相符,則會捕獲例外 ScreenLockTokenIsNotAllowed
  • 當電控系統尚未保存過任何 Token,此時呼叫此方法,則會捕獲例外 ScreenLockTokenIsInvalid
FarmlandBikeKit
    .sleipnir()
    .resetScreenAccessControl(uuid)
    .doOnComplete { println("重置螢幕鎖成功") }
    .doOnError { println("重置螢幕鎖失敗 $it") }
    .subscribe()

檢查 Token 是否有效

結果回傳型態:Boolean

FarmlandBikeKit
    .sleipnir()
    .checkScreenLockTokenIsValid()
    .doOnSuccess { println("檢查螢幕鎖 Token 是否有效 $it") }
    .doOnError { println("檢查螢幕鎖 Token 是否有效錯誤 $it") }
    .subscribe()