2011-06-14 7 views
20

현재 통화 중에 내 앱이 DTMF 톤을 음성의 업 링크 주파수로 보낼 수 있어야하는 프로젝트에서 작업하고 있습니다.업 링크를 통한 DTMF 톤 전송

제 2 조건은 다음과 같습니다

  • 우리는
  • 우리는 내 일을 며칠 보냈다

전화를 근절 할 필요가 없습니다 사용자 정의 안드로이드 플랫폼을 사용하지 않는 현재의 SDK/표준 API에서는 인바운드 DTMF 전송이 지원되지 않는다는 것을 알고 있습니다. 그러나 관련 클래스를 사용하여 com.android.internal.telephony 나는 네이티브 전화 애플 리케이션이 어떻게하는지 모방 기대하고있다. 나는 this site on how to use internal APIs for standard 3rd party apps을 따라 갔다.

나도 안드로이드 OS 개발 환경으로 설정하고 에뮬레이터에서 폰 기능을 실행하기 위해 디버그 모드로 전화 앱을 실행할 수 있습니다.

나는 주식 표준 에뮬레이터에서 여러 가지 방법을 시도했지만 내가 가진 오류가 있었다 :

  1. android.uid.phone의의 sharedUserId를 사용하여 Phone.apk의 소스를 기반으로 이름을 바꾼 응용 프로그램을 설치하려고하면, 내가 가지고 : 나는 그것을 서명 시스템 인증서가없는 사실 때문

    Installation error: INSTALL_FAILED_SHARED_USER_INCOMPATIBLE

    의심의 여지가 있습니다.

  2. Phone.apk의 소스에서 관련 DTMF 톤 전송 코드를 기반으로 맞춤 응용 프로그램을 작성하려고 시도한 후에 PhoneFactory를 설정할 때 다음 오류가 발생합니다. AndroidManifest.xml에이 Phone.apk와 같은 권한이 설정되어 있지만

    java.lang.SecurityException: Permission Denial: not allowed to send broadcast android.provider.Telephony.SPN_STRINGS_UPDATED.

    의심의 여지가

    사실로 인해 내 응용 프로그램은 오른쪽 권한이 없습니다.

나는 내가 할 수있는 다른 것을 잃어 버렸다. 누구든지 어떤 제안이 있습니까?

미리 감사드립니다. Simon.

답변

8

당신은 흥미로운 접근 방식을 취했으며, 나는 당신의 노력에 찬사를 보냅니다. 안타깝게도 앱 개발자로 사용할 수없는 일부 내부 권한 (분명히 SPN_STRINGS_UPDATED 등)이 있습니다.이 권한은 앱 개발자로서 다소간 접근 방식을 벗어납니다. 이 문제의 원인이되는 코드 영역을 제거해 볼 수도 있지만 차단 문제가 발생할 것이라는 점을 확신 할 수 있습니다.

따라서 지금은 불가능합니다. 기존 전화 통화를 통해 DTMF 톤을 전송하는 데는 an open feature request on Android이 있지만 거의 2 년 동안 휴면 상태였습니다.

Intent i = new Intent("android.intent.action.CALL", 
         Uri.parse("tel://" + number + "," + dtmfTones)); 
5

간단하게 말해서, 당신은하지 않고 그것을 할 수 없습니다 :

나는이 문제를 해결할 수 있지만,이 번호를 다이얼 한 후 DTMF 톤을 직접 보낼 수 있다는 사실을하지 않는 것을 이해 모뎀에 액세스하려면 시스템 사용자로 실행해야하는 전화 앱을 적어도 맞춤 설정해야합니다. 이렇게하려면 휴대 전화를 근절해야합니다.

유일한 해결책은 안드로이드 플랫폼을 향상시키는 것입니다. 우리는 단지 그것을했고, 이미 AOSP 프로젝트에 우리의 패치로 전송 : 우리는 현재 검토하고 우리의 기여를 허용하도록 구글 개발자를 위해 기다리고 있습니다

https://android-review.googlesource.com/32820

https://android-review.googlesource.com/32821

. 관심이 있으시면 Google에 다양한 AOSP 목록 (android-contrib, android-platform)에 대해 알려 주시기 바랍니다. 잘하면 신속하게 검토를 촉진 할 것입니다.

최고 감사합니다, 게르 겔리

+0

안녕하세요,이 기능의 상태가 변경 되었습니까? 내가 도움이 될 수 있습니다? 나는 ASOP 사이트에서 투표 할 곳을 이해하려고 노력했다. 그러나 나는 포기했다. 그 기능이 수락되었거나 막혔다면 나는 이해할 수 없었다. 그것의 상태는 무엇입니까? –

+0

AOSP 마스터에 병합되지 않기 때문에 최신 패치 세트가 거부되었습니다. 다른 누군가가 이것을 받아 들여 다시 통합하고 새 패치 세트를 제출하면 좋을 것입니다. –

1

당신은 활성 통화 중에 DTMF 톤을 보낼 수 있지만, 당신이 그들을 보낼 수 있습니다 때 "프로그램"을 통화를 시작합니다. 다음 게시물을 참조하십시오. https://stackoverflow.com/a/12986066/475472