2016-11-29 9 views
0

私は、歌詞を画面に表示している曲を再生するアプリを持っています。例によるAndroidサービスの理解

2つの状況:

  1. 曲はローカルmp3ファイルからロードされます。
  2. インターネットを経由して
  3. 曲は離れた場所からロードされ

私の理解では、Androidのサービスは歌がインターネット経由で遠隔地からストリーミングされたときに救助に来るということです。 i/oのオーバーヘッドが原因でAndroidサービスがここで役立ちます。最初のケースでは、曲が地元の場所から演奏される場合、サービスはおそらく過剰なものです。私は単にアクティビティでそれをロードする音楽を再生し、MediaPlayer APIを使ってそれを再生することができます。

この理解は正しいですか?私は何か不足していますか?

更新日:曲のサイズが10MBを超えています。だから、あなたが電話でゆっくりとしたインターネット経由でそれをストリーミングするときには、より良いユーザーエクスペリエンスのために調整されたバッファリングやものがあるかもしれません。

ありがとうございます。

+1

「この理解は正しいですか?」 - あんまり。 「サービスは恐らく過度のものです」 - 同じ曲では、どちらのシナリオでもほぼ同じ量のI/Oがあります。この場合にサービスを使用するかどうかは、音楽の再生中にユーザーがUIを離れた場合に起こりたいことに基づいて大部分が決定されます。 – CommonsWare

+0

@CommonsWare私は、ユースケースとしてファイルサイズとインターネット接続速度のコンテキストで質問を更新しました。私は、ローカルで再生されるファイルが、インターネット経由でストリーミングされる必要があるファイルよりも高速であると見なすことができます。 I/Oは実際には同じではありません。インターネットを介して何かをストリーミングするときに考慮するいくつかの要素がありますか? – karthiks

+0

「I/Oは実際には同じではありません」 - 曲がローカルに保存されているかストリームに保存されているかにかかわらず、3分の曲には3分かかります。ソングがローカルに保存されている場合は、帯域幅の使用量が大幅に少なくなります。私は曲がローカルに格納されている場合は、CPUの使用量が少し少なくなると思います。曲がローカルに保存されている場合は、バッテリーの使用量が少なくなります。サービスが関連しているかどうかは重要ではありません。 – CommonsWare

答えて

3

用途が異なる場合はServicesが異なります。 Media Playerの場合は、バックグラウンドまたはフォアグラウンドで再生を継続して再生するかどうかによって異なります。

したがって、どちらの場合もMedia Player Serviceに適用できます。しかしAndroid Developer Guide Media Player Serviceは、アプリケーションが画面上-それは、ユーザーがある一方で、それは遊んで継続したい、あるいない場合でも、あなたのメディアがバックグラウンドで再生する場合のMediaPlayer
とサービスを使用して私の答え

outshines他のアプリケーションとやりとりする場合は、サービスを開始し、そこからMediaPlayerインスタンスを制御する必要があります。ユーザーとシステムは、バックグラウンドサービスを実行しているアプリケーションがシステムの他の部分とどのように対話するかについての期待を持っているため、この設定に注意する必要があります。アプリケーションがそれらの期待を満たさない場合、ユーザーは悪い経験をする可能性があります。このセクションでは、あなたの第二の場合は、ネットワークの詳細については疑問であり、この場合には、あなたが.mp3とパスをダウンロードするIntentServiceを使用することができ、あなたが知っておくべき主な問題について説明し、それらに

にアプローチする方法についてのアドバイスを提供していますそれはMediaPlayerにあります。

+0

私のAndroid OnePlus Oneの携帯電話では、アプリを起動して曲を再生できるようになりました(コードはサービスなしで実装されています)。それから私は独自のバックグラウンドミュージックを演奏するゲームアプリを開きます。興味深いことに、私は以前にゲームの音楽と一緒に演奏した曲と、両方の曲を聞いています。これはどうですか?この事件は私の前提を変えてこの質問をするよう促した。あなたの助けに感謝します。 – karthiks