diff options
Diffstat (limited to 'MusicDemo/src/main/java/com/example/android/musicservicedemo/BrowseFragment.java')
-rw-r--r-- | MusicDemo/src/main/java/com/example/android/musicservicedemo/BrowseFragment.java | 210 |
1 files changed, 0 insertions, 210 deletions
diff --git a/MusicDemo/src/main/java/com/example/android/musicservicedemo/BrowseFragment.java b/MusicDemo/src/main/java/com/example/android/musicservicedemo/BrowseFragment.java deleted file mode 100644 index 1218c81..0000000 --- a/MusicDemo/src/main/java/com/example/android/musicservicedemo/BrowseFragment.java +++ /dev/null @@ -1,210 +0,0 @@ -/* - * Copyright (C) 2014 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.example.android.musicservicedemo; - -import android.app.Fragment; -import android.content.ComponentName; -import android.content.Context; -import android.media.browse.MediaBrowser; -import android.media.session.MediaController; -import android.os.Bundle; -import android.util.Log; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.AdapterView; -import android.widget.ArrayAdapter; -import android.widget.ImageView; -import android.widget.ListView; -import android.widget.TextView; -import android.widget.Toast; - -import com.example.android.musicservicedemo.utils.LogHelper; - -import java.util.ArrayList; -import java.util.List; - -/** - * A Fragment that lists all the various browsable queues available - * from a {@link android.service.media.MediaBrowserService}. - * <p/> - * It uses a {@link MediaBrowser} to connect to the {@link MusicService}. Once connected, - * the fragment subscribes to get all the children. All {@link MediaBrowser.MediaItem}'s - * that can be browsed are shown in a ListView. - */ -public class BrowseFragment extends Fragment { - - private static final String TAG = 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<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; - } - } -} |