はじめに
今回は、react native組み込みのVibration
が正常に動作しない時にチェックしたこと、および振動フィードバックについて書いていきたいと思います。
発生した現象
react native expoで開発をしている際、バイブレーションの機能を使用する必要があったのでVibration.vibrate
を使用した。
手元でGoogle pixelとGalaxyでバイブレーションが動作することを確認したが、そのあとGoogle pixelで動作しないという報告を受けた。
調査した結果
主に以下2つの設定で、Vibration
を用いたバイブレーションが動作しないことがわかった。
- バッテリーセーバーがONの時
- 触覚フィードバックがOFF(0)の時
今回の直接の原因は、2個目の「触覚フィードバックがOFF(0)」だったようです。(自分で見つけられなかったのでとても落ち込みました...)
Androidにおける触覚フィードバックとは
触覚フィードバック(ハプティクスフィードバック)とは、ユーザーの操作による状態の遷移や重要なイベントなどが起きた時に振動を用いて知らせる機能です。
ゲーム機などで何かのアクションを起こしたときにコントローラーが振動するのは馴染み深いかと思いますが、それのスマホ版ということでしょうか。
Android Developersでは、触覚フィードバックのユースケースをいくつかあげています。
- 注意が必要なイベントをユーザーに通知するため。
たとえば、電話の着信やテキスト メッセージ、カレンダー上の今後の会議などです。
- ユーザーの操作後にデバイスの状態変化を確認する場合。
たとえば、ボタンの押下に対するクリック フィードバック、スマートフォンのロック解除、指紋の承認または拒否、カメラの有効化などです。
- エフェクトでユーザーを喜ばせるため。
このような効果により、進行中のユーザー操作を強化したり、物理的な操作をエミュレートしたりできます。たとえば、スクロール フィードバック、所定の位置にスナップするスライダー、アニメーション、サウンド、動画、ゲームと同期した触覚効果などがあります。
私が実装していたのは、2つ目の「ユーザーの操作後にデバイスの状態変化を確認する場合」に該当していました。
有効に使えばユーザーに対していい効果をもたらせそうです。
ただ、私個人としては過去にスマートフォンが結構な頻度で振動して、少しうざったく感じてしまい振動関連の設定をす
べて消してしまうことがあったので、私のような人ばかりではないとは思いますがここぞという場面で使用するのを検討した方がいいのかな、と思います。
触覚フィードバックがOFF(0)の時でもバイブレーションを強制するのは可能か?
結論から言うと、私はできませんでした。react-native-haptic-feedbackというライブラリを使用して試してみましたが、私の環境では振動させられませんでした。
触覚フィードバックがOFF(0)の時でもバイブレーションをさせられる方法を知っている方はコメントでご教授くださると嬉しいです🙇♂️
おわりに
最後までお読みいただきありがとうございました。
今回の問題を通して、振動フィードバックという新たな知識を得られたので今後活かせる機会があれば活かしたいと思います!