2011-02-12 14 views
10

मैंने एक मूल फ़ाइल लिखा है जिसे मैं एमपी 3 फ़ाइल चलाने की कोशिश करने के बारे में सोच सकता हूं, लेकिन यह काम नहीं कर रहा है। मुझे कोई त्रुटि नहीं मिलती है, लेकिन जब एप्लिकेशन शुरू होता है, तो ध्वनि नहीं खेला जाता है।एंड्रॉइड मीडियाप्लेयर एमपी 3 फ़ाइल नहीं चला रहा

public class soundtest extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     MediaPlayer mp = new MediaPlayer(); 
     mp.create(getApplicationContext(), R.raw.norm_iphone_money); 
     mp.start(); 
    } 
} 

मुझे क्या याद आ रही है? मेरे पास res/raw फ़ोल्डर के अंदर "norm_iphone_money.mp3" है। फ़ाइल विंडोज मीडिया प्लेयर और आईट्यून्स में ठीक खेलती है।

मैं जावा के लिए जावा एसडीके और ग्रहण के नवीनतम संस्करणों का उपयोग कर रहा हूं। ऐप को एंड्रॉइड 2.2 के लिए लक्षित किया गया है और बिना ध्वनि के एमुलेटर में ठीक चलाता है।

+0

क्या आपने असली डिवाइस पर कोशिश की है? आप MediaDlayer() के बजाय setPataSource() और तैयार() विधियों का उपयोग करने का प्रयास कर सकते हैं(), लेकिन मुझे संदेह है कि अगर काम() नहीं होता है तो यह काम करेगा ... – DJC

उत्तर

9

इन दो पंक्तियों के बजाय ऐसे:

MediaPlayer mp = new MediaPlayer(); 
mp.create(getApplicationContext(), R.raw.norm_iphone_money); 
इस एक लाइन के साथ

:

MediaPlayer mp = MediaPlayer.create(this, R.raw.norm_iphone_money); 

और देखते हैं कि अगर काम करता है।

+7

यदि ये दोनों लेखन हैं संकलित कोड में जो कुछ भी तर्कसंगत रूप से अलग है, मैं चौंक जाएगा। – DJC

+1

नहीं, लेकिन यह स्वयं परीक्षण कर रहा है, यह केवल उस तरह से काम करता है, यह काम नहीं करता है कि उसने मूल रूप से इसे कैसे लिखा था। अगर कोई और बिल्कुल समझाने की परवाह करता है * क्यों * वह है, तो यह बहुत अच्छा होगा। एक रॉ ऑडियो संसाधन बजाना यहां वर्णित है http://developer.android.com/guide/topics/media/index.html – ShadowGod

+5

बेशक यह तर्कसंगत रूप से अलग है। mp.create स्थिर विधि को कॉल करेगा, और यह MediaPlayer का एक नया उदाहरण लौटाएगा, जिसे कभी संग्रहीत नहीं किया जाता है।फिर, वह डिफ़ॉल्ट-निर्मित उदाहरण पर प्रारंभ() को कॉल करता है। – Yuyo

-2

मीडियाप्लेयर प्रकार से स्थिर विधि बनाने (संदर्भ, int) को स्थिर तरीके से एक्सेस किया जाना चाहिए। इस प्रयास करें:

MediaPlayer.create(getApplicationContext(), R.raw.norm_iphone_money).start(); 

यह इस लाइन के साथ .mp3 खेलेंगे भी

mp.create(getApplicationContext(), R.raw.norm_iphone_money).start(); 
35

समस्या यह है कि मीडिया की मात्रा (नहीं रिंगर वॉल्यूम) 0 पर सेट किया जाता है। आप द्वारा यह निर्धारित कर सकते हैं:

AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); 
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 20, 0); 
+0

यह स्टार्टअपएक्टिविटी – Deepzz

+0

क्या जवाब है! स्टार्टअपएक्टिविटी सिर्फ मेरी परियोजना में एक गतिविधि है। लेकिन हम कॉन्टेक्स्ट क्लास द्वारा निरंतर AUDIO_SERVICE को संदर्भित कर सकते हैं। गतिविधि सिर्फ एक संदर्भ है, और AUDIO_SERVICE संदर्भ की स्थिर स्थिर स्ट्रिंग है। आपकी प्रतिक्रिया के लिए बहुत बहुत धन्यवाद, Deppzz! –

+0

बहुत बहुत धन्यवाद .. :) – Deepzz

-3

मैं इस सुझाव है:

MediaPlayer mp = new MediaPlayer(); 
//bla bla bla 
mp = MediaPlayer.create(getApplicationContext(), R.raw.norm_iphone_money); 
+0

यो मीडिया प्लेयर 'एमपी' क्यों बनाते हैं, फिर इसे' MediaPlayer.create' से आउटपुट के साथ बदलें? –

-4

एक ही समस्या था के बाद मैं मीडिया प्लेयर शुरू करने के लिए क्लिक किया है, स्क्रीन काली हो गया था और एप्लिकेशन बंद कर दिया।

मैं सिर्फ

MediaPlayer mp = MediaPLayer.create (यह, R.raw.sound) बदल दिया; mp.start();

MediaPlayer mp = MediaPLayer.create (यह, R.raw.sound) .start() करने के लिए;

मुझे सच में यकीन नहीं है कि वहां क्या अंतर है, लेकिन यह मेरी समस्या का समाधान करता है।

+0

यदि आप केवल विधि कॉल को चेन करते हैं तो कोई फर्क नहीं पड़ता। –

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