🚀 はじめに

この記事を読み終えると、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で更新。

📚 参考リンク


🔧 拡張案・次にやると良いこと

  • Job Schedulerで定期実行termux-job-schedulerを使い、バッテリー監視やセンサー記録を定期化。
  • Python×Termuxの自動化:PyPIのtermux-apiモジュールで通知や振動をPythonから実行(互換性は環境依存)。
  • メディア操作の強化termux-media-playertermux-media-scanを組み合わせて音声再生・ギャラリー反映。

🎯 まとめ

  • Termux×Termux:APIで、Androidの機能を安全にコマンド化できる。
  • 導入はF-Droidに統一pkg install termux-apiで準備完了。
  • 位置情報・撮影・通知・トーチ・センサーなどを数行のスクリプトで自動化可能。
  • ストレージはtermux-setup-storageでリンクを作り、権限とバッテリー最適化に注意。