0

私は現在、研究のためのプロジェクトに取り組んでいます。このプロジェクトでは、小さな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か月間しか動作しない)改善されるので、誰かが何かを知っているなら、それを調べる必要があります。

4

1 に答える 1

1

を使用しIntent Serviceて音楽を再生したり、インテントを使用してアクティビティから通信したりできます(たとえば、曲を変更したり、アプリがフォアグラウンドにないときに音楽を停止したりするなど)。

于 2013-03-06T22:53:36.767 に答える