MediaBrowserService 音乐播放项目

MediaBrowserService音乐播放项目,本项目主要有如下功能:(1):支持播放在线音乐(2):按住home键退出页面后显示通知栏部分播放提示,(3):支持切换上下首歌曲本项目来自:http://www.itlanbao.com/code/20151123/10000/100656.html首先配置如下服务:<service android:name=".service.MusicService" android:exported="true"><intent-filter><action android:name="android.media.browse.MediaBrowserService" /></intent-filter></service>主要代码如下:publicclassBrowseFragmentextendsFragment{privatestaticfinalStringTAG=LogHelper.makeLogTag(BrowseFragment.class.getSimpleName());publicstaticfinalStringARG_MEDIA_ID="media_id";publicstaticinterfaceFragmentDataHelper{voidonMediaItemSelected(MediaBrowser.MediaItemitem);}//ThemediaIdtobeusedforsubscribingforchildrenusingtheMediaBrowser.privateStringmMediaId;privateMediaBrowsermMediaBrowser;privateBrowseAdaptermBrowserAdapter;privateMediaBrowser.SubscriptionCallbackmSubscriptionCallback=newMediaBrowser.SubscriptionCallback(){@OverridepublicvoidonChildrenLoaded(StringparentId,List<MediaBrowser.MediaItem>children){mBrowserAdapter.clear();mBrowserAdapter.notifyDataSetInvalidated();for(MediaBrowser.MediaItemitem:children){mBrowserAdapter.add(item);}mBrowserAdapter.notifyDataSetChanged();}@OverridepublicvoidonError(Stringid){Toast.makeText(getActivity(),R.string.error_loading_media,Toast.LENGTH_LONG).show();}};privateMediaBrowser.ConnectionCallbackmConnectionCallback=newMediaBrowser.ConnectionCallback(){@OverridepublicvoidonConnected(){LogHelper.d(TAG,"onConnected:sessiontoken"+mMediaBrowser.getSessionToken());if(mMediaId==null){mMediaId=mMediaBrowser.getRoot();}mMediaBrowser.subscribe(mMediaId,mSubscriptionCallback);if(mMediaBrowser.getSessionToken()==null){thrownewIllegalArgumentException("NoSessiontoken");}MediaControllermediaController=newMediaController(getActivity(),mMediaBrowser.getSessionToken());getActivity().setMediaController(mediaController);}@OverridepublicvoidonConnectionFailed(){LogHelper.d(TAG,"onConnectionFailed");}@OverridepublicvoidonConnectionSuspended(){LogHelper.d(TAG,"onConnectionSuspended");getActivity().setMediaController(null);}};publicstaticBrowseFragmentnewInstance(StringmediaId){Bundleargs=newBundle();args.putString(ARG_MEDIA_ID,mediaId);BrowseFragmentfragment=newBrowseFragment();fragment.setArguments(args);returnfragment;}@OverridepublicViewonCreateView(LayoutInflaterinflater,ViewGroupcontainer,BundlesavedInstanceState){ViewrootView=inflater.inflate(R.layout.fragment_list,container,false);mBrowserAdapter=newBrowseAdapter(getActivity());Viewcontrols=rootView.findViewById(R.id.controls);controls.setVisibility(View.GONE);ListViewlistView=(ListView)rootView.findViewById(R.id.list_view);listView.setAdapter(mBrowserAdapter);listView.setOnItemClickListener(newAdapterView.OnItemClickListener(){@OverridepublicvoidonItemClick(AdapterView<?>parent,Viewview,intposition,longid){MediaBrowser.MediaItemitem=mBrowserAdapter.getItem(position);try{FragmentDataHelperlistener=(FragmentDataHelper)getActivity();listener.onMediaItemSelected(item);}catch(ClassCastExceptionex){Log.e(TAG,"ExceptiontryingtocasttoFragmentDataHelper",ex);}}});Bundleargs=getArguments();mMediaId=args.getString(ARG_MEDIA_ID,null);mMediaBrowser=newMediaBrowser(getActivity(),newComponentName(getActivity(),MusicService.class),mConnectionCallback,null);returnrootView;}@OverridepublicvoidonStart(){super.onStart();mMediaBrowser.connect();}@OverridepublicvoidonStop(){super.onStop();mMediaBrowser.disconnect();}//AnadapterforshowingthelistofbrowsedMediaItem'sprivatestaticclassBrowseAdapterextendsArrayAdapter<MediaBrowser.MediaItem>{publicBrowseAdapter(Contextcontext){super(context,R.layout.media_list_item,newArrayList<MediaBrowser.MediaItem>());}staticclassViewHolder{ImageViewmImageView;TextViewmTitleView;TextViewmDescriptionView;}@OverridepublicViewgetView(intposition,ViewconvertView,ViewGroupparent){ViewHolderholder;if(convertView==null){convertView=LayoutInflater.from(getContext()).inflate(R.layout.media_list_item,parent,false);holder=newViewHolder();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.MediaItemitem=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);}returnconvertView;}}} Android Studio .CodeEntity .code_pieces ul.piece_anchor{width:25px;position:absolute;top:25px;left:-30px;z-index:1000;}.CodeEntity .code_pieces ul.piece_anchor li{width:25px;background: #efe;margin-bottom:2px;}.CodeEntity .code_pieces ul.piece_anchor li{border-left:3px #40AA63 solid;border-right:3px #efe solid;}.CodeEntity .code_pieces ul.piece_anchor li:hover{border-right:3px #40AA63 solid;border-left:3px #efe solid;}.CodeEntity .code_pieces ul.piece_anchor li a{color: #333;padding: 3px 10px;}.CodeEntity .code_pieces .jump_to_code{visibility:hidden;position:relative;}.CodeEntity .code_pieces .code_piece:hover .jump_to_code{visibility:visible;}.CodeEntity .code_pieces .code_piece:hover .jump_to_code a{text-decoration:none;}.CodeEntity .code_pieces h2 i{float:right;font-style:normal;font-weight:normal;}.CodeEntity .code_pieces h2 i a{font-size:9pt;background: #FFFFFF;color:#00A;padding: 2px 5px;text-decoration:none;}

MediaBrowserService 音乐播放项目

相关文章:

你感兴趣的文章:

标签云: