MediaBrowserService音乐播放项目-创新互联

MediaBrowserService 音乐播放项目,本项目主要有如下功能:
(1):支持播放在线音乐
(2):按住home键退出页面后显示通知栏部分播放提示,
 (3) : 支持切换上下首歌曲
本项目来自:https://github.com/googlesamples/android-MediaBrowserService
 首先配置如下服务:
        android:name=".service.MusicService"
       android:exported="true">
     
        
     

   

站在用户的角度思考问题,与客户深入沟通,找到金牛网站设计与金牛网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站设计、做网站、企业官网、英文网站、手机端网站、网站推广、主机域名虚拟主机、企业邮箱。业务覆盖金牛地区。

主要代码如下:

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 be 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 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 {

       public BrowseAdapter(Context context) {
           super(context, R.layout.media_list_item, new ArrayList());
       }

       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;
       }
   }
}

运行效果:

下载地址:http://www.itlanbao.com/code/20151123/10000/100656.html

  • MediaBrowserService 音乐播放项目

相关代码

  • MediaBrowserService 音乐播放项目

  • 很简单却很酷的粒子破碎效果

  • 一个不错的订餐软件

  • android一个不错的图片浏览效果

  • DragToSortImage相册加载和图片拖拽

  • 仿微信下拉录制视频

  • 一个很酷的加载loading效果

  • RecyclerView加载不同view实现效果

  • 超酷的时间选择控件

  • 漂亮的时光轴

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享题目:MediaBrowserService音乐播放项目-创新互联
本文地址:http://ybzwz.com/article/dpjsjd.html