螢幕鎖
狀態列舉
/**
* 螢幕鎖狀態
* @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()