Kotlin 開發第 27 天 ShakeShake ( SensorManager )

這次通過設備的 Sensor 判斷使用者是否有搖晃手機(類似微信的搖一搖功能)

  • 偵測手機搖動狀況
  • 搖晃後更換圖片、震動手機
  • 設定 2秒內只發動一次事件(搖晃過程會一直拿到 Sensor 數據,但不希望因此在短時間內連續震動或換圖)

ShakeShake

通過 SensorManager 來獲取 Sensor,Vibrator 來震動手機。


SensorManager

要使用 Sensor 的步驟很簡短,和 system 要到 SensorManager,在要到對應的 sensor.

然後 register Listener 用來接收 sensor 拿到的數據

SensorEventListener

這裡以 Accelerometer 為例,當使用者搖動手機的時候,我們就執行 shakeHandler()

ShakeHandler

通過 isChangingPhoto 這個自己定屬性,來防止因為搖動過程中多次觸發事件。

當我們接收到搖動事件的時候,
就先將 isChangingPhoto 改為 true,並開始更換圖片和震動手機( changImage() / doVibrate())

然後執行一個 Handler 相隔一秒以後在將 isChangingPhoto 改為 false.

SensorList

和 iOS 開發環境很不一樣的是,Android 的硬件設備都來自各種不同的廠商,但在 Android 中有定義 20幾種傳感器。

其中常用的應該是陀螺儀、加速計、方向傳感器、重力傳感器等。

我們可以通過 getSensorList 來拿到這個設備支援的 Sensor

比如我們這裡印出 sensor 類型、廠商名稱、版本

這是紅米手機的一個例子


Log

我們經常通過 android.util.Log 來印出一些資訊,而常見的有這幾個 Log 方法

  • Log.v – v 代表 verbose – 任何信息都會輸出
  • Log.d – d 代表 debug – 輸出調試信息
  • Log.i – i 代表 information
  • Log.w – w 代表 warning – 輸出警告資訊
  • Log.e –  e 代表 error – 輸出警告資訊。

參考

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *