2012-03-09 2 views
0

Im이 (가) Android 2.3.3 용 SIP 애플리케이션을 만드는 중입니다. 누군가에게 전화를 걸 수 있으며 전화를 걸 때 "수신 전화 화면"이 표시됩니다. 그러나 내 앱이 백그라운드에서 실행 중이고 누군가 전화를 걸면 "통화 화면"이 시작되지 않습니다. 어떻게 정상적인 수신 통화처럼 시작할 수 있습니까?백그라운드에서 실행중인 Android 앱이 실행되는 동안 전화 화면을 표시하는 방법

는 고정 :

매니페스트 : 응용 프로그램 태그에 다음 코드를 추가

<receiver android:name=".ReceiverTest" android:enabled="true"> 
      <intent-filter> 
       <action android:name="com.example.INCOMING_CALL" /> 
      </intent-filter> 
    </receiver> 

수신기 클래스 : 나는 전화를받을 때, 내 Incomingcall 페이지가 열립니다

public class ReceiverTest extends BroadcastReceiver{ 

    @Override 
    public void onReceive(Context arg0, Intent arg1) { 
     ... 
     Intent nextPage= new Intent("com.example.IncomingPage"); 
     nextPage.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     arg0.startActivity(nextPage); 
      ...  
    } 

} 
+0

들어오는 SIP 통화 또는 VOICE 통화에 대해 이야기하고 있습니까? – slayton

답변

1

활동을 사용하는 경우 앱이 배경을 실행하고 있지 않습니다. 새로운 액티비티가 스택 맨 위로 가져 오면 애플리케이션이 일시 중지되어 백그라운드에 배치됩니다. 애플리케이션에서 모든 유형의 알림을 수신하도록 허용하려면 서비스를 실행하거나 수신하려는 인 텐트를 선택하는 브로드 캐스트 리시버를 생성하십시오. 이렇게하면 앱이 스택 맨 위에 있지 않을 때 처리 할 수 ​​있습니다.

UPDATE는

그래서 당신이 방송 수신기가 등록 ... 당신이 당신의 활동에 등록 된 활동이 살해되면이 ... 좋다 ...하지만, 그래서 참조 및 VM입니다 귀하의 신청서의 내용과 의도는 접수되지 않습니다. 브로드 캐스트 리시버를 활동과 독립적으로 만들어보십시오 (즉, 매니페스트를 사용하는 시스템이 브로드 캐스트 리시버를 호출하도록하십시오). 그런 다음 방송 수신기가 응용 프로그램이 종료 되더라도 의도를 수신하고 필요한 것을 실행할 수 있습니다.

다른 대안은 수신자를 등록하는 서비스를 만드는 것입니다. 서비스는 백그라운드에서 실행될 수 있지만 서비스 라이트가 결코 죽지 않을 정도로 걱정해야합니다 (더 많은 트릭). 가장 좋은 방법은 옵션 1 (오버 헤드가 적음)입니다.

+0

나는 당신이 나를 이해하지 못했거나 당신을 didnt했다라고 생각한다. 내가 그 방법을 설명하게 하소서. 내 앱을 실행 한 후, 내 브로드 캐스트 리시버를 등록하여 수신 전화를 받으면 내 앱에서 완벽하게 작동합니다. 그리고 "홈 버튼"을 누르면 내 앱이 백그라운드로 이동하지만 여전히 전화를받을 수 있으며 문제가 발생하면 내 앱을 화면에 올려서 통화를 거부하거나 수락 할 수 있습니다. – SherMi

+0

나는 당신이 말하는 것을 얻습니다. 응용 프로그램이 백그라운드에서 실행 중일 때 다른 사람이 전화를 걸면 통화 화면이 표시되지 않습니다. 다시 ... 백그라운드에서 실행중인 응용 프로그램은 들어오는 호출의 의도를 얻는 브로드 캐스트 수신기 나이를 탐지하는 서비스가 없으면 "죽은"목적으로 사용됩니다. 더 많은 정보를 얻으려면 업데이트를 읽으십시오 .... – jjNford

+0

아, 이제 네가 무슨 뜻인지 안다. 내 이해를 위해 고맙다. – SherMi