Hallo!
Ich übergebe in einer Activit über einen Intent ein Objekt an eine Andere. Jedoch ist am ende das in diesem Objekt verwendete MediaPlaer objekt null waru?
Schritt 1
Dann in der neuen Activit:
jedoch ist der Mediaplayer immernoch null
Hier die Player Klasse
Danke schonmal für eure Hilfe!
(und ein frohes neues Jahr 2019 an alle
)
Ich übergebe in einer Activit über einen Intent ein Objekt an eine Andere. Jedoch ist am ende das in diesem Objekt verwendete MediaPlaer objekt null waru?
Schritt 1
Java:
if(player==null)
player =new Player(MainActivity.this, books.get(position));
if(!player.getMediaPlayer().isPlaying())
player.play();
Intent intent1 =new Intent(MainActivity.this, PlayerActivity.class);
intent.putExtra("player", player);
startActivity(intent);
Dann in der neuen Activit:
Java:
player = getIntent().getParcelableExtra("player");
jedoch ist der Mediaplayer immernoch null
Java:
if(player.getMediaPlayer()==null)
Toast.makeText(this, "Mediaplayer is null", Toast.LENGTH_SHORT).show();
Hier die Player Klasse
Java:
package com.ludevstudio.mp3audiobookplayer;
import android.content.Context;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Parcel;
import android.os.Parcelable;
import android.support.v4.content.ContextCompat;
import android.util.Log;
import com.ludevstudio.mp3audiobookplayer.data.Book;
import com.ludevstudio.mp3audiobookplayer.data.Library;
import java.io.File;
import java.io.IOException;
public class Player implements Parcelable {
Book book;
File[] chapters;
Library lib;
MediaPlayer mPlayer;
Context context;
public Player(Context context, Book book) {
this.book =book;
this.context = context;
lib =new Library();
chapters = lib.getChaptersOfBook(new File(book.getPath()));
mPlayer =new MediaPlayer();
try {
mPlayer.setDataSource(chapters[book.getCurrentChapter()-1].getAbsolutePath());
mPlayer.prepare();
} catch (IOException e) {
e.printStackTrace();
}
mPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
nextChapter();
}
});
}
protected Player(Parcel in) {
book = in.readParcelable(Book.class.getClassLoader());
}
public static final Creator<Player> CREATOR = new Creator<Player>() {
@Override
public Player createFromParcel(Parcel in) {
return new Player(in);
}
@Override
public Player[] newArray(int size) {
return new Player[size];
}
};
public void play() {
mPlayer.seekTo((int)book.getCurrentChapterprogress());
mPlayer.start();
}
public void nextChapter() {
if(hasNextChapter()) {
try {
book.setCurrentChapter(book.getCurrentChapter()+1);
mPlayer.reset();
mPlayer.setDataSource(context, Uri.fromFile(chapters[book.getCurrentChapter()-1]));
mPlayer.prepare();
mPlayer.start();
} catch (IOException e) {
e.printStackTrace();
}
} else {
try {
mPlayer.reset();
book.setCurrentChapter(1);
mPlayer.setDataSource(context, Uri.fromFile(chapters[book.getCurrentChapter()-1]));
mPlayer.prepare();
mPlayer.start();
} catch (IOException e) {
e.printStackTrace();
}
}
}
private boolean hasNextChapter() {
if (book.getCurrentChapter()<chapters.length) {
return true;
}
return false;
}
public MediaPlayer getMediaPlayer() {
return mPlayer;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeParcelable(book, flags);
}
}
Danke schonmal für eure Hilfe!
(und ein frohes neues Jahr 2019 an alle