RuntimeException in Android - BottomNavigationView with Activities

0

I am trying to make music player with bottomNavigationView with activities. When I am pressing RecyclerView (which is Main2Activity) item it goes to Music Player activity (which is MainActivity) and it plays the track. But when I press the Home button (which should go to Main2activity) on the bottom Navigation Bar it crashes and and throws RuntimeException. I cant see any mistake that may cause this RuntimeException. Can you tell me why it's happening ?

ERROR:

E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.musicplayer, PID: 4194
java.lang.RuntimeException: Unable to start activity 
ComponentInfo{com.example.musicplayer/com.example.musicplayer.Main2Activity}: 
java.lang.RuntimeException: setDataSource failed: status = 0x80000000
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3319)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3415)
    at android.app.ActivityThread.access$1100(ActivityThread.java:229)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1821)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:148)
    at android.app.ActivityThread.main(ActivityThread.java:7406)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
    Caused by: java.lang.RuntimeException: setDataSource failed: status = 0x80000000
    at android.media.MediaMetadataRetriever.setDataSource(Native Method)
    at android.media.MediaMetadataRetriever.setDataSource(MediaMetadataRetriever.java:80)
    at com.example.musicplayer.SongModel.<init>(SongModel.java:31)
    at com.example.musicplayer.Main2Activity.readSongs(Main2Activity.java:226)
    at com.example.musicplayer.Main2Activity.onCreate(Main2Activity.java:81)
    at android.app.Activity.performCreate(Activity.java:6904)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1136)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3266)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3415) 
    at android.app.ActivityThread.access$1100(ActivityThread.java:229) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1821) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:148) 
    at android.app.ActivityThread.main(ActivityThread.java:7406) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)

Main2Activity:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main2);

    // Initialize and Assign Variable
    BottomNavigationView bottomNavigationView = findViewById(R.id.bottom_navigation);

    // Set Home Selected
    bottomNavigationView.setSelectedItemId(R.id.home);

    // Perform ItemSelectedListener
    bottomNavigationView.setOnNavigationItemSelectedListener(new 
    BottomNavigationView.OnNavigationItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
            switch (menuItem.getItemId()){
                case R.id.home:
                    return true;
                case R.id.player:
                    startActivity(new Intent(getApplicationContext(), MainActivity.class));
                    overridePendingTransition(0,0);
                    return true;

            }
            return false;
        }
    });

    // Declaring IDs
    RecyclerView recyclerView = findViewById(R.id.recyclerView);

    // Asking || Checking the Storage Permission
    checkStoragePermission();


    // Getting MP3 files from both internal and external Storage /
    ArrayList<SongModel> songModelArrayList = readSongs("/storage/");
    ArrayList<SongModel> songModelArrayListFROM_INTERNAL = 
    readSongs(Environment.getExternalStorageDirectory().getAbsolutePath());
    ArrayList<String> songNames = new ArrayList<>();

    songModelArrayList.addAll(songModelArrayListFROM_INTERNAL);

    for (SongModel song : songModelArrayList){
        songNames.add(song.getTitle());
    }

    recyclerView.setLayoutManager(new LinearLayoutManager(getApplicationContext()));
    SongAdapter songAdapter = new SongAdapter(this, songNames, songModelArrayList, new 
        onSongItemClickListener() {
        @Override
        public void onItemClickListener(int position) {
            passSongToIntent();
            saveData(songModelArrayList, position);
        }
    });
    recyclerView.setAdapter(songAdapter);

}

void passSongToIntent() {

    Intent goToSongActivity = new Intent(getApplicationContext(), MainActivity.class);
    startActivity(goToSongActivity);
}

public ArrayList<SongModel> readSongs(String rootPath) {
    ArrayList<String> songPathList = getPlayList(rootPath);
    ArrayList<SongModel> songList = new ArrayList<>();

    for (String path : songPathList){
        SongModel song = new SongModel(path);
        song.setFAVOURITE_KEY(false);
        songList.add(song);
    }

    return songList;
}

}

MainActivity:

// Variables for SHUFFLE feature
private boolean SHUFFLE = false;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ArrayList<SongModel> songModelArrayList = retrieveDataFromSharedPreferences();
    setContentView(R.layout.activity_main);

    // Initilize and Assign Variable
    bottomNavigationView = findViewById(R.id.bottom_navigation);

    // Set Home Selected
    bottomNavigationView.setSelectedItemId(R.id.player);

    // Perform ItemSelectedListener
    bottomNavigationView.setOnNavigationItemSelectedListener(new 
        BottomNavigationView.OnNavigationItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
            switch (menuItem.getItemId()){
                case R.id.home:
                    startActivity(new Intent(getApplicationContext(), Main2Activity.class));
                    overridePendingTransition(0,0);
                    return true;
                case R.id.player:
                    return true;

            }
            return false;
        }
    });

    initMusicPlayer(position, songModelArrayList);

    play_btn.setOnClickListener(this);

    playNextTrack(songModelArrayList);

    playPrevTrack(songModelArrayList);
}

void initMusicPlayer(int position, ArrayList<SongModel> songList) {
    SongModel song = songList.get(position);
    String path = song.getPath();
    String title = song.getTitle();
    String artist = song.getArtist();
    Bitmap albumArt = song.getAlbumCover();
    albumCover.setImageBitmap(albumArt);


    Snackbar snackbar = Snackbar.make(parent, "", Snackbar.LENGTH_SHORT);
    View snackBarView = snackbar.getView();
    snackBarView.animate();

    setVibrantColorOnViews(albumArt, snackBarView);

    Uri uri = Uri.parse(path);
    if (mediaPlayer != null) {
        mediaPlayer.stop();
        mediaPlayer.release();
    }
    mediaPlayer = MediaPlayer.create(this, uri);


    song_name.setText(title);
    song_artist.setText(artist);


    mediaPlayer_setOnPreparedLisntener();

    seekBar_setOnSeekBarChangeListener();

}

Entire Project is on Github : https://github.com/IonaBartishvili/Music_Player_with_Java_for_Android

java
android
android-studio
bottomnavigationview
runtimeexception
asked on Stack Overflow Mar 13, 2020 by Iona Bartishvili • edited Mar 13, 2020 by matthias_h

0 Answers

Nobody has answered this question yet.


User contributions licensed under CC BY-SA 3.0