मैं एक ही मीडिया प्लेयर का उपयोग करने की कोशिश कर रहा हूं लेकिन डेटा स्रोत बदल रहा हूं। यहाँ है कि मैं क्या करने के लिए कोशिश कर रहा हूँ: मौजूदा मीडियाप्लेयर का उपयोग कर ऑडियो प्लेबैक के लिए डेटा स्रोत बदल रहा है?
private MediaPlayer mMediaPlayer;
public void pickFile1() {
initMediaPlayer("myfile1.mp3");
}
public void pickFile2() {
initMediaPlayer("myfile2.mp3");
}
private void initMediaPlayer(String mediafile) {
// Setup media player, but don't start until user clicks button!
try {
if (mMediaPlayer == null) {
mMediaPlayer = new MediaPlayer();
} else {
mMediaPlayer.reset(); // so can change data source etc.
}
mMediaPlayer.setOnErrorListener(this);
AssetFileDescriptor afd = getAssets().openFd(mediafile);
mMediaPlayer.setDataSource(afd.getFileDescriptor());
}
catch (IllegalStateException e) {
Log.d(TAG, "IllegalStateException: " + e.getMessage());
}
catch (IOException e) {
Log.d(TAG, "IOException: " + e.getMessage());
}
catch (IllegalArgumentException e) {
Log.d(TAG, "IllegalArgumentException: " + e.getMessage());
}
catch (SecurityException e) {
Log.d(TAG, "SecurityException: " + e.getMessage());
}
mMediaPlayer.setOnPreparedListener(this);
mMediaPlayer.prepareAsync(); // prepare async to not block main thread
mMediaPlayer.setWakeMode(getApplicationContext(), PowerManager.PARTIAL_WAKE_LOCK); // Keep playing when screen goes off!
}
मैं सिर्फ यह फोन जब मैं एक नया MediaFile को बदलना चाहते हैं। ऐसा लगता है कि डेटा स्रोत सफलतापूर्वक बदल नहीं रहा है। पहला सवाल: क्या यह इस तरह से करना संभव है, या क्या मुझे मीडिया प्लेयर जारी करना है और प्रत्येक नई फ़ाइल के लिए एक नया बनाना है? यदि यह संभव है, तो मेरा कोड सही क्यों काम नहीं कर रहा है?
संपादित करें: मीडिया प्लेयर को अच्छी तरह से रिलीज़ करना और पुनर्निर्माण करना भी ऐसा नहीं कर रहा है! यह सिर्फ वही गीत खेलता रहता है!? यह ऐसे कैसे संभव है? नया विचार - प्रत्येक ट्रैक के लिए एक अलग मीडिया प्लेयर बनाएं, क्या वास्तव में मुझे यहां क्या करना है? क्या यह शायद एंड्रॉइड में एक बग है?
हाँ आप सही, मैं अपने कोड से वह हिस्सा तो मेरे नमूना त्रुटिपूर्ण को शामिल नहीं किया जाता है। मैं तदनुसार अपडेट करूंगा - दुर्भाग्यवश ऐसा नहीं है कि मेरा कोड काम नहीं कर रहा है। मैंने डीबगर के साथ सत्यापित किया है कि मूल फ़ाइल में चलने के बावजूद मीडियाफ़ाइल में एक अलग फ़ाइल नाम है।मेरे मामले में, फ़ाइल को संपत्ति फ़ोल्डर में शामिल किया गया है, इसलिए मैं अपने कोड में दिखाए गए अनुसार एक्सेस कर सकता हूं। –