2011-05-13 3 views
8

내가 전화하는 일부 데이터를 전달하려고합니다. 이 작업을 수행 할 수있는 방법이 있습니까? 내가 식별 할 수 있고 특정 작업을 트리거 할 수있는 한 데이터 유형 (단일 비트이면 충분), 에 대해서는별로 신경 쓰지 않습니다.Android : 전화 통화를 통해 데이터를 보내고받을 수 있습니까?

보내기 코드 :

Intent call = new Intent(); 
call.setAction(Intent.ACTION_CALL); 
call.setData(Uri.parse("tel:" + contact.getNumber())); 
call.putExtra("Boolean", true); 
startActivity(call); 

받으십시오 코드 :

당신은 할 수 없기 뭐
public void onReceive(Context context, Intent intent) { 
    Bundle extras = intent.getExtras(); 
    if (extras != null) { 
     if (extras.getBoolean("Boolean")){ 
      Log.d("BOOL", "true"); 
     } else { 
          Log.d("BOOL", "false"); 
    }else { 
     Log.d("BOOL", "nothing"); 
    } 
} 
+0

코드의 결과는 무엇입니까? 전화가 걸려온 전화가 있었나요? 로그에 뭐라고 써 있니? – exception01

+0

@exception 예외는 없지만 결과는 false입니다. 안드로이드가 phonenumber처럼 여분의 항목을 항상 보내므로 안심할 수 있습니다. (내가 틀리지 않으면) – Andreas

답변

7

. 다른 장치로 전화를 걸면 반드시 호출중인 Android 장치 일 필요는 없습니다. 통화 인 텐트로 보내는 부울을 해당 의도로 읽었으며 통화중인 다른 장치로 보내지 않습니다.

데이터를 다른 전화 장치로 보내려면 터치 톤을 보내면됩니다. 이것들은 버튼 프레스에 의해 만들어진 소리입니다 (예를 들어, 은행에 전화를 걸어 고객 서비스를 위해 하나를 누르거나 전화 뱅킹을 위해 두 개를 누르라고 요청하면, 키 누름은 수신기가 다시 연결되는 연결을 따라 약간 다른 톤을 전송합니다 "one"과 "two"에 대한 터치 프레스로서 어떤 행동을 수행 할 수 있음).

전화 통화에 터치 톤을 보내고 다른 쪽에서 수신하는 것도 처리해야합니다. 올바른 구현은 두 개의 안드로이드 폰이 마치 데이터를 보내는 것처럼 통신 할 수있게합니다.

이들은 일반적으로 DTMF 톤이라고도합니다.

Intent mIntent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + phoneNumber + ";" + dtmfSequence)); 

위의 코드는 전화 통화로 DTMF 신호음을 보냅니다.

수신 장치에서 오디오 스트림에 액세스하는 방법을 모르므로 스트림을 확보하고 DTMF 신호음을 듣기 위해서는이 장치를 직접 살펴 봐야합니다.

행운을 빈다.

+0

고마워,이게 내가 원하는거야 . 어쨌든 청취자의 DTMF 톤을 감지 할 수 있습니까? 두 장치 모두 Android, btw입니다. – Andreas

+0

@ graverobber2 아니요, 현재 Android에서 DTMF 톤을 수신 대기 할 방법이 없습니다. 실제로 개발자에게 공개 된 유일한 DTMF 관련 기능은 biddulph.r이 답변에 게시 한대로 톤에 의도를 추가하는 것입니다. [Android에서이 기능 요청보기] (http://code.google.com/p/android/issues/detail?id=1428) –

+1

그래서 전화를 받아야한다고 생각합니다. 소통하다. 권리 ? 그 전에 어떻게 보낼 거니? 그냥 확인해. –

관련 문제