2011-04-12 14 views
6

मुझे वर्तमान में एंड्रॉइड डिवाइस पर एक एप्लिकेशन को लागू करने की आवश्यकता है जो लाइव ऑडियो स्ट्रीम खोल सकता है और उन्हें उपयोगकर्ता को वापस चला सकता है। यह एक बड़ा सौदा नहीं है, और मैंने सफलतापूर्वक एक स्ट्रीमिंग सर्वर स्थापित किया है और इसे एक फ़ाइल के लिए काम कर लिया है। मेरा सवाल यह है कि, मैं एक साथ कई ऑडियो फ़ाइलों को स्ट्रीम और कैसे चला सकता हूं?एंड्रॉइड - एकाधिक, एक साथ स्ट्रीमिंग ऑडियो

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

मैंने साउंडपूल का उपयोग करने में देखा, लेकिन ऐसा लगता है कि यह केवल स्थानीय मीडिया के लिए है और मुझे यह स्ट्रीमिंग होना चाहिए क्योंकि यह प्लेबैक गति (कोई प्रतीक्षा समय आदि) के लिए महत्वपूर्ण नहीं है।

किसी भी मदद या अंतर्दृष्टि की सराहना की जाती है! अग्रिम में धन्यवाद!

+1

साथ ऑडियो धाराओं मानचित्रण लेकिन क्यों यू उन्हें एक साथ खेलना चाहते थे .......? – viv

+1

मैंने बहु-मीडिया दस्तावेजों को लिखने के लिए बनाया और ऐप बनाया और यदि उपयोगकर्ता एक साथ कई ऑडियो फाइलें खेलना चाहेगा, तो मुझे इसे अनुमति देना पसंद होता। उदाहरण के लिए, एक गीत को एक और गीत के रूप में फीकाएं। –

+0

मैंने एकाधिक ऑडियो के साथ प्रयास नहीं किया है ...... लेकिन क्या आपने MediaPlayer.create() या नया MediaPlayer() का उपयोग किया था? – viv

उत्तर

1

मैं पहले एक ऐप के साथ टंकण कर रहा था और मेरे पास एक समान समस्या थी और मैं इसे स्ट्रीम करने में सक्षम था सिवाय इसके कि मैं ऑडियो स्ट्रीम नहीं कर रहा था। उम्मीद है कि इस मदद कर सकते हैं, तो आप अपने उद्देश्यों के लिए इसे संशोधित करने की आवश्यकता होगी:

import android.media.AudioManager; 
import android.media.SoundPool; 
import android.media.SoundPool.OnLoadCompleteListener; 
import android.util.SparseIntArray; 

इन्स्तांत एक SoundPool और एक SparseIntArray मैं यहाँ ध्वनि फ़ाइलों का उपयोग कर रहा है, तो आप इस हिस्से को संशोधित करना होगा।

private static SoundPool soundPool; 
private static SparseIntArray soundPoolMap; 
public static final int S1 = R.raw.good_1, S2 = R.raw.bad_1, 
     P1 = R.raw.power_1, 
     P2 = R.raw.power_2, 
     P3 = R.raw.power_3, 
     P4 = R.raw.power_4, 
     P5 = R.raw.power_5, 
     WIN = R.raw.round_win; 

अपने ध्वनियों प्रारंभ और ध्वनि

public static void playSound(Context context, int soundID) 
{ 
    float volume = 1; 
    if(soundPool == null || soundPoolMap == null) 
    { 
     initSounds(context); 
    } 
    soundPool.play(soundPoolMap.get(soundID), volume, volume, 1, 0, 1f); 
} 

एक उदाहरण खेलते हैं उन्हें नक्शे

public static void initSounds(Context context) 
{ 
    soundPool = new SoundPool(2, AudioManager.STREAM_MUSIC, 100); 
    soundPoolMap = new SparseIntArray(8);  

    soundPool.setOnLoadCompleteListener(new OnLoadCompleteListener() { 
     public void onLoadComplete(SoundPool soundPool, int sampleId, 
       int status) { 
      loaded = true; 
     } 
    }); 
    soundPoolMap.put(S1, soundPool.load(context, R.raw.good_1, 1)); 
    soundPoolMap.put(S2, soundPool.load(context, R.raw.bad_1, 2)); 

    soundPoolMap.put(P1, soundPool.load(context, R.raw.power_1, 3)); 
    soundPoolMap.put(P2, soundPool.load(context, R.raw.power_2, 4)); 
    soundPoolMap.put(P3, soundPool.load(context, R.raw.power_3, 5)); 
    soundPoolMap.put(P4, soundPool.load(context, R.raw.power_4, 6)); 
    soundPoolMap.put(P5, soundPool.load(context, R.raw.power_5, 7)); 

    soundPoolMap.put(WIN, soundPool.load(context, R.raw.round_win, 8)); 
} 

में जोड़ें: playSound (यह, P1);

क्या हो रहा मैं SoundPool वर्ग का उपयोग कर रहा है और फिर एक SparseIntArray

+0

उत्तर के लिए धन्यवाद। हालांकि, स्ट्रीमिंग नहीं होने पर, मैंने कहा, मैं केवल एक ही ऑडियो फाइलों को चलाने के लिए सक्षम था। स्ट्रीमिंग सब कुछ तोड़ने लग रहा था। हालांकि, यह कुछ समय हो गया है क्योंकि मैंने एंड्रॉइड में काम किया है और मुझे यकीन है कि एपीआई बहुत बेहतर हैं। शायद आपका उदाहरण स्ट्रीमिंग के लिए काम करेगा। –

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