2012-04-24 21 views
-1

Androidアプリケーションで背景音を再生しようとしています。私はSoundmanagerとして別のクラスを使用しています。私の最初の活動では、私は音を開始し、私はそれが2つの他の活動を通して演奏したい。そして、私の3番目のクラスでは、私はそれを止めて、別のサウンドが再生される必要があります。 しかし、私はその音を止めるのに問題があり、理由を知らない。私はそれが私のSoundmanagerクラスのContextクラスを使用していることと関係があると思います。AndroidでMediaPlayerを使用して他のアクティビティで再生音を停止する

音を止める方法を知っている人はいますか?私が関係する唯一のものだから私は私のSoundmanagerクラスをリンクします。私はかなりプログラミングに新しいので、優しいしてください。

私はあなたがあなたのSoundmanagerオブジェクトを共有しているのか分からないとしてだけで推測Soundmanagerクラス http://codepad.org/KJi6DZN6

答えて

2

SoundManagerのすべてのメソッドとクラス変数を静的にします(そして、メソッドが必要なメソッドについてはContextを渡します)。

SoundManagerの複数のインスタンスを作成するあなたのアクティビティには、SoundManagerの新しいインスタンスを作成している可能性があります。静的にアクセス可能にすることは、すべてのアクティビティが同じ変数を変更していることを意味します。

アクティビティContextを持っているとは思わないので、context.getApplicationContext()でアプリケーションのコンテキストを渡してみてください。これにより、MediaPlayerオブジェクトを特定のアクティビティに結び付けることが回避されます。

+0

静的にはうまくいった!ありがとうございました! context.getApplicationContext()は動作しませんでしたが、もっと詳しく読むようになります。 – andreasolsson

+0

よろしくお願いします。これは、アクティビティの「コンテキスト」でのみ機能する可能性があります。しかし、試みる価値があった。 –

0

たぶん、あなたがすることになっているすべての活動にごSoundmanagerクラスの新しいインスタンスを作成しますこれを使って。 (すなわち、それぞれにnew Soundmanager(context)があり、少なくとも1つは停止アクティビティにあります)。

+0

はい、すべてのアクティビティでSoundManagerを使用していますが、私はSoundManagerを持っています。sm =新しいSoundManager(this); 私の最初のアクティビティでは、メソッドsm.loopSound()を呼び出しています。 と私はそれをsm.stopSound()とsm.release()を使用して私の3番目の活動で停止したい。それは動作しません。 – andreasolsson

関連する問題