Java tutorial
/* * 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.chu.googleplaylibrary.ui; import android.app.SearchManager; import android.content.Intent; import android.os.Bundle; import android.provider.MediaStore; import com.example.chu.googleplaylibrary.R; import com.example.chu.googleplaylibrary.utils.LogHelper; /** * Main activity for the music player. * This class hold the MediaBrowser and the MediaController instances. It will create a MediaBrowser * when it is created and connect/disconnect on start/stop. Thus, a MediaBrowser will be always * connected while this activity is running. */ public class MusicPlayerActivity extends BaseActivity { private static final String TAG = LogHelper.makeLogTag(MusicPlayerActivity.class); private static final String SAVED_MEDIA_ID = "com.example.android.uamp.MEDIA_ID"; private static final String FRAGMENT_TAG = "uamp_list_container"; public static final String EXTRA_START_FULLSCREEN = "com.example.android.uamp.EXTRA_START_FULLSCREEN"; /** * Optionally used with {@link #EXTRA_START_FULLSCREEN} to carry a MediaDescription to * the {@link FullScreenPlayerActivity}, speeding up the screen rendering * while the {@link android.support.v4.media.session.MediaControllerCompat} is connecting. */ public static final String EXTRA_CURRENT_MEDIA_DESCRIPTION = "com.example.android.uamp.CURRENT_MEDIA_DESCRIPTION"; private Bundle mVoiceSearchParams; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LogHelper.d(TAG, "Activity onCreate"); setContentView(R.layout.activity_player); initializeToolbar(); initializeFromParams(savedInstanceState, getIntent()); // Only check if a full screen player is needed on the first time: if (savedInstanceState == null) { startFullScreenActivityIfNeeded(getIntent()); } } @Override protected void onSaveInstanceState(Bundle outState) { // String mediaId = getMediaId(); // if (mediaId != null) { // outState.putString(SAVED_MEDIA_ID, mediaId); // } super.onSaveInstanceState(outState); } @Override protected void onNewIntent(Intent intent) { LogHelper.d(TAG, "onNewIntent, intent=" + intent); initializeFromParams(null, intent); startFullScreenActivityIfNeeded(intent); } private void startFullScreenActivityIfNeeded(Intent intent) { if (intent != null && intent.getBooleanExtra(EXTRA_START_FULLSCREEN, false)) { Intent fullScreenIntent = new Intent(this, FullScreenPlayerActivity.class) .setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP) .putExtra(EXTRA_CURRENT_MEDIA_DESCRIPTION, intent.getParcelableExtra(EXTRA_CURRENT_MEDIA_DESCRIPTION)); startActivity(fullScreenIntent); } } protected void initializeFromParams(Bundle savedInstanceState, Intent intent) { String mediaId = null; // check if we were started from a "Play XYZ" voice search. If so, we save the extras // (which contain the query details) in a parameter, so we can reuse it later, when the // MediaSession is connected. if (intent.getAction() != null && intent.getAction().equals(MediaStore.INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH)) { mVoiceSearchParams = intent.getExtras(); LogHelper.d(TAG, "Starting from voice search query=", mVoiceSearchParams.getString(SearchManager.QUERY)); } else { if (savedInstanceState != null) { // If there is a saved media ID, use it mediaId = savedInstanceState.getString(SAVED_MEDIA_ID); } } } }