2012-04-17 3 views
1

이전 질문에 대한 답변에서 언급했듯이 CDMA 및 GSM 라디오는 CPU가 Android 기기에서 잠자기 상태로 유지 된 후에도 계속 유지됩니다. 내 질문은 ...Android : 슬립 모드에서 Android를 사용할 때 패킷 데이터 수신

  1. 전화가 걸려 올 때, CPU/전화를 깨우는 것은 무엇입니까?
  2. 휴대 전화가 절전 모드로 전환 된 후에도 서버에 대한 활성 TCP 연결을 통해 데이터를 수신 할 때 내 애플리케이션을 깨우는 메커니즘이 있습니까?

답변

1

CPU가 잠 들어있을 때 데이터를 수신 할 수 없습니다.

새로운 데이터가 있는지 잠깐 확인하려면 CPU를 잠에서 깨워야합니다. 새 데이터를 확인하는 코드에서 새 데이터가있는 경우 깨어있어 처리를 계속할 수 있습니다.

확실히 BroadcastReceiver 및 Android 알람에 대해 배우고 싶습니다. 기본적으로 안드로이드에게 5 분마다 알람이 울리도록 지시 할 수 있습니다. 귀하의 BroadcastReceiver가 안드로이드에서 알람을 받으면 CPU를 깨우고, 새로운 데이터가 있는지 또는 무엇을하려고 하는지를 확인할 수있을만큼 오래 깨어있게됩니다. 새 데이터가있는 경우 CPU에 깨어있게하고 새 데이터를 처리하고 처리 할 수 ​​있습니다.

여기에 reasonable tutorial입니다. 물론 Android 개발자 문서가 유용합니다.

+0

답장을 보내 주셔서 감사합니다. "새로운 데이터가 있는지보기 위해 CPU가 잠시 깨어 있어야합니다." 새로운 데이터가 있는지 어떻게 알 수 있습니까? 나는 인 텐트 목록을 살펴 보았고 패킷 데이터가 수신되었음을 나타내는 데 사용할 수있는 것이 없다. –

+0

@HeshanPerera는 수면을 무시합니다. 전화가 깨어 있다는 것을 알았을 때 작성하는 코드는 무엇이든 수신자에게 동일한 코드를 씁니다. 그런 다음 알람이 수신자를 깨 웁니다. 수신자가 데이터를 가져 오려고 시도합니다. 수신자가 다시 수신자가 아닌 경우 데이터를 가져 오려고 시도합니다. – mwengler

+0

나는 당신이하는 말을 이해합니다. 문제는 안드로이드 문서가 브로드 캐스트 리시버가 패킷 데이터를 듣는 특별한 경우에 사용할 수있는 의도에 대해 이야기하지 않는다는 것입니다. 그런 의도를 알고 계시겠습니까? –

1

특히 TCP가 필요하지 않은 경우 기기에 푸시 알림을 보내고 싶을 수 있습니다.

Google (http://code.google.com/android/c2dm/)에서 (무료) Android Cloud to Device Messaging (C2DM) 서비스를 확인하십시오.

설치하는 데 약간의 작업이 필요하며 2.2 이상에서만 지원되지만 클라이언트/서버 아키텍처는 실제로 간단 해집니다.

+0

나는 C2DM도 조사하고있다. 유일한 단점은 기기가 Google 계정에 로그인해야한다는 것이다. 어쨌든, C2DM도 TCP 프로토콜을 사용하여 실행된다는 것은 제 이해입니다 ... 맞습니까? –

+0

그래, 내부적으로 keep-alive 패킷을 사용하여 Google C2DM 서버에 대한 연결을 유지합니다. 내 경험상 사용자가 연결 모드를 변경하면 연결을 유지 관리하는 데 꽤 좋은 역할을합니다 (edge ​​-> wifi -> 3g) – theelfismike