🚀 はじめに
この記事を読み終えると、Androidの機能(バッテリー情報・位置情報・カメラ撮影・通知・トーチ・センサーなど)をTermuxのコマンドから安全に操作できるようになります。
- 対象読者:技術初心者〜中級者、Android×LinuxやPython、アプリ自動化に興味がある方
- この記事が安心な理由:
- F-Droid版Termux/Termux:APIを使った最新かつ安全な導入を丁寧に解説(Google Play版は非推奨)
- よくあるつまずきと回避策をチェックリストで網羅
- 実用スクリプトをそのままコピペで試せる
用語メモ:TermuxはAndroid上のLinux環境+ターミナル、Termux:APIは「Androidの機能をコマンドから呼び出すための追加アプリ(アドオン)」です。
💡 概要解説
Termux APIとは何か
Termux:APIは、Androidの機能(カメラ・位置情報・通知・センサー・SMS・通話など)をコマンドラインから扱えるようにするTermux用のアドオンです。コマンドはtermux-XXXとして提供され、スクリプトや自動化に組み込めます。
何が便利なのか
- GUI不要で撮影・通知・音声読み上げ・連絡先参照などが可能
- シェルスクリプトやPythonと組み合わせて自動化しやすい
- 権限管理が明確で、必要な操作だけに限定可能(アプリ権限+Termuxパッケージ)
どんな場面で使えるのか
- バッテリー低下時に自動通知+トーチ点灯
- 屋外で現在地取得→通知
- 撮影・メディアスキャンでギャラリー反映
- 定期ジョブでログ取得・センサー記録など(Job Scheduler)
📱 Step 1:インストールや前提条件
インストール元は混在させない(F-DroidとGoogle Playを混ぜると互換性問題が発生)。必ずF-Droidに統一しましょう。
# 1) Termux本体をF-Droidからインストール(推奨)
# F-Droidクライアントを入れて、Termuxを検索→インストール
# https://f-droid.org/packages/com.termux/
# 2) Termux:APIアドオンをF-Droidからインストール
# アドオン名:Termux:API
# https://f-droid.org/packages/com.termux.api/
# 3) Termuxを起動して基本セットアップ
pkg update && pkg upgrade -y # パッケージを最新化(推奨)
pkg install termux-api # Termux:API用のCLIを導入
# 4) 共有ストレージのアクセス権を設定(必要な場合)
termux-setup-storage # ~/storage に各種シンボリックリンクを作成
termux-setup-storageを実行すると、~/storage/sharedや~/storage/downloadsなどが作成され、Androidの共有ストレージへ安全にアクセスできます。Android 11では権限再付与が必要になることがあります。
⚙️ Step 2:基本的な使い方(まずは試す)
以降のコマンドはTermux内で実行します(Termux:APIアドオン+
termux-apiパッケージが導入済みであること)。
# バッテリー情報(JSONで出力)
termux-battery-status # 例:{"percentage": 83, "status": "DISCHARGING", ...}
# トースト表示(画面下の一時ポップアップ)
termux-toast "Hello from Termux API" # 簡易通知として便利
# 通知(システム通知領域に表示)
termux-notification --id "demo1" --title "Termux通知" --content "APIから通知しました"
# 位置情報(単発取得)
termux-location --provider gps --request single # 精度・速度・高度なども取得可
# カメラ撮影(JPEGを保存)
termux-camera-photo -c 0 ~/storage/pictures/demo.jpg # -c 0: 背面カメラを選択
# センサー値(例:加速度・ジャイロなど)
termux-sensor -n 1 # 1回だけ取得(-nで回数指定)
# クリップボード
termux-clipboard-set "コピーしたい文字列" # セット
termux-clipboard-get # ゲット
# トーチ(LEDライト)
termux-torch on # ON/OFF切替
権限について:位置情報・カメラ・通話・SMSなどは、初回実行時に権限付与ダイアログが表示されます。アプリ側(Termux:API)の権限を許可しないとコマンドは失敗します。
🔧 Step 3:実用的な例(すぐ使えるスクリプト)
例1:現在地を取得して通知する(屋外でのメモ代わり)
#!/usr/bin/env bash
set -euo pipefail
LOC_JSON="$(termux-location --provider gps --request single)" # 位置情報を1回取得
TITLE="現在地通知"
CONTENT="$(echo "$LOC_JSON" | tr -d '\n')" # JSONを1行に整形
termux-notification --id "whereami" --title "$TITLE" --content "$CONTENT" # 通知
echo "Done."
バッテリー消費を抑えるため、
--request singleで単発取得にしています。継続監視(updates)も可能ですが、バッテリー負荷が上がるため注意。
例2:バッテリー残量が低下したらトーチ&通知
#!/usr/bin/env bash
set -euo pipefail
BAT_JSON="$(termux-battery-status)" # 現在のバッテリー状態
LEVEL="$(echo "$BAT_JSON" | awk -F'[,: ]+' '/percentage/{print $2}')"
if [ "${LEVEL:-100}" -lt 20 ]; then
termux-torch on # 例:視認性向上(屋外想定)
termux-notification --id "lowbat" --title "低バッテリー" \
--content "残量:${LEVEL}%。充電してください。" # 通知
fi
echo "Battery check done."
例3:撮影→ギャラリー反映(MediaScanner)
#!/usr/bin/env bash
set -euo pipefail
OUT="$HOME/storage/pictures/shot-$(date +%Y%m%d-%H%M%S).jpg"
termux-camera-photo -c 0 "$OUT" # 背面カメラで撮影
termux-media-scan -p "$OUT" # ギャラリーへ反映(MediaScanner)
termux-toast "撮影しました: $OUT" # トーストでお知らせ
おまけ:PythonからAPIを呼ぶ
サードパーティのtermux-api(Pythonモジュール)を使うと、Pythonコードから振動や通知などを扱えます。
# 事前準備(Termux内)
pkg install python -y # Pythonを導入
pip install termux-api # サードパーティモジュール(PyPI)
from termux import API, Notification
# バイブレーション
API.vibrate() # 端末を短時間振動させる(権限が必要)
# 通知を表示
Notification.notify(title="Python×Termux", content="APIから通知しました")
注意:このPythonモジュールは公式Termuxの一部ではありません。互換性は端末やOSバージョンに依存するため、うまく動かない場合は公式の
termux-XXXコマンドに切り替えてください。
⚠️ 補足・注意点
- インストール元の混在禁止:F-Droid版とGoogle Play版を混在すると、署名鍵の違いでアドオン連携が壊れます(APIが動作しない等)。F-Droidに統一しましょう。
- 権限は段階的に付与:位置情報・カメラ・SMS・通話などは初回実行時に権限許可が必要。許可しないとコマンドが失敗します。
- 共有ストレージの設定:
termux-setup-storageで~/storage/*のリンクが作成されます。Android 11では権限の再付与で解決する既知の事象があります。 - 倫理と法令遵守:SMS送信・通話・録音・位置情報取得などは本人の同意・法令順守が前提。不正利用や迷惑行為の自動化は禁止です。
✅ よくあるつまずき(チェックリスト)
- TermuxをPlayストアで入れてしまった → F-Droidで再インストール(Termux本体+Termux:API)。
- Termux:APIが動かない →
pkg install termux-apiをTermux内で実行済みか確認。 - 権限が足りない → アプリ設定でカメラ・位置情報・マイク・SMS・通話などの権限を付与。
- 共有ストレージにアクセスできない →
termux-setup-storageを実行、Android 11は権限の再付与。 - パッケージが古い →
pkg update && pkg upgrade -yで更新。
📚 参考リンク
- Termux公式ドキュメント(新サイト移行中):Termux Docs / Main Site
- Termux:APIの一覧・導入手順:Termux:API - Termux Wiki
- Termux(F-Droid公式):Termux (F-Droid)
- Termux:API(F-Droid公式):Termux:API (F-Droid)
- GitHub(Termux:API):termux/termux-api
- 共有ストレージ設定:
termux-setup-storage- Termux Wiki
🔧 拡張案・次にやると良いこと
- Job Schedulerで定期実行:
termux-job-schedulerを使い、バッテリー監視やセンサー記録を定期化。 - Python×Termuxの自動化:PyPIの
termux-apiモジュールで通知や振動をPythonから実行(互換性は環境依存)。 - メディア操作の強化:
termux-media-playerとtermux-media-scanを組み合わせて音声再生・ギャラリー反映。
🎯 まとめ
- Termux×Termux:APIで、Androidの機能を安全にコマンド化できる。
- 導入はF-Droidに統一+
pkg install termux-apiで準備完了。 - 位置情報・撮影・通知・トーチ・センサーなどを数行のスクリプトで自動化可能。
- ストレージは
termux-setup-storageでリンクを作り、権限とバッテリー最適化に注意。
