私は現在、研究のためのプロジェクトに取り組んでいます。このプロジェクトでは、小さなAndroidゲームを作成する必要があります。すべてがうまくいけば、私のゲームはゲームボーイのための古いポケモンゲームのように見えるでしょう。
ゲームは、いくつかのアクティビティ(スプラッシュ画面、メニュー、ゲームビュー、戦闘ビューなど)を使用して構築されます。現在、ほとんどのことが機能しています。しかし、私を悩ませていることと、私の周りの人々が明確な答えを出せないことが1つあります。
ゲームには、MusicPlayer.javaというクラスがあります。このクラスは、ほとんどのアクティビティでバックグラウンドミュージックを再生するために使用されます。今、私はアクティビティのoncreateでこのクラスを初期化し、res/rawフォルダーから.mp3ファイルを再生するように設定します。別のアクティビティを開始するときは、MusicPlayerから.close()を呼び出します。
public class MusicPlayer {
private MediaPlayer player;
public void Play(int songid, Context cont)
{
player = MediaPlayer.create(cont, songid);
try {
player.start();
}
catch (Exception e)
{
Log.d("MusicPlayer","Something wend wrong while starting the song!");
Log.d("ERROR",e.toString());
}
}
public void close()
{
if(player != null)
{
player.stop();
player.release();
player = null;
}
}
このクラスを何度も作成するのは少し不器用で、すべてのアクティビティで新しい曲を始める必要があります。また、新しいアクティビティを開始すると、古いアクティビティが実行され続けることにも気づきました。.closeを呼び出さない場合、音楽は次のウィンドウで再生され続けます。このオブジェクトに再度アクセスする方法はありますか?たとえば、曲を変更/停止するメソッドを呼び出すには?私はすでにこれに対していくつかのグーグルの試みをしましたが、アクティビティでオブジェクトを動かすことができません。.putExtras()に収まらず、Parcelableを作成できませんでした。
まさにこれは今ではかなりの壁のようなテキストであり、申し訳ありません...しかし、私のプロジェクトに対するこの制限は本当に私を悩ませ、Android / Javaプログラミングの知識が非常に限られています(私は.netに慣れています、 java / androidで1か月間しか動作しない)改善されるので、誰かが何かを知っているなら、それを調べる必要があります。