アクティブな通話中にアプリが音声のアップリンク周波数で DTMF トーンを送信できるようにする必要があるプロジェクトに取り組んでいます。
私の2つの条件は次のとおりです。
- カスタマイズされた Android プラットフォームは使用しません
- 電話をルート化する必要はありません
宿題をするのに数日を費やしましたが、インコール DTMF 送信が現在の SDK/標準 API でサポートされていないことを認識しています。ただし、関連するクラスを使用するcom.android.internal.telephony
ことで、ネイティブの電話アプリがこれを行う方法を模倣したいと考えています。標準のサードパーティ アプリに内部 API を使用する方法について、このサイトをフォローしました。
また、Android OS 開発環境をセットアップし、エミュレーターで電話アプリをデバッグ モードで実行して、内部の仕組みを理解することができました。
ストック標準エミュレーターでさまざまな方法を試しましたが、発生したエラーは次のとおりです。
android.uid.phone の sharedUserId を使用して、Phone.apk のソースに基づいて名前を変更したアプリをインストールしようとした後、次のようになりました。
インストール エラー: INSTALL_FAILED_SHARED_USER_INCOMPATIBLE
署名するためのシステム証明書がないため、間違いありません。
Phone.apk のソースからコードを送信する関連する DTMF トーンに基づいてカスタム アプリを作成しようとすると、PhoneFactory のセットアップ時に次のエラーが発生します。
java.lang.SecurityException: Permission Denial: ブロードキャスト android.provider.Telephony.SPN_STRINGS_UPDATED の送信が許可されていません。
AndroidManifest.xml は Phone.apk と同じ権限で設定されていますが、私のアプリには適切な権限がないため、間違いありません。
他に何を試すことができるか途方に暮れています。誰か提案はありますか?
前もって感謝します、サイモン。