2013-03-13 2 views
13

У меня есть служба, работающая в режиме переднего плана, и я бы хотел обнаружить переход между пользовательскими сеансами на планшетах под управлением Android 4.2 или выше.Как обнаружить переключение между пользователями

Есть ли радиовещательный приемник, который я могу зарегистрироваться, чтобы получать уведомление?

Я заметил, что Google Music останавливает воспроизведение музыки, как только на экране блокировки выбирается другой пользовательский сеанс. Как он обнаруживает коммутатор?


ОТВЕТ ОБЪЯСНЕНИЕ

Спасибо @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); 

Затем в ресивере вы также можете получить идентификатор пользователя. Вот небольшой отрывок:

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, и они не убиты ни при переключении на другого пользователя. –

ответ