#if java
import android.support.v4.media.session.MediaSessionCompat.*;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import anywheresoftware.b4a.BA;
import anywheresoftware.b4a.objects.IntentWrapper;
import android.os.Bundle;
import android.support.v4.media.MediaBrowserCompat.MediaItem;
import android.support.v4.media.MediaBrowserServiceCompat;
import android.support.v4.media.MediaMetadataCompat;
import android.support.v4.media.session.MediaButtonReceiver;
import android.support.v4.media.session.MediaSessionCompat;
import android.support.v4.media.session.PlaybackStateCompat;
//'import android.support.v7.media.MediaRouter;
import android.os.ResultReceiver;
import android.content.IntentFilter;
import java.util.ArrayList;
import java.util.List;
import android.media.MediaDescription;
import android.media.MediaMetadata;
import android.media.session.PlaybackState;
import android.service.media.MediaBrowserService.Result;
public class MyMediaBrowserService extends MediaBrowserServiceCompat {
private final String MEDIA_ID_ROOT = "__ROOT__";
private final String MY_EMPTY_MEDIA_ROOT_ID = "__Empty_Root__";
private MediaSessionCompat mSession;
private MyMediaSessionCallback mCallback;
public MyMediaBrowserService() {
super();
BA.Log("MyMediaBrowserService - MyMediaBrowserService");
mSession = new MediaSessionCompat(this, "MusicService");
mCallback = new MyMediaSessionCallback();
mSession.setCallback(mCallback);
mSession.setFlags(MediaSessionCompat.FLAG_HANDLES_MEDIA_BUTTONS |
MediaSessionCompat.FLAG_HANDLES_QUEUE_COMMANDS |
MediaSessionCompat.FLAG_HANDLES_TRANSPORT_CONTROLS);
setSessionToken(mSession.getSessionToken());
BA.Log("MyMediaBrowserService - MyMediaBrowserService Complete");
}
@Override
public void onCreate() {
// super();
BA.Log("MyMediaBrowserService - onCreate");
//
// mSession = new MediaSessionCompat(this, "MusicService");
// mCallback = new MyMediaSessionCallback();
// mSession.setCallback(mCallback);
//
// mSession.setFlags(MediaSessionCompat.FLAG_HANDLES_MEDIA_BUTTONS |
// MediaSessionCompat.FLAG_HANDLES_QUEUE_COMMANDS |
// MediaSessionCompat.FLAG_HANDLES_TRANSPORT_CONTROLS);
//
// setSessionToken(mSession.getSessionToken());
//
// BA.Log("MyMediaBrowserService - MyMediaBrowserService Complete");
}
@Override
public BrowserRoot onGetRoot(String clientPackageName, int clientUid, Bundle rootHints) {
BA.Log("MyMediaBrowserService - OnGetRoot");
processBA.raiseEventFromUI(getObject(), "media_ongetroot", clientPackageName);
return new BrowserRoot(MEDIA_ID_ROOT, null);
}
@Override
public void onLoadChildren(String parentMediaId, Result<List<MediaItem>> result) {
// I promise we’ll get To browsing
BA.Log("MyMediaBrowserService - OnLoadChildren");
processBA.raiseEventFromUI(getObject(), "media_onloadchildren", parentMediaId);
result.sendResult(null);
}
public class MyMediaSessionCallback extends MediaSessionCompat.Callback {
public MyMediaSessionCallback() {
}
public void onCommand(String command, Bundle args, ResultReceiver cb) {
processBA.raiseEventFromUI(null, "media_oncommand", command);
}
public boolean onMediaButtonEvent(Intent mediaButtonIntent) {
IntentWrapper baIntent = new IntentWrapper();
baIntent.setObject(mediaButtonIntent);
Boolean b = (Boolean) processBA.raiseEvent(null, "media_onbutton", baIntent);
return b == null ? false : b;
}
public void onStop() {
processBA.raiseEventFromUI(getObject(), "media_onstop", null);
return;
}
public void onPlay() {
processBA.raiseEventFromUI(getObject(), "media_onplay", null);
return;
}
public void onPause() {
processBA.raiseEventFromUI(getObject(), "media_onpause", null);
return;
}
public void onSkipToNext() {
processBA.raiseEventFromUI(getObject(), "media_onskiptonext", null);
return;
}
public void onSkipToPrevious() {
processBA.raiseEventFromUI(getObject(), "media_onskiptoprevious", null);
return;
}
}
}
#end if