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

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

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

v0.6.7 の変更
- 画面の整理（使い勝手の改善）：「サービス開始／停止」と
  「窓口を開く／閉じる」を、それぞれ状態で表示が切り替わる
  1つのボタンにまとめました。「電池の最適化を除外する」は
  除外済みの間は表示されません。蓄積データの操作とテスト系
  ボタンは、見出しタップで開く折りたたみの中に移しました

v0.6.5 の変更
- 状態の永続化：一部のタブレットでは、スリープ中に端末の電源管理が
  アプリのプロセスを再起動させることがあります。再起動で消えないよう、
  保留中の撮影要求と最新の写真を端末内に保存するようにしました
  （再起動すると、保留中の撮影の通知が出し直されます）
- 画面の整理：状態表示をカード風にし、操作をグループ見出しで
  分けました（動作は従来どおりです）

v0.6.4 の追加
- 撮影アシスト：端末によっては、アプリが前面にいる時しかカメラを
  開けないことがあります（裏では CAMERA_DISABLED や CAMERA_ERROR に
  なる）。その対策として、遠隔撮影の要求を通知経由で前面の撮影画面に
  渡す方式を追加しました。方式は3つから選べます
  （なし＝直接撮影／通知タップ＝通知をタップしたら撮影／
  フルスクリーン＝着信画面のように即座に撮影画面を出す）。
  アプリ画面のボタンか、HTTP の set_camera_assist で切り替えます
- 前面・背面カメラの選択：撮影時に facing=back / front を指定できます
  （前面カメラの写真は、写ったままの向きで渡します）

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: f4301666fb41f4c07e6d803c632d0f1977875e59d15a51505b20f664c857fc62
