プログラマーですが何か?まだプログラマーですが何か?プログラマーネタとアスリートネタ中心。年最初のブログとなりました。本年もよろしくおねがいします。自分が作って公開するアプリの中にスマホのモーションセンサーを使うものが少なからず存在しています。左に傾けたら左矢印が押された時と同じ挙動にする、など)。アプリケーションみたいなものも作れる、といった便利さがありました。最近になって、少し前に作ったモーションセンサー対応アプリが現在のスマホでは動かなくなっていることに気づきました。Android)側のセキュリティ強化によるものが原因でした。使っていると同様には動かない、といった現象に遭遇するわけです。提供側の事情もあるし、動かなくなったからといって不満ばかり言っていても動くようになるわけでもありません。今後の変更も含めてアプリケーション提供側が対応していくしかないのかなあ、、と半ばあきらめています。側の変更の頻度が高すぎて「やってられん!」という気になってしまうのも事実です。OS(とバージョン)別モーションセンサー有効化方法をまとめてみました。実行する前に後述の対応策が必要となります)。オブジェクトを使いますが、内容は同様なので省略します)。ジャイロセンサー非搭載機では無効です)。イベントに対するハンドラを定義し、ハンドラ内で値を取得する必要があります。いうオブジェクトが有効かどうか(モーションセンサー対応デバイスかどうか)をチェックします。引数として実行されますが、このオブジェクトは3つの要素を持っています。左右の傾きで、全て角度(単位は度)の値が含まれています。これらの値を取り出すことで、ハンドラが呼ばれたタイミングでのこれらの角度を知ることができるようになる、というものです。関数は1秒に数十回呼び出されます。細かい頻度でデバイスの動きを知ることができるようになっています。開けばそのまま実行できてセンサー値を取得することができるようになります。実行される前に準備的な段階が必要になります。未満か以上かで準備段階の内容が異なるため注意が必要です。センサー値を取得することができないように設定されているため、この設定を変更しておく必要があります。「モーションと画面の向きのアクセス」という項目があります。含まれるページを開けば正しく実行され、センサー値を取得することができます。普通にアップデートするとこの状態になります)でのケースです。センサー値を取得することができないように設定されています。全ページ向けの設定をしておく、ということ自体ができなくなりました。コードを記述して対応する必要があります:(↑このダイアログを出して、「許可」が選ばれないとセンサー値は取得できない)しかも(まだありますw)この「個別にユーザーの許可を得る」タイミングも面倒です。指定してページを開くと同時にユーザーの許可を得たい」と思うわけですが、これが許されていません(汗)。する側としてはかなり面倒な仕様になってしまいました。具体的なコードは以下のようになります。関数を登録することでセンサー値を取得することができるようになる、というものです。関数は全ての画面がロードされきった後でのみ実行できます。以降で面倒になったブラウザでのモーションセンサー有効化を手順を含めて解説しました。現実問題としてはここまで実装した上でインターネット上のサーバーに公開してはじめて動かすことができるようになるまでも大変だし、モバイルブラウザだとデバッグも大変なので超面倒だなあ、という印象です。近い将来にこの機能を使って実装したサービスを公開するつもりでいるので、事前にややこしい所だけを説明しておく目的でこのブログエントリを作ったのでした。ブログ検索」ブログパーツは、サービスを終了しました。