BatteryPush — 予備機のバッテリ通知ツール

Mobile

概要

BatteryPushは、サブ端末(予備機)のバッテリ残量や充電状態を監視し、その変化を第一時間でメイン端末に届けることを目的としたAndroidアプリです。低電量、充電完了などのイベントをトリガーに、通知欄、SMS送信、電話発信、Webhook経由(企業向けチャットツール等)での通知を行います。通知履歴をアプリ内で確認・クリアでき、デバイス情報やテンプレートを埋め込むことで柔軟なメッセージ生成が可能。導入は簡単で、既存の自動化フロー(Taskerや端末メーカーの自動タスク機能)との組み合わせにも適します。

GitHub

リポジトリの統計情報

  • スター数: 6
  • フォーク数: 0
  • ウォッチャー数: 6
  • コミット数: 3
  • ファイル数: 13
  • メインの言語: HTML

主な特徴

  • 低電量/充電完了などのバッテリイベントを自動で検知して通知
  • 複数チャネル対応:通知欄、SMS、電話、Webhook(飛書/钉钉など)
  • 通知履歴の保存・閲覧・一括クリア機能
  • テンプレートとデバイス情報の自動埋め込みで柔軟にカスタマイズ可能

技術的なポイント

BatteryPushはAndroidアプリとして、端末側のバッテリ状態変化をトリガーに複数チャネルへ通知を出す構成になっています。技術的に注目すべき点は以下です。

  • イベント検知・自動トリガー: Androidのバッテリ関連インテント(ACTION_BATTERY_CHANGED など)や充電ステータスを受け取る仕組みに基づき、指定した閾値(低電量や満充電)で通知処理を起動します。端末の省電力や制限に配慮し、バックグラウンド実行を最小限に抑える設計が想定されます。

  • マルチチャネル通知: ローカル通知(通知欄)はNotificationManagerを用い、SMSはSmsManagerまたは暗黙インテント、電話はIntent.ACTION_CALLなどで発信を行う実装が想定されます。WebhookはHTTPクライアント(OkHttp等)でPOSTリクエストを送り、JSONテンプレートにデバイス情報・電池情報を埋め込んで外部サービスへ通知します。

  • テンプレートとデータ埋め込み: メッセージテンプレート機能により、変数(デバイス名、残量、時刻、充電状況など)をテンプレート内に差し込める設計。これによりWebhookやSMSの内容を柔軟にカスタマイズできます。テンプレート処理はシンプルな文字列置換で実装可能ですが、将来的にはテンプレートエンジンの導入も容易です。

  • 履歴管理とUI: 通知の送信履歴をローカルに保存(SQLite/RoomやSharedPreferencesの組合せ)し、一覧表示や一括削除を提供。軽量なUIで履歴の追跡・デバッグを行えるため、運用時の因果関係把握が容易です。

  • 互換性と実装上の制約: SMS送信や電話発信は機種やOSバージョンによりユーザー確認ダイアログが発生する場合があり、完全自動化は制約されることがあります。また、Androidのバックグラウンド制限(Dozeモードやバッテリ最適化)措置により、常時監視にはバッテリや権限の取り扱い注意が必要です。Webhookは外部との通信を伴うため、ネットワーク状態やリトライ設計、タイムアウト・エラーハンドリングを実装することで信頼性が向上します。

  • 自動化との親和性: BatteryPushは単体でも動作しますが、Taskerやメーカー提供の自動化(例:Xiaomiスマートフォンの「自動タスク」)と組み合わせることで、より柔軟な運用が可能です。例えば、サブ端末が特定のネットワークに接続したときのみ通知する、夜間は抑制する等のルール実装が可能です。

  • セキュリティとプライバシー: 電話番号やWebhookエンドポイントなどの機密情報はローカルで暗号化またはアクセス制限して保存するべきです。MITライセンス下でソースが公開されているため、導入前にコードを確認し、必要に応じて監査・変更することが推奨されます。

全体として、BatteryPushはシンプルなユースケースを想定しつつ、複数の通知経路や履歴管理、テンプレート機能を備えた実用的なツールです。運用にはOSや端末の制約を理解した上で、権限設定・自動化ポリシーの最適化が求められます。

プロジェクトの構成

主要なファイルとディレクトリ:

  • .gradle: dir — ビルドキャッシュやGradleラッパー関連(ビルド管理に関する構成が含まれる可能性)
  • BatteryPush.png: file — READMEに埋め込まれたアプリ紹介画像
  • LICENSE: file — MITライセンス(利用・改変の許諾条件が明示)
  • README.md: file — プロジェクトの概要、使い方、ダウンロードリンクなどの説明(画像と機能リストを含む)
  • app: dir — Androidアプリ本体のソース/リソースが配置される主要ディレクトリ(Activity、BroadcastReceiver、レイアウト、マニフェスト等)
  • build.gradle: file — Gradleビルド設定(依存関係やSDKバージョン指定)
  • gradle.properties: file — ビルド/環境に関するプロパティ
  • settings.gradle: file — マルチモジュール構成があればその宣言
  • .gitignore: file — Gitで無視するファイルの定義
  • BatteryPush.apk(READMEリンク): file — リポジトリ経由で配布されているデバッグ版APKへの案内(リリース/テスト用)

…他 8 ファイル

(注)上記はREADMEの記述とリポジトリツリーから推定した構成説明です。実際のソース実装はappディレクトリ配下のコードを参照してください。

まとめ

シンプルで導入しやすい、予備機のバッテリ通知に特化した実用的なAndroidツール。

リポジトリ情報: