2013-01-04 45 views
11

मैं एंड्रॉइड के लिए नया हूं। मैं मीडिया प्लेयर के लिए सेवा बना रहा हूं ताकि अगर मैं एप्लिकेशन बंद कर दूं तो भी यह गाना बजाना जारी रख सकता है। मैंने मीडिया प्लेयर के लिए गतिविधि बनाई है और इसमें सभी कार्यक्षमताएं हैं जैसे प्ले, पॉज़, अगली, पिछली, तलाशबार और इसमें अपूर्ण सूची भी शामिल है। सभी उत्कृष्ट काम करता है। लेकिन अब मैं चाहता हूं कि सभी को सेवा द्वारा प्रबंधित किया जाना चाहिए।मीडियाप्लेयर सेवा एंड्रॉइड

मैं बनाया गया है 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; 
    } 

लेकिन मेरे खिलाड़ी गतिविधि में मैं songlist जहाँ से मैं currentsongIndex ले रहा हूँ के लिए ArrayList बनाया है और इसके माध्यम से मैं अगले, पिछले और सभी की तरह सभी कार्यक्षमता को बनाए रखने कर रहा हूँ। अब सेवा में मैं गीतसूची कैसे प्राप्त करूं जो मेरी गतिविधि में भी आवश्यक है ?? सेवा या गतिविधि में मुझे मीडियाप्लेयर ऑब्जेक्ट का अर्थ कहां बनाना चाहिए ??

मीडियाप्लेयर के लिए मैंने http://www.androidhive.info/2012/03/android-building-audio-player-tutorial/ को अस्वीकार कर दिया है। मेरे मीडिया प्लेयर कोड के लिए आप इस साइट को देख सकते हैं। धन्यवाद। मेरी संदेह स्पष्ट करें। मैं बहुत उलझा हुआ हूं। मुझे जल्द ही उत्तर दें ..

+0

इसे सेवा में बनाएं। यही वह वर्ग है जिसे गीत सूची की आवश्यकता होती है। –

+0

मतलब मुझे सेवा में गीतसूची बनाने की आवश्यकता है। लेकिन जब मैं गतिविधि में अगले बटन पर क्लिक करता हूं कि मेरी सेवा कैसे संभाली जा रही है? – zanky

+0

क्या आप भी गतिविधि कोड पोस्ट कर सकते हैं? इसके अलावा, मुझे यकीन नहीं है कि मुझे आपकी आवश्यकता सही हो रही है। आप गाने के लिए एक अलग वर्ग भी बना सकते हैं और फिर जहां भी आवश्यक हो वहां किसी ऑब्जेक्ट का उपयोग करके इसे कॉल कर सकते हैं। –

उत्तर

7

आप सही रास्ते पर हैं। मैंने एसडीके नमूने से अनुकूलित किया है; इस तरह मैं यह करता हूं और यह बहुत अच्छा काम करता है। अपने ArrayList से फोन

onListItemClick 

और एक आशय है कि संगीत सेवा शुरू होता है शुरू (अपने सेवा से नहीं गतिविधि में):

startService(new Intent(MusicService.ACTION_PLAY)); 

अपने प्रकट में आप जोड़ने की आवश्यकता होगी:

<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

शायद इसे आपकी गतिविधि के भीतर से संभाला जाना चाहिए, लेकिन आप 'सार्वजनिक स्थैतिक बटन myButton' जैसे बटन को भी प्रारंभ कर सकते हैं, फिर आप छवि को कहीं से भी बदल सकते हैं, लेकिन मैं इसे इस तरह से करने की अनुशंसा नहीं करता ... बल्कि 'ऑनक्लिक' ईवेंट के भीतर और संगीत सेवा को संगीत के प्लेबैक को संभालने दें। यदि आप ऊपर दिए गए मेरे उत्तर से खुश हैं तो कृपया स्वीकृत के रूप में चिह्नित करें। –

1

पृष्ठभूमि में चलाने के लिए ऐप प्राप्त करना 'सेवा' का ख्याल रखना चाहिए।
इस उदाहरण का पालन करने का प्रयास करें http://www.vogella.com/articles/AndroidServices/article.html
एक सेवा पृष्ठभूमि में काम करने के लिए डिज़ाइन की गई है।

+0

ओएचके थेंक्स मेरी समस्या के लिए समय बिताने के लिए .. – zanky

+1

सुनिश्चित करें। परामर्श ट्यूटोरियल के दौरान भी कोड के एक टुकड़े से चिपकने की कोशिश न करें। आपको केवल गतिविधि में मूल लेआउट बनाना है (बटन और कुछ फ़ंक्शंस इत्यादि)। आप कुछ बटन के 'ऑनक्लिक' में सेवा शुरू कर सकते हैं और सेवा को पृष्ठभूमि में चला सकते हैं। mediaplayer/गाने सेवा वर्ग में जाते हैं। –

0

मैं बिल्कुल वही चीज़ चला गया! यह वास्तव में एक महान एमपी 3 प्लेयर ऐप भी विकसित करने के लिए एक लंबा सफर है। जवाब लंबा है।

यहां कुछ संसाधन हैं जो वास्तव में मेरी मदद करते हैं। क्या यह बाध्य सेवाओं और अग्रभूमि में चलाने के बारे में इस लंबी लेख के नीचे का कहना है के लिए

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

वेतन ध्यान: एंड्रॉयड उनके डेवलपर डॉक्स में यह बहुत ही बात पर एक लेख है।

इसके अतिरिक्त, खिलाड़ी राज्य के प्रबंधन से मुझे सबसे ज्यादा सिरदर्द होता है।

आप थ्रेडिंग पर भी एक नज़र डालना चाहते हैं क्योंकि यह कि नई सेवा अभी भी मुख्य यूआई थ्रेड पर सब कुछ निष्पादित करेगी, पागल लेकिन सच लगता है। थ्रेड पूल के प्रबंधन के लिए एक्जिक्यूटर्स सर्विस पर एक नज़र डालें। काश मैं आपको बता सकता हूं कि यह आसान था।

दुर्भाग्य से वेब पर लेकिन एंड्रॉयड सेवाओं के साथ एक भुगतान साइट से आता है सब से मेरी औपचारिक प्रशिक्षण के सबसे:

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

यह सब प्रोग्रामर मुझे लगता है कि के लिए एक अच्छा स्रोत है, लेकिन कई के बारे में महान खंड हैं एंड्रॉइड प्रोग्रामिंग के पहलुओं को केवल अन्य ट्यूटोरियल साइटों पर संक्षेप में कवर किया गया है।

वोगेला के संसाधन ऊपर बताए गए अच्छे हैं।