java एंड्रॉइड में गतिविधियों में बीजी संगीत बजाना




android media (6)

SoundPools या MediaPlayers का उपयोग करके एक स्थिर SoundManager बनाएं।

KeepMusicGoing नामक एक स्थिर ध्वज बनाएं।

पहली सक्रियता बनने पर संगीत शुरू करें।

कार्यवाही स्विच करते समय KeepMusicGoing को सही पर सेट करें।

अपनी गतिविधियों की ऑन-स्टॉप घटना पर जांचें कि क्या रखें म्यूजिकगोइंग सत्य है, अगर ऐसा है तो संगीत को छोड़ दें, फिर KeepMusicGoing को झूठी पर सेट करें।

यदि वे होम बटन दबाते हैं तो KeepMusicGoing ध्वज झूठा होगा, इसलिए जब गतिविधि फोकस हो जाती है तो संगीत बंद हो जाएगा।

मुझे ईमेल करें और मैं आपको कुछ साउंडमैनेजर भेज सकता हूं जिन्हें मैंने लिखा था मीडियाप्लेयर और अन्य साउंडपूल का उपयोग करता है

काग़ज़ का टुकड़ा

नमस्कार! स्टैक ओवरफ्लो पर यहां एक प्रश्न पूछने के लिए पहली बार। उत्तेजित करनेवाला! Haha।

हम एक एंड्रॉइड गेम विकसित कर रहे हैं और हम अपने परिचय के लिए कुछ पृष्ठभूमि संगीत चलाते हैं (हमारे पास एक परिचय गतिविधि है) लेकिन हम चाहते हैं कि यह अगली गतिविधि में खेलना जारी रखे, और शायद संगीत को फिर से या फिर से संगीत को चलाने में सक्षम हो आवेदन।

फिलहाल हम जो कर रहे हैं वह हमारी परिचय गतिविधि में मीडियाप्लेयर का उपयोग करके बीजीएम खेलता है। हालांकि, जैसे ही उपयोगकर्ता उस गतिविधि को छोड़ देता है, हम संगीत को रोकते हैं। क्या हमें इसके लिए सेवाओं की तरह कुछ उपयोग करना है? या MediaPlayer / SoundPool पर्याप्त है? अगर कोई जवाब जानता है, तो हम खुशी से हमारे साथ साझा करने की सराहना करेंगे। धन्यवाद!


आप AsyncPlayer का उपयोग करने का प्रयास कर सकते हैं लेकिन ध्वनि को खेलने से रोकने के लिए आपको कक्षा का संदर्भ रखना चाहिए।

आप Uri uri = Uri.parse("android.resource://com.stackoverlof.android/raw/ beep.mp3"); का उपयोग कर स्थानीय संसाधन में उरी बना सकते हैं Uri uri = Uri.parse("android.resource://com.stackoverlof.android/raw/ beep.mp3");

उम्मीद है की यह मदद करेगा।


मेरी library को पृष्ठभूमि मीडिया प्लेबैक को यथासंभव सरल बनाने के लिए डिज़ाइन किया गया था। स्रोत को देखने का प्रयास करें, या यदि आप चाहें तो लाइब्रेरी का उपयोग करें।


सबसे पहले मैंने विधि का उपयोग किया जहां चाड द्वारा प्रदान किया गया "keepMusicPlaying" ध्वज रखना है। मुझे लगता है कि बस अपनी गतिविधियों के ऑनस्टार्ट और ऑनटॉप विधियों का उपयोग करने के लिए यह अधिक सुरुचिपूर्ण है।

अपनी खुद की कक्षा "SoundManager" बनाएं और स्टार्ट और ऑनस्टॉप (या बेस गतिविधि वर्ग का उपयोग करें) पर अपनी सभी गतिविधियों से कुछ ऑनस्टार्ट और ऑनस्टॉप क्लास को कॉल करें। स्टार्ट काउंटर (ऑनस्टार्ट में स्टार्ट काउंटर ++ और स्टार्ट काउंटर - ऑनस्टॉप में) के साथ ऑनस्टार्ट और ऑनस्टॉप का ट्रैक रखें। चूंकि पुरानी गतिविधि के ऑनटॉप से ​​पहले एक नई गतिविधि की शुरुआत को बुलाया जाता है, तो आप हमेशा जानते हैं कि ऑनस्टार्ट को पहली बार (startCounter == 1) कहा जाता है या आपकी किसी अन्य गतिविधि से शुरू होता है (startCounter == 2)। ऑनस्टॉप के साथ ही (startCounter == 0 का अर्थ है कि ऐप बंद था, startCounter == 1 का मतलब है कि यह सिर्फ पुरानी गतिविधि से रोक है लेकिन एक नया है)।

इस तरह आप अपने ऐप के अंदर शुरू होने वाली प्रत्येक गतिविधि पर कुछ KeepMusicPlaying विधि / ध्वज को कॉल करने के बजाय सब कुछ अपने SoundManager में समाहित करते हैं।

    public void OnStart()
    {
        startCounter++;
        if (startCounter == 1)
        {
            //start music here
        }

    public void OnStop()
    {
        startCounter--;
        if (startCounter == 0)
        {
            // stop music here
        }
    }

इसके लिए सेवाओं का उपयोग कर अपने अनुभव में एक बहुत अच्छा विचार नहीं है।

सेवाओं का उपयोग किए बिना पृष्ठभूमि संगीत:

http://www.rbgrn.net/content/307-light-racer-20-days-61-64-completion


आप एक ऐसी सेवा भी बना सकते हैं जो नीचे दिए गए मेडियाप्लेयर का उपयोग करके संगीत चलाएं।

Intent svc=new Intent(this, BackgroundSoundService.class);
startService(svc); //OR stopService(svc); 
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) {
        // TODO



    }
    public IBinder onUnBind(Intent arg0) {
        // TODO Auto-generated method stub

        return null;
    }

    public void onStop() {

    }
    public void onPause() {

    }
    @Override
    public void onDestroy() {

        player.stop();
        player.release();
    }

    @Override
    public void onLowMemory() {

    }
}




background-music