2013-01-04 14 views
11

Android cihazında yeni. Uygulamayı kapatsam bile şarkı çalmaya devam edebilmem için Media Player için hizmet oluşturuyorum. Media Player için etkinlik oluşturdum ve oynatma, duraklatma, sonraki, önceki, arama çubuğu gibi tüm işlevlere sahip ve ayrıca tamamlanmayanlar listesi içeriyor. Bütün işler mükemmel. Ama şimdi hepsinin servis tarafından yönetilmesini istiyorum.MediaPlayer Hizmet Android

Ben düzenlendi gelmiş MyService Sınıfı:

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; 
    } 

Ama ben currentsongIndex alıyorum hangi songlist için ArrayList oluşturduk ve içinden ben gelecek, önceki ve tüm gibi tüm işlevselliği koruyarak ediyorum benim oyuncu aktivitesinde

. Şimdi hizmette aktivitemde de gerekli olan şarkı listesini nasıl alabilirim? Hizmet veya etkinlikte MediaPlayer nesnesini ortalama nerede oluşturmalıyım? MediaPlayer için http://www.androidhive.info/2012/03/android-building-audio-player-tutorial/'u yeniden uyguladım. Medya oynatıcı kodum için bu siteye başvurabilirsiniz. Teşekkürler. Şüphem açık olsun. Kafam çok karıştı. Cevap ver bana ..

+0

Serviste oluşturun. Şarkı listesine ihtiyacı olan sınıf budur. –

+0

Serviste şarkı listesi oluşturmam gerektiğini ifade eder. Ama aktivitedeki bir sonraki düğmeye tıkladığımda servisim nasıl işleyecek? – zanky

+0

Etkinlik kodunu da gönderebilir misiniz? Ayrıca, ihtiyacınızı doğru yaptığından emin değilim. Ayrıca, şarkılar için ayrı bir sınıf oluşturabilir ve daha sonra istediğiniz yerde bir nesneyi kullanarak arayabilirsiniz. –

cevap

7

Doğru yoldasınız. SDK Örneklerinden uyarladım; Ben böyle yaparım ve harika çalışıyor. Eklemek gerekir Manifest'inizde olarak

startService(new Intent(MusicService.ACTION_PLAY)); 

:

onListItemClick 

arayıp müzik hizmeti başlayan bir niyeti başlatmak (Servisi'nden etkinlik DEĞİL içinde) ArrayList itibaren

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

Ve tabi ki Müzik Hizmetinizde, şu adresi almanız gerekir:

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

Atlamak, geri sarmak, durdurmak vb. Için Intents eklediğinizden emin olun. Bu yardımcı olursa bana bildirin.

+0

evet .. sadece bunu istiyorum. ama oynadığım zaman ve aynı düğmeyi beklediğimde düğme kaynak ayarını değiştirmek istediğimden, hizmetimden etkinlik düğmesine erişebilirim. ne fikir? – zanky

+0

Muhtemelen Aktivitenizden ele alınmalıdır, ancak Düğmeyi 'public static Button myButton' gibi bir hale getirebilirsiniz, sonra görüntüyü herhangi bir yerden değiştirebilirsiniz, ancak bunu bu şekilde yapmanızı önermem. "onClick" etkinliği içinde ve Müzik Hizmeti'nin müziğin çalınmasını sağlamasına izin verin. Yukarıdaki cevabımdan memnunsanız lütfen kabul edildi olarak işaretleyin. –

1

Uygulamanın arka planda çalışmasını sağlamak, 'Servis'in kendisi tarafından ele alınmalıdır.
Bu örneği takip etmeyi deneyin http://www.vogella.com/articles/AndroidServices/article.html
Arka planda çalışmak üzere bir hizmet tasarlanmıştır.

+0

ohk thanx sorunum için harcanan zaman için .. – zanky

+1

emin. Öğreticilere danışırken bile tek bir kod parçasına yapışmamaya çalışın. Tek yapmanız gereken, aktivitedeki temel düzeni oluşturmaktır (düğmeler ve bazı işlevler, vb.). Servisi, bazı düğmelerin 'onclick' bölümünde başlatabilir ve servisin arka planda çalışmasına izin verebilirsiniz. mediaplayer/şarkılar servis sınıfına girer. –

0

Tam olarak aynı şeyden geçtim! Gerçekten harika bir mp3 player uygulaması bile geliştirmenin uzun bir yoludur. Cevap uzun.

Bana gerçekten yardımcı olan birkaç kaynak var. o bağlı hizmet ve ön planda çalışan hakkında bu uzun makalenin altındaki söylediklerini

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

dikkat: Android'inizdeki geliştirici belgelerine bu çok şeyle ilgili bir makale vardır. Ayrıca, en baş ağrılarına neden olan oyuncu durumunu yönetmek de budur.

Ayrıca, iş parçacığına bir göz atmak isteyeceksiniz, çünkü bu yeni hizmetin ana Kullanıcı Arayüzü'nde hala her şeyi yürütmesi, çılgınca ama doğru gibi geliyor. İplik havuzlarını yönetmek için ExecutorService'ye bir göz atın. Keşke size daha kolay olduğunu söyleyebilirdim.

Maalesef web üzerinden ancak ücretli bir siteden geliyor android hizmetleri ile tüm benim formel eğitimin en:

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

Düşündüğüm bütün programcılar için iyi bir kaynaktır ancak birçok konuda büyük bölümü vardır Diğer öğretici sitelerde yalnızca kısaca ele alınan android programlamanın özellikleri. Vogella'daki kaynaklar da yukarıda belirtildiği gibi iyidir.