21
21
22
22
import static org .schabi .newpipe .util .Localization .assureCorrectAppLanguage ;
23
23
24
- import android .app .Service ;
25
24
import android .content .Context ;
26
25
import android .content .Intent ;
27
26
import android .os .Binder ;
27
+ import android .os .Bundle ;
28
28
import android .os .IBinder ;
29
+ import android .support .v4 .media .MediaBrowserCompat .MediaItem ;
29
30
import android .util .Log ;
30
31
32
+ import androidx .annotation .NonNull ;
33
+ import androidx .annotation .Nullable ;
34
+ import androidx .media .MediaBrowserServiceCompat ;
35
+
31
36
import org .schabi .newpipe .player .mediasession .MediaSessionPlayerUi ;
32
37
import org .schabi .newpipe .util .ThemeHelper ;
33
38
39
+ import java .util .ArrayList ;
40
+ import java .util .List ;
34
41
35
42
/**
36
43
* One service for all players.
37
44
*/
38
- public final class PlayerService extends Service {
45
+ public final class PlayerService extends MediaBrowserServiceCompat {
39
46
private static final String TAG = PlayerService .class .getSimpleName ();
40
47
private static final boolean DEBUG = Player .DEBUG ;
41
48
@@ -50,6 +57,8 @@ public final class PlayerService extends Service {
50
57
51
58
@ Override
52
59
public void onCreate () {
60
+ super .onCreate ();
61
+
53
62
if (DEBUG ) {
54
63
Log .d (TAG , "onCreate() called" );
55
64
}
@@ -133,6 +142,9 @@ protected void attachBaseContext(final Context base) {
133
142
134
143
@ Override
135
144
public IBinder onBind (final Intent intent ) {
145
+ if (SERVICE_INTERFACE .equals (intent .getAction ())) {
146
+ return super .onBind (intent );
147
+ }
136
148
return mBinder ;
137
149
}
138
150
@@ -146,4 +158,29 @@ public Player getPlayer() {
146
158
return PlayerService .this .player ;
147
159
}
148
160
}
161
+
162
+ // MediaBrowserServiceCompat methods
163
+
164
+ @ NonNull
165
+ private static final String MY_MEDIA_ROOT_ID = "media_root_id" ;
166
+
167
+ @ Nullable
168
+ @ Override
169
+ public BrowserRoot onGetRoot (@ NonNull final String clientPackageName , final int clientUid ,
170
+ @ Nullable final Bundle rootHints ) {
171
+ Log .d (TAG , String .format ("MediaBrowserService.onGetRoot(%s, %s, %s)" ,
172
+ clientPackageName , clientUid , rootHints ));
173
+
174
+ return new MediaBrowserServiceCompat .BrowserRoot (MY_MEDIA_ROOT_ID , null );
175
+ }
176
+
177
+ @ Override
178
+ public void onLoadChildren (@ NonNull final String parentId ,
179
+ @ NonNull final Result <List <MediaItem >> result ) {
180
+ Log .d (TAG , String .format ("MediaBrowserService.onLoadChildren(%s)" , parentId ));
181
+
182
+ final List <MediaItem > mediaItems = new ArrayList <>();
183
+
184
+ result .sendResult (mediaItems );
185
+ }
149
186
}
0 commit comments