Mediabrowserservice Music Playback Project

Source: Internet
Author: User

Mediabrowserservice Music Playback project, this project mainly has the following functions:
(1): Support playing music online
(2): Press the home button to exit the page and display the notification bar part of the playback prompt,
(3): Support to toggle the top and bottom songs
This project from: Https://github.com/googlesamples/android-MediaBrowserService
First configure the following services:
<service
Android:name= ". Service. Musicservice "
Android:exported= "true" >
<intent-filter>
<action android:name= "Android.media.browse.MediaBrowserService"/>
</intent-filter>
</service>

The main code is as follows:

public class Browsefragment extends Fragment {

private static final String TAG = Loghelper.makelogtag (BrowseFragment.class.getSimpleName ());

public static final String arg_media_id = "media_id";

public static interface Fragmentdatahelper {
void onmediaitemselected (Mediabrowser.mediaitem item);
}

The MediaID to is used for subscribing for children using the mediabrowser.
Private String Mmediaid;

Private MediaBrowser Mmediabrowser;
Private Browseadapter Mbrowseradapter;

Private Mediabrowser.subscriptioncallback Msubscriptioncallback = new Mediabrowser.subscriptioncallback () {

        @Override
        public void onchildrenloaded (String ParentID, list<mediabrowser.mediaitem> children) {
             mbrowseradapter.clear ();
            mbrowseradapter.notifydatasetinvalidated ();
            for (Mediabrowser.mediaitem Item:children) {
                Mbrowseradapter.add (item);
           }
            mbrowseradapter.notifydatasetchanged ();
       }

@Override
public void OnError (String id) {
Toast.maketext (Getactivity (), R.string.error_loading_media,
Toast.length_long). Show ();
}
};

Private Mediabrowser.connectioncallback Mconnectioncallback =
New Mediabrowser.connectioncallback () {
@Override
public void onconnected () {
LOGHELPER.D (TAG, "onconnected:session token" + mmediabrowser.getsessiontoken ());

if (Mmediaid = = null) {
Mmediaid = Mmediabrowser.getroot ();
}
Mmediabrowser.subscribe (Mmediaid, msubscriptioncallback);
if (mmediabrowser.getsessiontoken () = = null) {
throw new IllegalArgumentException ("No Session token");
}
Mediacontroller Mediacontroller = new Mediacontroller (getactivity (),
Mmediabrowser.getsessiontoken ());
Getactivity (). Setmediacontroller (Mediacontroller);
}

@Override
public void onconnectionfailed () {
LOGHELPER.D (TAG, "onconnectionfailed");
}

@Override
public void onconnectionsuspended () {
LOGHELPER.D (TAG, "onconnectionsuspended");
Getactivity (). Setmediacontroller (NULL);
}
};

public static browsefragment newinstance (String mediaid) {
Bundle args = new bundle ();
Args.putstring (arg_media_id, MediaID);
Browsefragment fragment = new Browsefragment ();
Fragment.setarguments (args);
return fragment;
}

@Override
Public View Oncreateview (layoutinflater inflater, ViewGroup container,
Bundle savedinstancestate) {
View Rootview = inflater.inflate (R.layout.fragment_list, container, false);

Mbrowseradapter = new Browseadapter (getactivity ());

View controls = Rootview.findviewbyid (R.id.controls);
Controls.setvisibility (View.gone);

ListView ListView = (ListView) Rootview.findviewbyid (R.id.list_view);
Listview.setadapter (Mbrowseradapter);
Listview.setonitemclicklistener (New Adapterview.onitemclicklistener () {
@Override
public void Onitemclick (adapterview<?> parent, view view, int position, long ID) {
Mediabrowser.mediaitem item = mbrowseradapter.getitem (position);
try {
Fragmentdatahelper listener = (fragmentdatahelper) getactivity ();
listener.onmediaitemselected (item);
} catch (ClassCastException ex) {
LOG.E (TAG, "Exception trying to cast to Fragmentdatahelper", ex);
}
}
});

Bundle args = Getarguments ();
Mmediaid = args.getstring (arg_media_id, NULL);

Mmediabrowser = new MediaBrowser (getactivity (),
New ComponentName (Getactivity (), Musicservice.class),
Mconnectioncallback, NULL);

return rootview;
}

@Override
public void OnStart () {
Super.onstart ();
Mmediabrowser.connect ();
}

@Override
public void OnStop () {
Super.onstop ();
Mmediabrowser.disconnect ();
}

An adapter for showing the list of browsed Mediaitem ' s
private static class Browseadapter extends Arrayadapter<mediabrowser.mediaitem> {

Public Browseadapter (Context context) {
Super (context, R.layout.media_list_item, New arraylist<mediabrowser.mediaitem> ());
}

Static Class Viewholder {
ImageView Mimageview;
TextView Mtitleview;
TextView Mdescriptionview;
}

@Override
Public View GetView (int position, View Convertview, ViewGroup parent) {

Viewholder Holder;

if (Convertview = = null) {
Convertview = Layoutinflater.from (GetContext ())
. Inflate (R.layout.media_list_item, parent, false);
Holder = new Viewholder ();
Holder.mimageview = (ImageView) Convertview.findviewbyid (R.ID.PLAY_EQ);
Holder.mImageView.setVisibility (View.gone);
Holder.mtitleview = (TextView) Convertview.findviewbyid (r.id.title);
Holder.mdescriptionview = (TextView) Convertview.findviewbyid (r.id.description);
Convertview.settag (holder);
} else {
Holder = (viewholder) convertview.gettag ();
}

Mediabrowser.mediaitem item = getItem (position);
Holder.mTitleView.setText (Item.getdescription (). GetTitle ());
Holder.mDescriptionView.setText (Item.getdescription (). GetDescription ());
if (item.isplayable ()) {
Holder.mImageView.setImageDrawable (
GetContext (). getdrawable (R.DRAWABLE.IC_PLAY_ARROW_WHITE_24DP));
Holder.mImageView.setVisibility (view.visible);
}
return convertview;
}
}
}

Operating effect:


: http://www.itlanbao.com/code/20151123/10000/100656.html

    • 650) this.width=650; "src=" Http://www.itlanbao.com/code/users/10000/20151123/2015112316115863286700.gif "/>

Related code

    • Mediabrowserservice Music Playback Project

    • Very simple but cool particle crushing effect

    • A good ordering software

    • Android a nice picture viewing effect

    • Dragtosortimage album loading and picture dragging

    • Copy-Pull recording video

    • A cool load loading effect

    • Recyclerview loading different view implementation effects

    • Super Cool Time selection control

    • Nice Time-axis


Mediabrowserservice Music Playback Project

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.