124fa6c0dd42df057729e1a258388183f94da7f82Jeff Brown/* 224fa6c0dd42df057729e1a258388183f94da7f82Jeff Brown * Copyright (C) 2014 The Android Open Source Project 324fa6c0dd42df057729e1a258388183f94da7f82Jeff Brown * 424fa6c0dd42df057729e1a258388183f94da7f82Jeff Brown * Licensed under the Apache License, Version 2.0 (the "License"); 524fa6c0dd42df057729e1a258388183f94da7f82Jeff Brown * you may not use this file except in compliance with the License. 624fa6c0dd42df057729e1a258388183f94da7f82Jeff Brown * You may obtain a copy of the License at 724fa6c0dd42df057729e1a258388183f94da7f82Jeff Brown * 824fa6c0dd42df057729e1a258388183f94da7f82Jeff Brown * http://www.apache.org/licenses/LICENSE-2.0 924fa6c0dd42df057729e1a258388183f94da7f82Jeff Brown * 1024fa6c0dd42df057729e1a258388183f94da7f82Jeff Brown * Unless required by applicable law or agreed to in writing, software 1124fa6c0dd42df057729e1a258388183f94da7f82Jeff Brown * distributed under the License is distributed on an "AS IS" BASIS, 1224fa6c0dd42df057729e1a258388183f94da7f82Jeff Brown * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1324fa6c0dd42df057729e1a258388183f94da7f82Jeff Brown * See the License for the specific language governing permissions and 1424fa6c0dd42df057729e1a258388183f94da7f82Jeff Brown * limitations under the License. 1524fa6c0dd42df057729e1a258388183f94da7f82Jeff Brown */ 1624fa6c0dd42df057729e1a258388183f94da7f82Jeff Brown 1724fa6c0dd42df057729e1a258388183f94da7f82Jeff Brownpackage android.support.v4.media.session; 1824fa6c0dd42df057729e1a258388183f94da7f82Jeff Brown 1924fa6c0dd42df057729e1a258388183f94da7f82Jeff Brownimport android.media.session.PlaybackState; 20ea79b7d36972eb3f518a7e7b59a92e7bd5faefb4Ian Lakeimport android.os.Bundle; 2189febf83e2bd3720923474006bcdf6c91a3b88f2Aurimas Liutikas 22ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.annotation.RequiresApi; 2324fa6c0dd42df057729e1a258388183f94da7f82Jeff Brown 24ea79b7d36972eb3f518a7e7b59a92e7bd5faefb4Ian Lakeimport java.util.List; 25ea79b7d36972eb3f518a7e7b59a92e7bd5faefb4Ian Lake 268f886fe8c7e23fe6ccb8734167c960c2ed3429c3Alan Viverette@RequiresApi(21) 2724fa6c0dd42df057729e1a258388183f94da7f82Jeff Brownclass PlaybackStateCompatApi21 { 2824fa6c0dd42df057729e1a258388183f94da7f82Jeff Brown public static int getState(Object stateObj) { 2924fa6c0dd42df057729e1a258388183f94da7f82Jeff Brown return ((PlaybackState)stateObj).getState(); 3024fa6c0dd42df057729e1a258388183f94da7f82Jeff Brown } 3124fa6c0dd42df057729e1a258388183f94da7f82Jeff Brown 3224fa6c0dd42df057729e1a258388183f94da7f82Jeff Brown public static long getPosition(Object stateObj) { 3324fa6c0dd42df057729e1a258388183f94da7f82Jeff Brown return ((PlaybackState)stateObj).getPosition(); 3424fa6c0dd42df057729e1a258388183f94da7f82Jeff Brown } 3524fa6c0dd42df057729e1a258388183f94da7f82Jeff Brown 36312f13dea7b4a9229dff784c6e94b0ec0c722b74RoboErik public static long getBufferedPosition(Object stateObj) { 37312f13dea7b4a9229dff784c6e94b0ec0c722b74RoboErik return ((PlaybackState)stateObj).getBufferedPosition(); 3824fa6c0dd42df057729e1a258388183f94da7f82Jeff Brown } 3924fa6c0dd42df057729e1a258388183f94da7f82Jeff Brown 4084b0350796e4ae8a113ce1abba54f07a2605cc5cRoboErik public static float getPlaybackSpeed(Object stateObj) { 4184b0350796e4ae8a113ce1abba54f07a2605cc5cRoboErik return ((PlaybackState)stateObj).getPlaybackSpeed(); 4224fa6c0dd42df057729e1a258388183f94da7f82Jeff Brown } 4324fa6c0dd42df057729e1a258388183f94da7f82Jeff Brown 4424fa6c0dd42df057729e1a258388183f94da7f82Jeff Brown public static long getActions(Object stateObj) { 4524fa6c0dd42df057729e1a258388183f94da7f82Jeff Brown return ((PlaybackState)stateObj).getActions(); 4624fa6c0dd42df057729e1a258388183f94da7f82Jeff Brown } 4724fa6c0dd42df057729e1a258388183f94da7f82Jeff Brown 4824fa6c0dd42df057729e1a258388183f94da7f82Jeff Brown public static CharSequence getErrorMessage(Object stateObj) { 4924fa6c0dd42df057729e1a258388183f94da7f82Jeff Brown return ((PlaybackState)stateObj).getErrorMessage(); 5024fa6c0dd42df057729e1a258388183f94da7f82Jeff Brown } 5124fa6c0dd42df057729e1a258388183f94da7f82Jeff Brown 5224fa6c0dd42df057729e1a258388183f94da7f82Jeff Brown public static long getLastPositionUpdateTime(Object stateObj) { 5384b0350796e4ae8a113ce1abba54f07a2605cc5cRoboErik return ((PlaybackState)stateObj).getLastPositionUpdateTime(); 5424fa6c0dd42df057729e1a258388183f94da7f82Jeff Brown } 5524fa6c0dd42df057729e1a258388183f94da7f82Jeff Brown 56ea79b7d36972eb3f518a7e7b59a92e7bd5faefb4Ian Lake public static List<Object> getCustomActions(Object stateObj) { 57ea79b7d36972eb3f518a7e7b59a92e7bd5faefb4Ian Lake return (List)((PlaybackState)stateObj).getCustomActions(); 58ea79b7d36972eb3f518a7e7b59a92e7bd5faefb4Ian Lake } 59ea79b7d36972eb3f518a7e7b59a92e7bd5faefb4Ian Lake 60ea79b7d36972eb3f518a7e7b59a92e7bd5faefb4Ian Lake public static long getActiveQueueItemId(Object stateObj) { 61ea79b7d36972eb3f518a7e7b59a92e7bd5faefb4Ian Lake return ((PlaybackState)stateObj).getActiveQueueItemId(); 62ea79b7d36972eb3f518a7e7b59a92e7bd5faefb4Ian Lake } 63ea79b7d36972eb3f518a7e7b59a92e7bd5faefb4Ian Lake 64312f13dea7b4a9229dff784c6e94b0ec0c722b74RoboErik public static Object newInstance(int state, long position, long bufferedPosition, 65ea79b7d36972eb3f518a7e7b59a92e7bd5faefb4Ian Lake float speed, long actions, CharSequence errorMessage, long updateTime, 66ea79b7d36972eb3f518a7e7b59a92e7bd5faefb4Ian Lake List<Object> customActions, 67ea79b7d36972eb3f518a7e7b59a92e7bd5faefb4Ian Lake long activeItemId) { 6884b0350796e4ae8a113ce1abba54f07a2605cc5cRoboErik PlaybackState.Builder stateObj = new PlaybackState.Builder(); 6984b0350796e4ae8a113ce1abba54f07a2605cc5cRoboErik stateObj.setState(state, position, speed, updateTime); 70312f13dea7b4a9229dff784c6e94b0ec0c722b74RoboErik stateObj.setBufferedPosition(bufferedPosition); 7124fa6c0dd42df057729e1a258388183f94da7f82Jeff Brown stateObj.setActions(actions); 7224fa6c0dd42df057729e1a258388183f94da7f82Jeff Brown stateObj.setErrorMessage(errorMessage); 73ea79b7d36972eb3f518a7e7b59a92e7bd5faefb4Ian Lake for (Object customAction : customActions) { 74ea79b7d36972eb3f518a7e7b59a92e7bd5faefb4Ian Lake stateObj.addCustomAction((PlaybackState.CustomAction) customAction); 75ea79b7d36972eb3f518a7e7b59a92e7bd5faefb4Ian Lake } 76ea79b7d36972eb3f518a7e7b59a92e7bd5faefb4Ian Lake stateObj.setActiveQueueItemId(activeItemId); 7784b0350796e4ae8a113ce1abba54f07a2605cc5cRoboErik return stateObj.build(); 7824fa6c0dd42df057729e1a258388183f94da7f82Jeff Brown } 79ea79b7d36972eb3f518a7e7b59a92e7bd5faefb4Ian Lake 80ea79b7d36972eb3f518a7e7b59a92e7bd5faefb4Ian Lake static final class CustomAction { 81ea79b7d36972eb3f518a7e7b59a92e7bd5faefb4Ian Lake public static String getAction(Object customActionObj) { 82ea79b7d36972eb3f518a7e7b59a92e7bd5faefb4Ian Lake return ((PlaybackState.CustomAction)customActionObj).getAction(); 83ea79b7d36972eb3f518a7e7b59a92e7bd5faefb4Ian Lake } 84ea79b7d36972eb3f518a7e7b59a92e7bd5faefb4Ian Lake 85ea79b7d36972eb3f518a7e7b59a92e7bd5faefb4Ian Lake public static CharSequence getName(Object customActionObj) { 86ea79b7d36972eb3f518a7e7b59a92e7bd5faefb4Ian Lake return ((PlaybackState.CustomAction)customActionObj).getName(); 87ea79b7d36972eb3f518a7e7b59a92e7bd5faefb4Ian Lake } 88ea79b7d36972eb3f518a7e7b59a92e7bd5faefb4Ian Lake 89ea79b7d36972eb3f518a7e7b59a92e7bd5faefb4Ian Lake public static int getIcon(Object customActionObj) { 90ea79b7d36972eb3f518a7e7b59a92e7bd5faefb4Ian Lake return ((PlaybackState.CustomAction)customActionObj).getIcon(); 91ea79b7d36972eb3f518a7e7b59a92e7bd5faefb4Ian Lake } 92ea79b7d36972eb3f518a7e7b59a92e7bd5faefb4Ian Lake public static Bundle getExtras(Object customActionObj) { 93ea79b7d36972eb3f518a7e7b59a92e7bd5faefb4Ian Lake return ((PlaybackState.CustomAction)customActionObj).getExtras(); 94ea79b7d36972eb3f518a7e7b59a92e7bd5faefb4Ian Lake } 95ea79b7d36972eb3f518a7e7b59a92e7bd5faefb4Ian Lake 96ea79b7d36972eb3f518a7e7b59a92e7bd5faefb4Ian Lake public static Object newInstance(String action, CharSequence name, 97ea79b7d36972eb3f518a7e7b59a92e7bd5faefb4Ian Lake int icon, Bundle extras) { 98ea79b7d36972eb3f518a7e7b59a92e7bd5faefb4Ian Lake PlaybackState.CustomAction.Builder customActionObj = 99ea79b7d36972eb3f518a7e7b59a92e7bd5faefb4Ian Lake new PlaybackState.CustomAction.Builder(action, name, icon); 100ea79b7d36972eb3f518a7e7b59a92e7bd5faefb4Ian Lake customActionObj.setExtras(extras); 101ea79b7d36972eb3f518a7e7b59a92e7bd5faefb4Ian Lake return customActionObj.build(); 102ea79b7d36972eb3f518a7e7b59a92e7bd5faefb4Ian Lake } 1030f4ca634bbc43ddff900c35f7d2a43b55d8c830dJake Wharton 1040f4ca634bbc43ddff900c35f7d2a43b55d8c830dJake Wharton private CustomAction() { 1050f4ca634bbc43ddff900c35f7d2a43b55d8c830dJake Wharton } 1060f4ca634bbc43ddff900c35f7d2a43b55d8c830dJake Wharton } 1070f4ca634bbc43ddff900c35f7d2a43b55d8c830dJake Wharton 1080f4ca634bbc43ddff900c35f7d2a43b55d8c830dJake Wharton private PlaybackStateCompatApi21() { 109ea79b7d36972eb3f518a7e7b59a92e7bd5faefb4Ian Lake } 11024fa6c0dd42df057729e1a258388183f94da7f82Jeff Brown} 111