1ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moon/* 2a8496d1491e3068d26dcd5e3249a33f7e8dc202dHyundo Moon * Copyright 2017 The Android Open Source Project 3ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moon * 4ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moon * Licensed under the Apache License, Version 2.0 (the "License"); 5ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moon * you may not use this file except in compliance with the License. 6ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moon * You may obtain a copy of the License at 7ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moon * 8ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moon * http://www.apache.org/licenses/LICENSE-2.0 9ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moon * 10ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moon * Unless required by applicable law or agreed to in writing, software 11ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moon * distributed under the License is distributed on an "AS IS" BASIS, 12ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moon * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moon * See the License for the specific language governing permissions and 14ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moon * limitations under the License. 15ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moon */ 16ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moon 17ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moonpackage android.support.mediacompat.service; 18ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moon 19ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moon 20ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moonimport static android.support.mediacompat.testlib.MediaBrowserConstants.CUSTOM_ACTION_SEND_ERROR; 21ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moonimport static android.support.mediacompat.testlib.MediaBrowserConstants 22ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moon .CUSTOM_ACTION_SEND_PROGRESS_UPDATE; 23ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moonimport static android.support.mediacompat.testlib.MediaBrowserConstants.CUSTOM_ACTION_SEND_RESULT; 24ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moonimport static android.support.mediacompat.testlib.MediaBrowserConstants.NOTIFY_CHILDREN_CHANGED; 25ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moonimport static android.support.mediacompat.testlib.MediaBrowserConstants.SEND_DELAYED_ITEM_LOADED; 26ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moonimport static android.support.mediacompat.testlib.MediaBrowserConstants 27ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moon .SEND_DELAYED_NOTIFY_CHILDREN_CHANGED; 28ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moonimport static android.support.mediacompat.testlib.MediaBrowserConstants.SET_SESSION_TOKEN; 29276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moonimport static android.support.mediacompat.testlib.MediaSessionConstants.RELEASE; 30276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moonimport static android.support.mediacompat.testlib.MediaSessionConstants.SEND_SESSION_EVENT; 31276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moonimport static android.support.mediacompat.testlib.MediaSessionConstants.SET_ACTIVE; 32276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moonimport static android.support.mediacompat.testlib.MediaSessionConstants.SET_CAPTIONING_ENABLED; 33276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moonimport static android.support.mediacompat.testlib.MediaSessionConstants.SET_EXTRAS; 34276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moonimport static android.support.mediacompat.testlib.MediaSessionConstants.SET_FLAGS; 35276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moonimport static android.support.mediacompat.testlib.MediaSessionConstants.SET_METADATA; 36276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moonimport static android.support.mediacompat.testlib.MediaSessionConstants.SET_PLAYBACK_STATE; 37276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moonimport static android.support.mediacompat.testlib.MediaSessionConstants.SET_PLAYBACK_TO_LOCAL; 38276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moonimport static android.support.mediacompat.testlib.MediaSessionConstants.SET_PLAYBACK_TO_REMOTE; 39276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moonimport static android.support.mediacompat.testlib.MediaSessionConstants.SET_QUEUE; 40276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moonimport static android.support.mediacompat.testlib.MediaSessionConstants.SET_QUEUE_TITLE; 41276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moonimport static android.support.mediacompat.testlib.MediaSessionConstants.SET_RATING_TYPE; 42276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moonimport static android.support.mediacompat.testlib.MediaSessionConstants.SET_REPEAT_MODE; 43276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moonimport static android.support.mediacompat.testlib.MediaSessionConstants.SET_SESSION_ACTIVITY; 44276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moonimport static android.support.mediacompat.testlib.MediaSessionConstants.SET_SHUFFLE_MODE; 45beffc44637dc5137ae26ce937607f06326bbef97Hyundo Moonimport static android.support.mediacompat.testlib.util.IntentUtil 46beffc44637dc5137ae26ce937607f06326bbef97Hyundo Moon .ACTION_CALL_MEDIA_BROWSER_SERVICE_METHOD; 47beffc44637dc5137ae26ce937607f06326bbef97Hyundo Moonimport static android.support.mediacompat.testlib.util.IntentUtil.ACTION_CALL_MEDIA_SESSION_METHOD; 48beffc44637dc5137ae26ce937607f06326bbef97Hyundo Moonimport static android.support.mediacompat.testlib.util.IntentUtil.KEY_ARGUMENT; 49beffc44637dc5137ae26ce937607f06326bbef97Hyundo Moonimport static android.support.mediacompat.testlib.util.IntentUtil.KEY_METHOD_ID; 50ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moon 51276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moonimport android.app.PendingIntent; 52ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moonimport android.content.BroadcastReceiver; 53ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moonimport android.content.Context; 54ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moonimport android.content.Intent; 55ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moonimport android.os.Bundle; 56276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moonimport android.support.v4.media.MediaMetadataCompat; 57276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moonimport android.support.v4.media.RatingCompat; 58276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moonimport android.support.v4.media.session.MediaSessionCompat; 59276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moonimport android.support.v4.media.session.MediaSessionCompat.QueueItem; 60276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moonimport android.support.v4.media.session.ParcelableVolumeInfo; 61276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moonimport android.support.v4.media.session.PlaybackStateCompat; 62276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon 6389febf83e2bd3720923474006bcdf6c91a3b88f2Aurimas Liutikasimport androidx.media.VolumeProviderCompat; 6489febf83e2bd3720923474006bcdf6c91a3b88f2Aurimas Liutikas 65276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moonimport java.util.List; 66ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moon 67ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moonpublic class ServiceBroadcastReceiver extends BroadcastReceiver { 68ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moon 69ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moon @Override 70ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moon public void onReceive(Context context, Intent intent) { 71ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moon Bundle extras = intent.getExtras(); 72ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moon if (ACTION_CALL_MEDIA_BROWSER_SERVICE_METHOD.equals(intent.getAction()) && extras != null) { 73ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moon StubMediaBrowserServiceCompat service = StubMediaBrowserServiceCompat.sInstance; 74ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moon int method = extras.getInt(KEY_METHOD_ID, 0); 75ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moon 76ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moon switch (method) { 77ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moon case NOTIFY_CHILDREN_CHANGED: 78ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moon service.notifyChildrenChanged(extras.getString(KEY_ARGUMENT)); 79ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moon break; 80ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moon case SEND_DELAYED_NOTIFY_CHILDREN_CHANGED: 81ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moon service.sendDelayedNotifyChildrenChanged(); 82ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moon break; 83ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moon case SEND_DELAYED_ITEM_LOADED: 84ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moon service.sendDelayedItemLoaded(); 85ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moon break; 86ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moon case CUSTOM_ACTION_SEND_PROGRESS_UPDATE: 87ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moon service.mCustomActionResult.sendProgressUpdate(extras.getBundle(KEY_ARGUMENT)); 88ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moon break; 89ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moon case CUSTOM_ACTION_SEND_ERROR: 90ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moon service.mCustomActionResult.sendError(extras.getBundle(KEY_ARGUMENT)); 91ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moon break; 92ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moon case CUSTOM_ACTION_SEND_RESULT: 93ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moon service.mCustomActionResult.sendResult(extras.getBundle(KEY_ARGUMENT)); 94ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moon break; 95ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moon case SET_SESSION_TOKEN: 96ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moon StubMediaBrowserServiceCompatWithDelayedMediaSession.sInstance 97ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moon .callSetSessionToken(); 98ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moon break; 99ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moon } 100276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon } else if (ACTION_CALL_MEDIA_SESSION_METHOD.equals(intent.getAction()) && extras != null) { 101276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon MediaSessionCompat session = StubMediaBrowserServiceCompat.sSession; 102276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon int method = extras.getInt(KEY_METHOD_ID, 0); 103276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon 104276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon switch (method) { 105276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon case SET_EXTRAS: 106276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon session.setExtras(extras.getBundle(KEY_ARGUMENT)); 107276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon break; 108276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon case SET_FLAGS: 109276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon session.setFlags(extras.getInt(KEY_ARGUMENT)); 110276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon break; 111276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon case SET_METADATA: 112276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon session.setMetadata((MediaMetadataCompat) extras.getParcelable(KEY_ARGUMENT)); 113276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon break; 114276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon case SET_PLAYBACK_STATE: 115276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon session.setPlaybackState( 116276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon (PlaybackStateCompat) extras.getParcelable(KEY_ARGUMENT)); 117276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon break; 118276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon case SET_QUEUE: 119276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon List<QueueItem> items = extras.getParcelableArrayList(KEY_ARGUMENT); 120276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon session.setQueue(items); 121276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon break; 122276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon case SET_QUEUE_TITLE: 123276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon session.setQueueTitle(extras.getCharSequence(KEY_ARGUMENT)); 124276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon break; 125276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon case SET_SESSION_ACTIVITY: 126276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon session.setSessionActivity((PendingIntent) extras.getParcelable(KEY_ARGUMENT)); 127276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon break; 128276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon case SET_CAPTIONING_ENABLED: 129276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon session.setCaptioningEnabled(extras.getBoolean(KEY_ARGUMENT)); 130276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon break; 131276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon case SET_REPEAT_MODE: 132276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon session.setRepeatMode(extras.getInt(KEY_ARGUMENT)); 133276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon break; 134276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon case SET_SHUFFLE_MODE: 135276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon session.setShuffleMode(extras.getInt(KEY_ARGUMENT)); 136276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon break; 137276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon case SEND_SESSION_EVENT: 138276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon Bundle arguments = extras.getBundle(KEY_ARGUMENT); 139276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon session.sendSessionEvent( 140276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon arguments.getString("event"), arguments.getBundle("extras")); 141276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon break; 142276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon case SET_ACTIVE: 143276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon session.setActive(extras.getBoolean(KEY_ARGUMENT)); 144276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon break; 145276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon case RELEASE: 146276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon session.release(); 147276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon break; 148276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon case SET_PLAYBACK_TO_LOCAL: 149276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon session.setPlaybackToLocal(extras.getInt(KEY_ARGUMENT)); 150276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon break; 151276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon case SET_PLAYBACK_TO_REMOTE: 152276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon ParcelableVolumeInfo volumeInfo = extras.getParcelable(KEY_ARGUMENT); 153276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon session.setPlaybackToRemote(new VolumeProviderCompat( 154276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon volumeInfo.controlType, 155276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon volumeInfo.maxVolume, 156276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon volumeInfo.currentVolume) {}); 157276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon break; 158276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon case SET_RATING_TYPE: 159276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon session.setRatingType(RatingCompat.RATING_5_STARS); 160276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon break; 161276cb55dbda15f1e01e18227865ff73dcdcdfc3eHyundo Moon } 162ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moon } 163ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moon } 164ff81a699ed295b3ca522f9578b95b806db30af27Hyundo Moon} 165