Ответ 1
Попробуйте ACTION_USER_FOREGROUND
и ACTION_USER_BACKGROUND
. Я не использовал их, но они были добавлены в API Level 17, и их описание похоже на то, что оно может помочь.
У меня есть служба, работающая в режиме переднего плана, и я бы хотел обнаружить переход между пользовательскими сеансами на планшетах под управлением 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 );
}
}
Попробуйте ACTION_USER_FOREGROUND
и ACTION_USER_BACKGROUND
. Я не использовал их, но они были добавлены в API Level 17, и их описание похоже на то, что оно может помочь.