PayPayアプリ(jp.ne.paypay.android.app)の通知音・決済完了音を、自分で選んだ音声ファイルに差し替えるLSPosedモジュールです。
- パッケージ名:
com.paypaysound.hook - バージョン: 1.00
- アプリ名・アイコンはビルド時に自由に変更できます(
app/src/main/res/mipmap-xxhdpi/、AndroidManifest.xml)
本ツールはPayPay株式会社およびPayPay関連サービスとは一切関係のない、非公式の個人開発ツールです。 "PayPay"は各権利者の商標です。本ツールはリバースエンジニアリングによりリソース名を特定し、 ローカル端末上でのみ動作するもので、PayPay本体のAPKやサーバー通信内容を一切改変・傍受しません。
アプリを開いて音声ファイルを選ぶだけで、再ビルド不要で即座に反映されます。
| 対象 | PayPay側のリソース名 |
|---|---|
| 決済完了音 | payment_complete_pay2_sound / payment_complete_pay2_settings_sound |
| 受信通知音 | incoming_message |
| 送信通知音 | outgoing_message |
各項目に「▶ 再生」ボタンがあり、アプリ内でテスト再生できます(再生中は「■ 停止」に変わり、いつでも止められます)。
拡張子ではなくファイルの中身(ヘッダ)から自動判別するため、Android標準のMediaPlayer/SoundPoolが対応している形式であれば基本的に使えます。
| 形式 | 対応 |
|---|---|
| MP3 | ○ |
| WAV(PCM) | ○ |
| OGG Vorbis | ○ |
| AAC / M4A | ○ |
| FLAC | ○(API21以上) |
- root化端末(Magisk / KernelSU)
- LSPosed
- 対象端末で PayPay自体にSuperuser権限を許可しておくこと(Magiskアプリの「Superuser」タブから設定)
| 項目 | バージョン等 |
|---|---|
| PayPay | 5.60.0(このバージョンのリソース名で解析・動作確認。2026年8月時点でGoogle Play上の最新は5.59.0前後のため、実質最新版に対応) |
| Android | 17(Pixel 10a、Magisk)/ Android 15系(Redmi 15 5G、KernelSU LKM) |
| minSdk | 27(Android 8.1)以上 |
リソースIDではなくgetResourceEntryName()による名前一致でフックしているため、PayPay側のアップデートでID値が変わっても追従できる設計です。ただしリソース名自体(payment_complete_pay2_sound等)が変更された場合はさすがに追従できません。その場合はIssueで実際に検出されたリソース名を報告してもらえると対応しやすいです(モジュール側は[PayPaySoundHook]タグでLSPosedのログに実際のリソース名を出力する仕組みを持っています)。
Android 11以降のパッケージ可視性制限により、本モジュールの提供するデータをPayPayプロセスから通常の方法(ContentProvider / forceQueryable)で読み取ることができませんでした。この制限を回避するため、PayPay自身のプロセス内でsuを呼び出し、本モジュールの内部ストレージにあるファイルを直接読み出す方式を採用しています(su -mmでマウント名前空間を維持し、SELinuxラベルの問題を回避するため事前に空ファイルを非root権限で作成してからrootで書き込む、という手順を踏んでいます)。
app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png(前景)・app/src/main/res/values/colors.xml(背景色)はサンプルです。好きなデザインに差し替えてもかまいません- (継続的にアップデートしていく場合)
keystore.properties.exampleをkeystore.propertiesにコピーし、リポジトリ配布元から受け取った署名鍵ファイル(paypaysoundhook-release.keystore、gitには含まれません)を配置してパスワードを設定 — これにより毎回同じ署名でビルドされ、上書きアップデートが可能になります。鍵ファイルが無い場合は自動生成される仮の鍵で署名されます(その場合はバージョンアップの度に再インストールが必要) - Android Studioでビルド(または
./gradlew assembleRelease) - APKをインストール
- LSPosed Managerでモジュールを有効化し、スコープに
jp.ne.paypay.android.appを追加 - Magiskアプリの「Superuser」タブで
jp.ne.paypay.android.appにroot権限を許可 - インストールしたアプリを開いて音声ファイルを選択
- PayPayを完全終了 → 再起動 → 反映確認
Resources#openRawResourceFd / openRawResource をフックし、getResourceEntryName() で名前一致したリソースのみ差し替えます(リソースIDのハードコードを避けているため、PayPay側のアップデートでID値が変わっても壊れにくい設計です)。
差し替え用の音声はアプリ自身の内部ストレージ(/data/user/0/com.paypaysound.hook/files/)に保存され、PayPayプロセス側からは su -mm 経由でこのファイルを直接読み出し、PayPay自身のキャッシュディレクトリにコピーしてから再生に利用します。
- GitHub: https://github.com/haizarakun/PayPaySoundHook
- 支援(Buy Me a Coffee): https://buymeacoffee.com/akunJP
個人の学習・カスタマイズ目的のツールです。PayPay本体のAPKは一切改変していません。PayPay株式会社とは無関係の非公式ツールです。利用は自己責任でお願いします。