2014-12-20 10 views
5

मैं अब तक लगभग 20 घंटे बिताता हूं और मेरी समस्या अभी भी है। मैं एक एंड्रॉइड एप्लिकेशन बना रहा हूं जिसमें कई गतिविधियां हैं (मेनमेनू, aboutUs, सेटिंग)। मैंने नीचे दिए गए लिंक का सबसे अच्छा उत्तर दिया और वह ओ.के. था। Music played using asyncTask isn't stopping by using cancelएंड्रॉइड ऐप की सभी गतिविधियों में पृष्ठभूमि संगीत चलाएं

जब मैं अपना ऐप चलाता हूं, (मेरा कोड मुख्य गतिविधि में है), संगीत शुरू होता है और अन्य क्रियाकलापों पर नेविगेट करते समय यह नहीं रुकता है। यह अच्छा है । लेकिन मैंने अपनी सेटिंग_एक्टिविटी गतिविधि में टॉगलबटन डाला है, मुझे उम्मीद है कि यह बटन शुरू होता है और इस संगीत को रोक देता है। अब मेरा सवाल यह है कि मैं सेटिंग_एक्टिविटी से संगीत को फिर से कैसे रोक सकता/सकती हूं?

किसी अन्य समाधान में: मैं एक क्लास MusicManager बनाता हूं और मैं इसे स्टार्ट और स्टॉप कहता हूं। लेकिन यह कई समस्याएं भी था:

  1. संगीत mainMenu_activity में शुरू किया था, लेकिन केवल बारे में 15 सेकंड के लिए खेलते हैं और फिर बंद कर दिया।
  2. मैं इस बार मैं इस लाइन कोड के रूप में mainMenua_ctivity में संगीत चलाने activities.At दूसरे से संगीत को रोक नहीं सकता है:

    MusicManager mm = new MusicManager(this, R.raw.background_sound); 
    mm.play(); 
    

मैं कैसे रोक सकता है कि खेल रहे हैं? 3. जब मैं अन्य गतिविधियों पर नेविगेट करता हूं तो संगीत बंद हो जाता है।

public class MusicManager implements OnPreparedListener { 

    static MediaPlayer mPlayer; 
    Context context; 
    private int mySoundId; 

    public MusicManager(Context ctx, int musicID) { 
     context = ctx; 
     mySoundId = musicID; 
     mPlayer = MediaPlayer.create(context, mySoundId); 
     mPlayer.setOnPreparedListener(this); 
    } 

    public void play() { 
     mPlayer = MediaPlayer.create(context, mySoundId); 

    } 

    public void stop() { 
     mPlayer.stop(); 
     mPlayer.release(); 
    } 

    @Override 
    public void onPrepared(MediaPlayer player) { 
     player.start(); 
     mPlayer.setLooping(true); 
     mPlayer.setVolume(25, 25); 

    } 

} 

अंत में मैं/रोक के बिना सभी गतिविधियों में एक पृष्ठभूमि संगीत खेलने के लिए संगीत शुरू करना चाहते हैं। मैं इसे कैसे कर सकता हूं?

उत्तर

7

आप संगीत प्लेयर को सेवा में डाल सकते हैं। यह इसे क्रियाकलापों से स्वतंत्र कर देगा और आप अभी भी इरादों के माध्यम से प्लेबैक को नियंत्रित करने में सक्षम होंगे।

यहाँ इस बारे में कुछ कोड उदाहरण हैं: https://stackoverflow.com/a/8209975/2804473 कोड नीचे StackOverflow पर यहाँ Synxmax ने लिखा है, और ऊपर के लिंक में शामिल:

public class BackgroundSoundService extends Service { 
    private static final String TAG = null; 
    MediaPlayer player; 
    public IBinder onBind(Intent arg0) { 

     return null; 
    } 
    @Override 
    public void onCreate() { 
     super.onCreate(); 
     player = MediaPlayer.create(this, R.raw.idil); 
     player.setLooping(true); // Set looping 
     player.setVolume(100,100); 

    } 
    public int onStartCommand(Intent intent, int flags, int startId) { 
     player.start(); 
     return 1; 
    } 

    public void onStart(Intent intent, int startId) { 
     // TO DO 
    } 
    public IBinder onUnBind(Intent arg0) { 
     // TO DO Auto-generated method 
     return null; 
    } 

    public void onStop() { 

    } 
    public void onPause() { 

    } 
    @Override 
    public void onDestroy() { 
     player.stop(); 
     player.release(); 
    } 

    @Override 
    public void onLowMemory() { 

    } 
} 
+1

मैं एक श्रेणी से ऊपर और main_activity कक्षा में में के रूप में ही बनाए गए ऑनक्रेट() मैंने इरादा svc = नया इरादा लिखा है (यह, BackgroundSoundService.class); startService (svc); , लेकिन मेरा संगीत नहीं खेला। – saeid

+0

@ saeid112 यहां एक नज़र डालें http://www.codeproject.com/Articles/258176/ जोड़ने- बैकग्राउंड- संगीत-to-Android-App –

+0

वास्तव में इसमें फंस गया! अविश्वसनीय है कि एक सेवा अन्य गतिविधि से नियंत्रित नहीं किया जा सकता है। –

संबंधित मुद्दे