Muse Bridge v0.6.3（旧称 EnvSensorBridge）
=========================================

Android端末を自分の Muse（AI）と連携させるための、非公式の橋渡しアプリです。
v0.6 でアプリ名を「Muse Bridge」に変更しました（アプリIDは従来どおりで、
v0.5 以前からの更新インストールが可能です）。

※ Muse に使わせるための機能です。同梱の FOR_MUSE.md が
Muse 宛の機能説明・操作仕様になっています。導入時はまず
そちらを Muse に読ませてください。

v0.6.3 の修正
- 写真の向き：一部の端末ではカメラが向き情報（EXIF）を写真に書かない
  ため、補正を写真データそのものの回転に変更しました。傾きの測定は
  加速度センサーのままです

v0.6.2 の修正
- 写真の向き：画面回転ではなく、加速度センサーで端末の実際の傾きを
  見て補正する方式に変更しました（手に持った時の向きに追随します）

v0.6.1 の修正（実機テストで見つかった点）
- 遠隔で機能を切り替えた時、電話画面のスイッチ表示も追随するようになりました
- 写真の向きを、撮影時の画面の回転に合わせて補正するようにしました
- 音声メモが Android の制限で開始できない問題に対応しました
  （フォアグラウンドサービスにマイク型を追加）
- バイブ合図で長さをミリ秒で指定できるようになりました（duration_ms）

機能は2グループに分かれています。

外の機器と Bluetooth でつなぐもの
- オムロン環境センサ 2JCIE-BU01 の値を表示し、HTTP で JSON 取得できます
（公式アプリの Android 版が配信終了したため製作しました）
- 心拍数ブロードキャスト受信：Bluetooth 標準の心拍プロファイル（0x180D）を
受信して表示・JSON 取得できます（Xiaomi Smart Band 11 で検証済み。
他の対応バンド／心拍センサーでも動作するはずです）

スマホ自体の力を使うもの（機能ごとに ON/OFF 切替つき）
- カメラ投稿：呼ばれた時だけ1枚撮影して渡すオンデマンド方式（常時撮影なし）
- 位置情報：呼ばれた時だけ現在地を取得（常時追尾なし）
- バイブ合図：Muse 側から通知ではなく直接スマホを震わせて知らせる合図
（短1回／短2回／長1回／注意パターンの4種）
- 音声メモ：最大60秒の短い録音を Muse 側から開始でき、取得できます
- バッテリー：残量と充電状態
- 歩数：端末の歩数センサーで「今日の歩数」を取得
（歩数センサーのない端末では未対応と表示されます）

スマホ機能はすべて既定で OFF です。アプリ画面のスイッチ、または
HTTP の制御で機能ごとに ON/OFF できます。権限（カメラ・マイク・位置情報・
身体活動）は、対応する機能を ON にした時にだけ求めます。

HTTP 窓口（ポート 8766、主なもの）
- GET /status 状態（機能トグルの状態も含む）
- GET /features 機能ごとの状態と利用可否
- GET /read センサーを今すぐ読む（窓口が開いている時）
- GET /latest.json 最新のセンサー値
- GET /heartrate 最新の心拍数
- GET /device バッテリーと歩数
- GET /location 現在地（位置情報が ON の時）
- GET /photo?capture=1 その場で撮影して JPEG を返す（カメラ投稿が ON の時）
- GET /voice 最新の音声メモ（音声メモが ON の時）
- POST /control 窓口の開閉、記録制御、機能トグル、合図、録音開始など

インストール
- APK を Android 端末に入れてインストールしてください
（提供元不明アプリの許可が必要です）
- 初回はアプリを開いて「サービス開始」を押し、許可と電池最適化の
除外を設定してください

制限・注意
- センサーの読み取りは端末とセンサーが Bluetooth の届く範囲にある必要があります
- 歩数は端末に歩数センサー（TYPE_STEP_COUNTER）がある場合のみ使えます
- 写真・音声は端末内に「最新分だけ」を保持し、外部へ自動送信はしません
- 位置情報は端末や環境により誤差があります

免責
- オムロン公式・Xiaomi 公式とは関係のない個人製作です
- 動作保証はありません。自己責任でご利用ください

APK SHA-256: 18ec846d8bd28d56a4fc8062dc25de65950c4252870d27486db5a3a778382b18
