2013-07-25 4 views
9

मैं एंड्रॉइड सीख रहा हूं और मैंने एक गतिविधि बनाई है जिसमें दो बटन हैं: एक टॉगल बटन (प्ले/पॉज़) और एक बटन (अगला)। मेरे पास दो गाने हैं जो अगली दबाने पर साइकिल चलाना चाहते हैं। मैं एक सरणीमीडियाप्लेयर: क्लाइंट पक्ष पर फ़ाइल नहीं खोल सका; त्रुटि (-38,0) और अधिक

int [] songs={R.raw.song1,R.raw.song2};

मैं अपने गतिविधि में onClick overrode है। पहला गीत ठीक खेलता है;

क्लाइंट की तरफ फ़ाइल नहीं खोली, सर्वर साइड

ई/MediaPlayer (3107) की कोशिश कर रहा सका:: राज्य में बुलाया शुरू 4

ई/लेकिन अगला दबाने के बाद, मैं निम्नलिखित त्रुटियाँ प्राप्त MediaPlayer (3107): त्रुटि (-38, 0)

ई/MediaPlayer (3107): त्रुटि (-38,0)

ई/MediaPlayer (3107): त्रुटि (1, -+२१४७४८३६४८)

ई/MediaPlayer (3107): त्रुटि (1, -2147483648)

OnCreate (बंडल ...) में,

if(mp!=null) mp.release(); 
    mp=MediaPlayer.create(this, songs[count]); 

यहाँ मेरी onClick (देखें v) विधि है:

public void onClick(View view) {  
    Log.v(TAG,"ID:"+view.getId()); 
    switch (view.getId()) { 
    case R.id.playerbutton: //ToggleButton 
     if(state==0) { 
      mp.start(); 
      state=1; 
     } 
     else if(state==1) { 
      state=0; 
      mp.pause(); 
     } 
    break; 

    case R.id.next: //Next button 
     Log.v(TAG,"Next button pressed!"); 
     count=(count+1)%2; //Have only two songs 
     mp.reset(); 
     try { 
      mp.setDataSource(this, Uri.parse("android.resource://com.example.myfirstapp"+songs[count])); 
      mp.setOnPreparedListener(this); 
      mp.prepareAsync(); 
     } catch (IllegalArgumentException e) { 
      e.printStackTrace(); 
     } catch (SecurityException e) { 
      e.printStackTrace(); 
     } catch (IllegalStateException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

     mp.start(); 
    break; 
    } 
} 

असल में, मैं अगला बटन के प्रत्येक प्रेस के लिए यह कर रहा हूं: -reset mp (यानी MediaPlayer वस्तु) setOnPreparedListener या prepareAsync का उपयोग कर के रूप में अगले गीत -Start mp

खेलने के लिए एक नया डेटा स्रोत सेट, मैं this SO question पढ़ें।

मैं गलत कहां जा रहा हूं?

+0

[एंड्रॉइड मीडियाप्लेयर समस्याएं: "त्रुटि (-38, 0)" और "राज्य 1 में कॉल करना बंद करें" के संभावित डुप्लिकेट] (http://stackoverflow.com/questions/11913108/android-mediaplayer-problems-error- 38-0-और-स्टॉप-इन-स्टेट-1) – rds

उत्तर

7

मेरा मानना ​​है कि आप डेटा स्रोत गलत सेट कर रहे हैं।

mp.setDataSource(this, Uri.parse("android.resource://com.example.myfirstapp/"+songs[count])); 

सूचना पैकेज का नाम के बाद स्लैश:

इसे करने के लिए बदलें।

+0

हाँ, ध्यान नहीं दिया! साथ ही, मैंने 'readyAsync' को' ready() 'से बदल दिया है क्योंकि मैं एक फ़ाइल से खेल रहा हूं (स्ट्रीम नहीं)। धन्यवाद!! –

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