Отправка сигналов DTMF по входящему каналу связи

Я работаю над проектом, который требует, чтобы мое приложение могло отправлять тональные сигналы DTMF на частоте восходящего канала голоса во время активного вызова.

Мои 2 условия:

  • Мы не использовать настроенную платформу Android
  • Нам не нужно рутировать телефон

Я потратил несколько дней на домашнее задание и знаю, что отправка DTMF во время вызова не поддерживается текущими SDK / стандартными API. Однако, используя соответствующие классы в com.android.internal.telephony , я надеюсь имитировать, как это делает родное приложение «Телефон». Я следил за этим сайтом о том, как использовать внутренние API-интерфейсы для стандартных сторонних приложений .

Я также настроился на среду разработки Android OS и могу запустить приложение «Телефон» в режиме отладки на эмулятор, чтобы понять его внутреннюю работу.

Я пробовал разные способы на стандартном эмуляторе, но получил следующие ошибки:

  1. После попытки установить переименованное приложение, основанное на исходном коде Phone.apk, используя sharedUserId из android.uid .phone, я получил:

    Ошибка установки: INSTALL_FAILED_SHARED_USER_INCOMPATIBLE

    Несомненно, из-за того, что у меня нет системного сертификата для его подписания.

  2. После попытки написать собственное приложение на основе соответствующего тона DTMF отправляя код из источника Phone.apk, я получаю следующую ошибку при настройке PhoneFactory:

    java.lang.SecurityException: Permission Denial: не разрешено отправлять широковещательную рассылку android.provider.Telephony.SPN_STRINGS_UPDATED.

    Без сомнения, из-за на то, что у моего приложения нет нужных разрешений, хотя AndroidManifest.xml установка с теми же разрешениями, что и Phone.apk.

Я не понимаю, что еще я мог бы попробовать. Есть ли у кого-нибудь предложения?

Заранее спасибо, Саймон.

21
задан Paul Lammertsma 5 July 2011 в 10:00
поделиться