2013-03-13 4 views
13

서비스가 포 그라운드 모드에서 실행 중이며 Android 4.2 이상을 실행하는 태블릿에서 사용자 세션 간 전환을 감지하고 싶습니다.사용자 간 전환 감지 방법

알림을 받으려면 등록 할 수있는 브로드 캐스트 리시버가 있습니까?

잠금 화면에서 다른 사용자 세션을 선택하자마자 Google 뮤직이 음악 재생을 중지하는 것으로 나타났습니다. 스위치를 어떻게 감지합니까?


대답은 정답

감사 @CommonsWare을 설명했다. 사용자 스위치를 감지하는 방법에 대해 좀 더 설명하겠습니다.

먼저 수신자가 Context.registerReceiver을 통해 등록되어야한다고 문서에 명시 적으로 명시되어 있습니다. 따라서 다음과 같이하십시오 :

UserSwitchReceiver receiver = new UserSwitchReceiver(); 
IntentFilter filter = new IntentFilter(); 
filter.addAction(Intent.ACTION_USER_BACKGROUND); 
filter.addAction(Intent.ACTION_USER_FOREGROUND); 
registerReceiver(receiver, filter); 

그런 다음 수신자에서도 사용자 ID를 검색 할 수 있습니다. 다음은 작은 스 니펫입니다.

public class UserSwitchReceiver extends BroadcastReceiver { 

private static final String TAG = "UserSwitchReceiver"; 

    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     boolean userSentBackground = intent.getAction().equals(Intent.ACTION_USER_BACKGROUND); 
     boolean userSentForeground = intent.getAction().equals(Intent.ACTION_USER_FOREGROUND); 
     Log.d(TAG, "Switch received. User sent background = " + userSentBackground + "; User sent foreground = " + userSentForeground + ";"); 

     int user = intent.getExtras().getInt("android.intent.extra.user_handle"); 
     Log.d(TAG, "user = " + user); 
    } 
} 
+2

서비스가 귀하의 케이스에서 계속 실행되는 것에 놀랐습니다. 너는 계속해서 계속 가고 있는지 확인 했니? –

+0

예. 한편으로는 내 앱의 로그가 다른 사용자의 계정으로 표시되는 것을 볼 수 있습니다. 반면에 원래 사용자 (내 서비스 실행)로 돌아 가면 포 그라운드 알림 아이콘이 나타납니다. 로그에 서비스가 중지되었음을 나타내는 메시지가 없습니다. –

+0

Google Play에서 라디오 스트리밍 앱을 사용하려고 시도했으며 다른 사용자로 전환 할 때도 해당 앱이 사망하지 않습니다. –

답변