2017-12-07 13 views
0

잠금 버튼을 두 번 누르면 메시지를 보내는 앱을 만들고 있지만 앱을 실행하고 로그를 확인하면 화면 꺼짐이 표시됩니다. 로그에서 세 번. 그리고 SCREEN OFF가 세 번 표시되었으므로 카운터가 세 번 증분되었음을 의미하므로 전화기 잠금이 해제 된 경우 메시지 하나가 한 번만 전송됩니다. 왜 이런거야?BroadcastReceiver는 화면을 잠글 때마다 ACTION_SCREEN_OFFs를 가져옵니다. 1 ACTION_SCREEN_ON

if (intent.getAction() == Intent.ACTION_SCREEN_OFF) 
    { 
     Log.d("IT WORKED", "SCREEN OFF"); 
     if (listen == true) 
      counter++; 
    } 

    else 
    { 
     if (listen == true) 
      counter++; 
     Log.d("IT WORKED", "SCREEN ON"); 
    } 
//when counter == 2 (2 lock button presses) send message 
+0

을 제공 횟수 방송 수신기 onReceive()가 세 번 실행 @HemanthSTobi 방법이 있기 때문에, –

+0

를 실행 "Screen OFF"를 세 번 기록합니다. 하지만 화면을 끌 때만 켜기 만하면 화면에 "화면 켜기"가 한번 기록됩니다. 정말 이상합니다. –

+0

등록한 인 텐트 필터 수 –

답변

0

내 실험에 따라 경찰이 작동하고 증가 카운터 확인하기 전에 당신에게 두 카운트

int counter = 0; 
private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     String action = intent.getAction(); 
     if (action != null) { 
      switch (action) { 
       case Intent.ACTION_SCREEN_OFF: 
        counter++; 
        break; 
       case Intent.ACTION_SCREEN_ON: 
        counter++; 
        break; 
      } 
     } 
     Log.i(TAG, "onReceive: " + counter); 
    } 
}; 

@Override 
protected void onStart() { 
    super.onStart(); 
    IntentFilter intentFilter = new IntentFilter(Intent.ACTION_SCREEN_OFF); 
    intentFilter.addAction(Intent.ACTION_SCREEN_ON); 
    registerReceiver(mBroadcastReceiver, intentFilter); 
} 

@Override 
protected void onDestroy() { 
    super.onDestroy(); 
    unregisterReceiver(mBroadcastReceiver); 
} 
+0

동일한 문제와 나는 그냥 붙여 넣기 복사, 장치 관련 것 같아요. 어느 쪽이든 방금 추가 로직을 추가하여 SCREEN_OFF를받는 두 번째 카운터를 추가하기 때문에 제대로 작동합니다. –