>_ DevTrendsja

言語

ホーム

言語

セクション

フロントエンド バックエンド モバイル DevOps AI / ML ゲーム開発 ブロックチェーン 組み込み セキュリティ
Kotlin

ShizuCallRecorderがルートなしでストックAndroidに通話録音機能を復活

Androidで通話録音といえば、Google Playで見つけた最初のアプリをダウンロードするだけ这么简单だった时代を覚えていますか?Googleは新しいOSバージョンごとにこの抜け道を体系的に封闭してきています。まず通话中のマイクアクセスを制限し、次にサードパーティ録音アプリ向けのAccessibility APIをブロックしました。その結果、最新のデバイス所有者は2つの选项しかなくなりました:メーカー製の録音機能が付いたスマートフォンを購入するか、ルートアクセスを取得するかです。

ShizuCallRecorderという新しいプロジェクトがGitHubに登场しました。その作成者は3番目の方法を見つけました。このオープンソースユーティリティは、Android 12以降でシステム変更なしで通话の両侧を録音できます。

ルートなしでオーディオキャプチャが動作する仕組み

このプロジェクトのアイデアは驚くほどシンプルです。特別な機能を通じてシステムセキュリティメカニズムを出し抜こうとする代わりに、開発者はShizukuインフラを活用しました。

Shizukuを知らない人のために説明すると:ADB権限を通常のアプリケーションのレベルに転送するツールです。Androidでshell(com.android.shell)として実行されるため、通常のソフトウェアにはない権限が与えられます。ShizuCallRecorderの作成者は、知られたユーティリティであるscrcpyのバイナリをアプリ内にバンドルしました。

着信または発信通話が発生すると、ShizuCallRecorderはShizukuを通じて分離されたスレッドを起動します。サーバーがオーディオストリームをシステムから直接傍受してアプリケーションにフィードバックします。これにより、Bluetoothヘッドセットでの通话中でも、自分の声と発信者の両方を明確に録音できます。

ワークフローは次のとおりです:

  1. アプリが電話状態変化イベントをから受信します(TelephonyManager)。
  2. Shizukuに内部サービスの起動をリクエストします。
  3. オーディオキャプチャフラグ付きでローカルインスタンスが起動します(scrcpy-server)。
  4. ストリームがOpusまたはAACにエンコードされ、デバイスメモリに保存されます。
  5. 通話が終了すると、プロセスが停止します。

このアプリには、常時メモリを消費しバッテリーを消耗する永続的なバックグラウンドサービスがありません。システムイベントによってトリガーされたときに만起床します。

設定と機能

このユーティリティの機能は意図的にミニマリストに设计されています。作成者はドキュメントで明確に警告しており、TelegramやWhatsAppのようなメンジャー向けのオールインワンレコーダーにプロジェクトを変える予定はありません。主な焦点は通常の携帯キャリア通话にあります。

便利なオプションには以下が含まれます:

  • OpusとAAC間のオーディオコーデック選択。
  • 除外ルール付きの自動録音。匿名の電話番号、電話番号帳からの特定の連絡先を無視したり、不明な電話番号からの通话のみを録音したりできます。
  • 通話後の自動Shizukuシャットダウン。

最後の点はセキュリティためです。一部の銀行アプリや企業サービスクライアントは、有効化されたADBやアクティブなShizukuサービスに否定的に反応します。他のソフトウェアのセキュリティメカニズムがトリガーされるのを避けるため、ShizuCallRecorderは自行でセッションを停止できます。

注意点と制限事項

インストールする前に、技術的な実装の詳細を考慮してください。

第一に、このユーティリティはAndroidのプライベートAPIとロジックに依存しています(scrcpy-server)。ストックAndroid(Pixel、Motorola、またはAOSP ROM)では、すべて正常に動作します。ただし、スマートフォンメーカーはシステム通话処理サービスを書き換えることがあります。MIUI、HyperOS、One UIなどのファームウェアでは問題が発生する可能性があります。

第二に、並列通话にはニュアンスがあります。進行中の通话中に2番目の通话が入り、それに切り替えた場合、録音は区切りなしで同じファイルに続行されます。

第三に、最近のAndroidバージョンのプライバシールールにより、発信者番号への即時アクセスが困難になっています。そのため、発信者IDが延迟してトリガーされる場合があり、自動フィルターが通话を匿名として誤って扱う可能性があります。

OSバージョンの互換性は次のとおりです:

  • Android 11は警告付きでサポートされています:オーディオキャプチャが動作するにはデバイス画面がロック解除されている必要があります。
  • Android 12、13、14、15は完全に動作します。
  • Android 16と17は、ADBサブシステムでの発表され измененияにより、まだ疑问視されています。

プロジェクトを試す方法

設定プロセスは通常のアプリストアインストールよりも少し複雑ですが、简单です:

  1. スマートフォンにShizukuをインストールして起動します(リポジトリの作成者はthedjchiによるフォークの使用を推奨しています)。
  2. GitHubのShizuCallRecorderリリースページから最新のAPKファイルをダウンロードします。
  3. 通話と連絡先のアクセスに対してアプリの基本的な許可を付与します。
  4. Shizukuアクセスへのリクエストを承認します。

ShizuCallRecorderは、既存のインフラ(scrcpyとShizuku)を組み合わせることで、Androidのシステム制限の壁にぶつかった問題を解決できる良い例です。このプロジェクトはKotlinで書かれており、GPL-3.0ライセンスで配布されており、まさに作成されたタスクを干干净净 수행합니다。デバイスをルート化せずにスタンドアロンの通話録音が必要な場合、このプロジェクトは確かに作業ユーティリティコレクションに追加する価値があります。

関連プロジェクト