0

MediaPlayerAndroidでの MP3 ストリームの結び目の問題。私はそれを使ってまだいくつかのアプリを実行しましたが、今はいくつかの理由でコードの原因をリファクタリングしています。

Player のアクティビティで Service の呼び出しがあります。

mp3Service.playSong(getBaseContext(),url);

playSong メソッドは以下で構成されます。

public void playSong(Context c, String url) {
     if (this.currenturl.equals(""))
     {

         this.mplayer = MediaPlayer.create(c, Uri.parse(url));
         this.currenturl=url;
         this.mplayer.start();
     }
     else
        {
        if (!this.currenturl.equals(url))
        {
                this.mplayer.stop();
               //this.mplayer=null; 
                 this.mplayer = MediaPlayer.create(c, Uri.parse(url));
                 this.mplayer.start();
                 this.currenturl=url;

        } else
        {
            if (this.on==false)
            this.mplayer.start();

        };

        };
     this.on=true;
}

メソッドの呼び出しは、クリック リスナーplaySong上にあるときに正常に機能しました。ImageView音楽が鳴り始めました。

ただし、単にプレーヤーのアクティビティから呼び出すとonCreate、アプリが停止します。理由はわかりませんが、ここで使用するコンテキスト パラメータを理解するのは非常に困難です。同様の記事やドキュメントをいくつか読んだことがありますが、多くの霧があります。

ここで最初の Context パラメータに何を使用する必要があるかを判断するにはどうすればよいですか? どこから呼び出すかによって異なります.playSong(Context, Uri)か?はいの場合、どのように?Context は Android の new にとって非常に抽象的であり、クラスのドキュメント自体はそれを明らかにしていません。

私が試した選択肢はたくさんありますが、これを使用する理由と、アプリが停止する理由を判断する方法が必要です。

  1. getApplicationContext()
  2. getBaseContext()
  3. this
  4. PlayerActivity.this

その他。しかし、理解しないとダメです。たぶん、エラーは別の場所にあります。しかし、サービスコールがなければ、すべてが機能していました。

4

1 に答える 1