From bce5d7b2ea8f7bc7d2db7811af7a07520cdd1ec8 Mon Sep 17 00:00:00 2001 From: Sagar Date: Mon, 24 Jan 2022 18:06:34 +0530 Subject: [PATCH 1/3] stable exercise 1 --- app/build.gradle | 22 ++++----- .../ExampleInstrumentedTest.java | 4 +- .../classicalmusicquiz/MainActivity.java | 2 +- .../classicalmusicquiz/QuizActivity.java | 47 ++++++++++++------- .../android/classicalmusicquiz/Sample.java | 5 +- app/src/main/res/layout/activity_main.xml | 4 +- app/src/main/res/layout/activity_quiz.xml | 12 ++--- build.gradle | 8 ++-- gradle.properties | 2 + gradle/wrapper/gradle-wrapper.properties | 2 +- 10 files changed, 62 insertions(+), 46 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index cba54cd5..1155d00a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,15 +1,15 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 25 - buildToolsVersion "25.0.2" + compileSdkVersion 31 + buildToolsVersion "30.0.3" defaultConfig { applicationId "com.example.android.classicalmusicquiz" - minSdkVersion 15 - targetSdkVersion 25 + minSdkVersion 17 + targetSdkVersion 31 versionCode 1 versionName "1.0" - testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner' } buildTypes { release { @@ -20,12 +20,12 @@ android { } dependencies { - compile fileTree(dir: 'libs', include: ['*.jar']) - androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { + implementation fileTree(dir: 'libs', include: ['*.jar']) + androidTestImplementation('androidx.test.espresso:espresso-core:3.1.0', { exclude group: 'com.android.support', module: 'support-annotations' }) - compile 'com.google.android.exoplayer:exoplayer:r2.2.0' - compile 'com.android.support:appcompat-v7:25.3.0' - testCompile 'junit:junit:4.12' - compile 'com.android.support.constraint:constraint-layout:1.0.2' + implementation 'com.google.android.exoplayer:exoplayer:2.16.1' + implementation 'androidx.appcompat:appcompat:1.4.1' + testImplementation 'junit:junit:4.13.2' + implementation 'androidx.constraintlayout:constraintlayout:2.1.3' } diff --git a/app/src/androidTest/java/com/example/android/classicalmusicquiz/ExampleInstrumentedTest.java b/app/src/androidTest/java/com/example/android/classicalmusicquiz/ExampleInstrumentedTest.java index 1b90a51c..25a97ed4 100644 --- a/app/src/androidTest/java/com/example/android/classicalmusicquiz/ExampleInstrumentedTest.java +++ b/app/src/androidTest/java/com/example/android/classicalmusicquiz/ExampleInstrumentedTest.java @@ -1,8 +1,8 @@ package com.example.android.classicalmusicquiz; import android.content.Context; -import android.support.test.InstrumentationRegistry; -import android.support.test.runner.AndroidJUnit4; +import androidx.test.platform.app.InstrumentationRegistry; +import androidx.test.ext.junit.runners.AndroidJUnit4; import org.junit.Test; import org.junit.runner.RunWith; diff --git a/app/src/main/java/com/example/android/classicalmusicquiz/MainActivity.java b/app/src/main/java/com/example/android/classicalmusicquiz/MainActivity.java index 48060b63..bcbbf6b0 100644 --- a/app/src/main/java/com/example/android/classicalmusicquiz/MainActivity.java +++ b/app/src/main/java/com/example/android/classicalmusicquiz/MainActivity.java @@ -18,7 +18,7 @@ import android.content.Intent; import android.os.Bundle; -import android.support.v7.app.AppCompatActivity; +import androidx.appcompat.app.AppCompatActivity; import android.view.View; import android.widget.TextView; diff --git a/app/src/main/java/com/example/android/classicalmusicquiz/QuizActivity.java b/app/src/main/java/com/example/android/classicalmusicquiz/QuizActivity.java index 1de123cd..e74ea442 100644 --- a/app/src/main/java/com/example/android/classicalmusicquiz/QuizActivity.java +++ b/app/src/main/java/com/example/android/classicalmusicquiz/QuizActivity.java @@ -17,34 +17,36 @@ package com.example.android.classicalmusicquiz; import android.content.Intent; +import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Color; import android.graphics.PorterDuff; +import android.graphics.drawable.BitmapDrawable; import android.net.Uri; import android.os.Bundle; import android.os.Handler; -import android.support.v4.content.ContextCompat; -import android.support.v7.app.AppCompatActivity; +import androidx.core.content.ContextCompat; +import androidx.appcompat.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.Toast; - import com.google.android.exoplayer2.DefaultLoadControl; -import com.google.android.exoplayer2.ExoPlayerFactory; +import com.google.android.exoplayer2.ExoPlayer; import com.google.android.exoplayer2.LoadControl; +import com.google.android.exoplayer2.Player; import com.google.android.exoplayer2.SimpleExoPlayer; import com.google.android.exoplayer2.extractor.DefaultExtractorsFactory; -import com.google.android.exoplayer2.source.ExtractorMediaSource; import com.google.android.exoplayer2.source.MediaSource; +import com.google.android.exoplayer2.source.ProgressiveMediaSource; import com.google.android.exoplayer2.trackselection.DefaultTrackSelector; import com.google.android.exoplayer2.trackselection.TrackSelector; -import com.google.android.exoplayer2.ui.SimpleExoPlayerView; +import com.google.android.exoplayer2.ui.PlayerView; import com.google.android.exoplayer2.upstream.DefaultDataSourceFactory; import com.google.android.exoplayer2.util.Util; import java.util.ArrayList; -public class QuizActivity extends AppCompatActivity implements View.OnClickListener { +public class QuizActivity extends AppCompatActivity implements View.OnClickListener, Player.Listener { private static final int CORRECT_ANSWER_DELAY_MILLIS = 1000; private static final String REMAINING_SONGS_KEY = "remaining_songs"; @@ -55,8 +57,8 @@ public class QuizActivity extends AppCompatActivity implements View.OnClickListe private int mCurrentScore; private int mHighScore; private Button[] mButtons; - private SimpleExoPlayer mExoPlayer; - private SimpleExoPlayerView mPlayerView; + private ExoPlayer mExoPlayer; + private PlayerView mPlayerView; @Override @@ -66,7 +68,7 @@ protected void onCreate(Bundle savedInstanceState) { // Initialize the player view. - mPlayerView = (SimpleExoPlayerView) findViewById(R.id.playerView); + mPlayerView = (PlayerView) findViewById(R.id.playerView); boolean isNewGame = !getIntent().hasExtra(REMAINING_SONGS_KEY); @@ -88,8 +90,7 @@ protected void onCreate(Bundle savedInstanceState) { mAnswerSampleID = QuizUtils.getCorrectAnswerID(mQuestionSampleIDs); // Load the question mark as the background image until the user answers the question. - mPlayerView.setDefaultArtwork(BitmapFactory.decodeResource - (getResources(), R.drawable.question_mark)); + mPlayerView.setDefaultArtwork(new BitmapDrawable(BitmapFactory.decodeResource(getResources(), R.drawable.question_mark))); // If there is only one answer left, end the game. if (mQuestionSampleIDs.size() < 2) { @@ -99,7 +100,7 @@ protected void onCreate(Bundle savedInstanceState) { // Initialize the buttons with the composers names. mButtons = initializeButtons(mQuestionSampleIDs); - + Sample answerSample = Sample.getSampleByID(this, mAnswerSampleID); if (answerSample == null) { Toast.makeText(this, getString(R.string.sample_not_found_error), @@ -143,12 +144,23 @@ private void initializePlayer(Uri mediaUri) { // Create an instance of the ExoPlayer. TrackSelector trackSelector = new DefaultTrackSelector(); LoadControl loadControl = new DefaultLoadControl(); - mExoPlayer = ExoPlayerFactory.newSimpleInstance(this, trackSelector, loadControl); + + mExoPlayer = new ExoPlayer.Builder(this) + .setTrackSelector(trackSelector) + .setLoadControl(loadControl).build(); mPlayerView.setPlayer(mExoPlayer); + + // Set the ExoPlayer.EventListener to this activity. + mExoPlayer.addListener(this); + // Prepare the MediaSource. String userAgent = Util.getUserAgent(this, "ClassicalMusicQuiz"); - MediaSource mediaSource = new ExtractorMediaSource(mediaUri, new DefaultDataSourceFactory( - this, userAgent), new DefaultExtractorsFactory(), null, null); + + DefaultDataSourceFactory defaultDataSourceFactory = new DefaultDataSourceFactory(this, userAgent); + DefaultExtractorsFactory defaultExtractorsFactory = new DefaultExtractorsFactory(); + MediaSource mediaSource = new ProgressiveMediaSource.Factory(defaultDataSourceFactory, + defaultExtractorsFactory).createMediaSource(mediaUri); + mExoPlayer.prepare(mediaSource); mExoPlayer.setPlayWhenReady(true); } @@ -224,7 +236,8 @@ public void run() { * show the correct answer. */ private void showCorrectAnswer() { - mPlayerView.setDefaultArtwork(Sample.getComposerArtBySampleID(this, mAnswerSampleID)); + Bitmap bitmap=Sample.getComposerArtBySampleID(this, mAnswerSampleID); + mPlayerView.setDefaultArtwork(new BitmapDrawable(bitmap)); for (int i = 0; i < mQuestionSampleIDs.size(); i++) { int buttonSampleID = mQuestionSampleIDs.get(i); diff --git a/app/src/main/java/com/example/android/classicalmusicquiz/Sample.java b/app/src/main/java/com/example/android/classicalmusicquiz/Sample.java index 610a89f4..35d73446 100644 --- a/app/src/main/java/com/example/android/classicalmusicquiz/Sample.java +++ b/app/src/main/java/com/example/android/classicalmusicquiz/Sample.java @@ -30,6 +30,7 @@ import com.google.android.exoplayer2.upstream.DefaultDataSource; import com.google.android.exoplayer2.util.Util; +import java.io.Closeable; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; @@ -182,7 +183,7 @@ private static JsonReader readJSONFile(Context context) throws IOException { } String userAgent = Util.getUserAgent(context, "ClassicalMusicQuiz"); - DataSource dataSource = new DefaultDataSource(context, null, userAgent, false); + DataSource dataSource = new DefaultDataSource(context, userAgent,1000,1000, false); DataSpec dataSpec = new DataSpec(Uri.parse(uri)); InputStream inputStream = new DataSourceInputStream(dataSource, dataSpec); @@ -190,7 +191,7 @@ private static JsonReader readJSONFile(Context context) throws IOException { try { reader = new JsonReader(new InputStreamReader(inputStream, "UTF-8")); } finally { - Util.closeQuietly(dataSource); + Util.closeQuietly((Closeable) dataSource); } return reader; diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index ce372fcb..da130a9b 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -11,7 +11,7 @@ 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.--> - - + diff --git a/app/src/main/res/layout/activity_quiz.xml b/app/src/main/res/layout/activity_quiz.xml index 29c580ce..e246be50 100644 --- a/app/src/main/res/layout/activity_quiz.xml +++ b/app/src/main/res/layout/activity_quiz.xml @@ -12,7 +12,7 @@ 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.--> - - - + app:layout_constraintGuide_begin="366dp" />