# 完全離線啟動教學（純熱點，兩支手機就能用）

目標：**沒有任何網際網路**，兩支（含以上）手機在同一個 Wi-Fi/熱點下就能對講、聊天、看位置。

原理：網頁需要在 `https` 或 `localhost` 才能用定位/麥克風，所以要有人「供應」這個網頁。
有三種方式，挑一種即可。

---

## 方式 A：用電腦當伺服器（最簡單，建議先這樣測）
1. 電腦和手機連**同一個 Wi-Fi**（或電腦連手機開的熱點）。
2. 在 `web/` 資料夾執行一鍵啟動：
   - macOS / Linux：`./start.sh`（或 `bash start.sh`）
   - Windows：雙擊 `start.bat`
3. 畫面會印出兩個網址：
   - 電腦自己：`http://localhost:8000`
   - **手機連這個**：`http://<電腦區網IP>:8000`（例如 `http://192.168.1.23:8000`）
4. 兩支手機瀏覽器都開「同網裝置」網址 → 進 App。

> 全程不需要網際網路，只要大家在同一個區網。

---

## 方式 B：手機自己當伺服器（零電腦，純手機＋熱點）
讓其中一支手機跑一個免費的「本機網頁伺服器 App」來供應 `web/` 資料夾。

### Android 免費 App 選擇（任一）
- **Termux**（開源，最推薦）
- **Simple HTTP Server**／**Phlex**／**KSWEB** 之類的本機伺服器 App

### 用 Termux 的步驟
1. 安裝 Termux（F-Droid 版較新）。
2. 把整個 `web/` 資料夾複製到手機（例如 `Download/web`）。
3. 在 Termux 執行：
   ```bash
   pkg install python -y
   termux-setup-storage          # 允許存取手機檔案
   cd ~/storage/downloads/web    # 你的 web 資料夾位置
   python -m http.server 8000 --bind 0.0.0.0
   ```
4. 這支手機**開熱點**；其他手機連這個熱點。
5. 查這支手機在熱點下的 IP（通常 `192.168.43.1` 或熱點顯示的 IP），
   其他手機瀏覽器開 `http://<這支手機IP>:8000`。
6. 這支手機自己則開 `http://localhost:8000`。

> 提示：`localhost` 才有定位/麥克風權限；所以「當伺服器」那支用 `localhost`，其他手機用 IP。
> 若其他手機因 `http`(非 https) 被擋定位/麥克風，請改用方式 C（安裝成 PWA）或在瀏覽器允許該網站權限。

---

## 方式 C：安裝成 App（PWA，之後可離線啟動）
1. 先用方式 A 或 B 開啟一次網頁（這步可在有網路時做，讓它把程式庫快取起來）。
2. 在瀏覽器選單選「**加入主畫面／安裝應用程式**」。
3. 之後點桌面圖示即可啟動，**離線也能開**（程式庫已內建於 `vendor/`，已被 Service Worker 快取）。

---

## 連線（完全離線）
進 App 後到「**連線**」分頁，二選一：
- **代碼互貼**：A 建立邀請碼 → B 貼上產生回應碼 → A 貼回完成。
- **QR 掃描**：A 顯示 QR → B 掃描；B 顯示回應 QR → A 掃描。

連上後即可：即時語音對講、文字／照片／語音聊天、看彼此位置與樓層、距離警報、偏航守護。

## 地圖要不要網路？
- 預設可用「**無底圖純定位**」（設定 → 地圖來源），完全免網路，仍能看彼此相對位置。
- 想要街道圖也離線：放一份 `web/map/region.pmtiles`（用 `../tools/make_pmtiles.py` 產生），再選「離線本機圖磚」。

## 想要「免手貼自動連線」也離線？
在當伺服器那台額外跑中繼（`../server/`，免網際網路）：
```bash
cd server && npm install && node relay-server.js
```
App 設定的中繼 URL 填 `ws://<伺服器IP>:8080`，之後在「連線」分頁就會列出線上夥伴，點一下自動連。
