2013-01-04 15 views
11

私はAndroidが初めてです。私はMedia Playerのサービスを作成していますので、アプリケーションを終了しても引き続き曲を再生できます。私はMedia Playerのための活動を作成し、それは再生、一時停止、次、前、seekbarのようなすべての機能を持っていて、またoncompletionlistenerを含んでいます。すべて優れた作品。しかし今、私はすべてがサービスによって管理されるべきだと思っています。MediaPlayerサービスAndroid

私が作成したMyServiceでクラス:

public class MyService extends Service { 

    public static MediaPlayer mp; 

    @Override 
    public IBinder onBind(Intent intent) { 
     // TODO Auto-generated method stub 
     return null; 
    } 

    @Override 
    public void onCreate() { 
     mp = new MediaPlayer();  
    } 

    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 
     return START_STICKY; 
    } 

しかし、私はcurrentsongIndexを取っていたからSonglist用のArrayListを作成し、それを介して、私は次の、前の、すべてのようなすべての機能を維持しています私のプレイヤーの活動で

。今サービスの中で、私の活動にも必要な曲リストを入手するにはどうすればいいですか? MediaPlayerオブジェクトは、サービスやアクティビティでどこに作成する必要がありますか?

for MediaPlayer私はhttp://www.androidhive.info/2012/03/android-building-audio-player-tutorial/を参考にしました。私のメディアプレイヤーコードについては、このサイトを参照することができます。ありがとう。 私の疑いを払拭してください。私はとても混乱しています。すぐに返信してください。

+0

サービスで作成してください。それが曲リストを必要とするクラスです。 –

+0

私はサービス中の曲リストを作成する必要があります。しかし、アクティビティの次のボタンをクリックすると、サービスがどのように処理されますか? – zanky

+0

あなたもアクティビティコードを投稿できますか?プラス、私はあなたの要件を正しく得ているとは確信していません。ソング用に別のクラスを作成して、必要に応じてオブジェクトを使用して呼び出すこともできます。 –

答えて

7

あなたは正しい方向にあります。私はSDKのサンプルから変更しました。これは私がそれを行う方法であり、それは素晴らしい作品です。あなたが追加する必要がありますあなたのマニフェストで

startService(new Intent(MusicService.ACTION_PLAY)); 

onListItemClick 

を呼び出し、音楽サービスを開始意図を開始する(サービスからあなたの活動ではないで)あなたのArrayListから

<intent-filter> 
      <action android:name="com.blah.blah.action.PLAY" /> 
      <xxx xxx> 
</intent-filter> 

もちろん、あなたの音楽サービスでは、意図を受け取る必要があります:

public int onStartCommand(Intent intent, int flags, int startId) { 
    String action = intent.getAction(); 
    if (action.equals(ACTION_PLAY)) 
     processPlayRequest(); 
    } 

スキップ、巻き戻し、停止などのインテントを必ず追加してください。 これが役立つかどうか教えてください。

+0

はい。私はこれだけが欲しいです。しかし、私は私が再生すると、私は同じボタンで一時停止ボタンのソースイメージを変更したい私のサービスから私は活動のボタンにアクセスすることができます。ネクタイ? – zanky

+0

これはおそらくアクティビティ内から処理する必要がありますが、 'public static Button myButton;のようにButtonを初期化して、どこからでもイメージを変更することができます。 'onClick'イベントの中で、音楽サービスに音楽の再生をさせてください。上記の私の答えに満足している場合は、受け入れたものとしてマークしてください。 –

1

アプリをバックグラウンドで実行させるには、「サービス」そのものが必要です。
http://www.vogella.com/articles/AndroidServices/article.html
サービスはバックグラウンドで動作するように設計されています。

+0

私の問題のために時間を費やすためにオーク。 – zanky

+1

。チュートリアルを参照している間でも、1つのコードに固執しないようにしてください。アクティビティの基本レイアウト(ボタンやいくつかの関数など)を作成するだけです。いくつかのボタンの 'onclick'でサービスを開始し、サービスをバックグラウンドで実行させることができます。メディアクラス/曲はサービスクラスに入れられます。 –

0

私はまったく同じことを行った!本当に偉大なmp3プレーヤーアプリを開発するのは長い道のりです。答えは長いです。

ここには本当に私を助けたいくつかのリソースがあります。それがバインドされたサービスとフォアグラウンドで実行については、この長い記事の下部に言うこと

http://developer.android.com/guide/components/services.html

ご注意:Androidのは、彼らの開発者向けドキュメントで、この非常に事についての記事があります。

さらに、プレーヤの状態を管理することが、最も頭痛を引き起こした原因です。

また、新しいサービスがメインUIスレッドのすべてを実行するため、スレッド化を見てみたいと思います。スレッドプールを管理するExecutorServiceを見てください。私はそれがより簡単だったと伝えたいと思う。

残念ながら、ウェブ上ではなく有料のサイトから来ているAndroidのサービスとすべてからの私の正式な訓練の最も:

http://www.pluralsight.com/training/Courses/TableOfContents/android-services

それは私が考えるすべてのプログラマのための優れたリソースであるが、多くの素晴らしいセクションがあります他のチュートリアルサイトで簡単に説明されているアンドロイドプログラミングの側面。

Vogellaのリソースも上記のとおりです。

関連する問題