182cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim/* 282cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim * Copyright (C) 2015 The Android Open Source Project 382cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim * 482cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim * Licensed under the Apache License, Version 2.0 (the "License"); 582cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim * you may not use this file except in compliance with the License. 682cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim * You may obtain a copy of the License at 782cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim * 882cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim * http://www.apache.org/licenses/LICENSE-2.0 982cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim * 1082cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim * Unless required by applicable law or agreed to in writing, software 1182cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim * distributed under the License is distributed on an "AS IS" BASIS, 1282cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1382cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim * See the License for the specific language governing permissions and 1482cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim * limitations under the License. 1582cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim */ 1682cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim 1782cf659fd8dcc28e182274b17a401023ab879deaSungsoo Limpackage android.support.v4.media; 1882cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim 1982cf659fd8dcc28e182274b17a401023ab879deaSungsoo Limimport android.media.browse.MediaBrowser; 2082cf659fd8dcc28e182274b17a401023ab879deaSungsoo Limimport android.os.Parcel; 2182cf659fd8dcc28e182274b17a401023ab879deaSungsoo Limimport android.support.annotation.NonNull; 2282cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim 2382cf659fd8dcc28e182274b17a401023ab879deaSungsoo Limclass MediaBrowserCompatApi23 { 2482cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim 2582cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim public static Object createItemCallback(ItemCallback callback) { 2682cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim return new ItemCallbackProxy<>(callback); 2782cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim } 2882cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim 2982cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim public static void getItem(Object browserObj, String mediaId, Object itemCallbackObj) { 3082cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim ((MediaBrowser) browserObj).getItem(mediaId, ((MediaBrowser.ItemCallback) itemCallbackObj)); 3182cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim } 3282cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim 3382cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim interface ItemCallback { 3482cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim void onItemLoaded(Parcel itemParcel); 3582cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim void onError(@NonNull String itemId); 3682cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim } 3782cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim 3882cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim static class ItemCallbackProxy<T extends ItemCallback> extends MediaBrowser.ItemCallback { 3982cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim protected final T mItemCallback; 4082cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim 4182cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim public ItemCallbackProxy(T callback) { 4282cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim mItemCallback = callback; 4382cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim } 4482cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim 4582cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim @Override 4682cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim public void onItemLoaded(MediaBrowser.MediaItem item) { 4782cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim Parcel parcel = Parcel.obtain(); 4882cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim item.writeToParcel(parcel, 0); 4982cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim mItemCallback.onItemLoaded(parcel); 5082cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim } 5182cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim 5282cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim @Override 5382cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim public void onError(@NonNull String itemId) { 5482cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim mItemCallback.onError(itemId); 5582cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim } 5682cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim } 5782cf659fd8dcc28e182274b17a401023ab879deaSungsoo Lim} 58