2011-07-19 9 views
34

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

+0

क्या आपने कोशिश/पकड़ के साथ प्रयास किया? – Rasel

+0

हम्म हां.लेकिन मुझे नहीं पता कि मैं किस "पकड़" का उपयोग करूंगा। क्या कोई ऐसा कोड है जो VideoView.isPlayable या ऐसा कुछ काम करता है जैसे काम करता है? प्रतिक्रिया के लिए धन्यवाद :) – emmandroid

+0

कोशिश-पकड़ इस मामले के लिए काम नहीं करता है क्योंकि यह एक असीमित प्रक्रिया है। आपको ऑनर ​​लिस्टर सेट करने का प्रयास करना चाहिए। (ऑनर लिस्टनर के डॉक्टर से: "एसिंक्रोनस ऑपरेशन के दौरान त्रुटि होने पर कॉलबैक की इंटरफ़ेस परिभाषा लागू की जाएगी (अन्य त्रुटियां विधि कॉल समय पर अपवाद फेंक देंगी)।) – Taner

उत्तर

55

setOnErrorListener का उपयोग करने का प्रयास करें: प्रलेखन यदि कोई श्रोता निर्दिष्ट नहीं है, या श्रोता झूठी लौटाई गई है, तो वीडियो व्यू किसी भी त्रुटि के उपयोगकर्ता को सूचित करेगा।, इसलिए मुझे लगता है कि यदि आप एक सेट करते हैं और सत्य लौटाते हैं तो यह उपयोगकर्ता त्रुटि नहीं दिखाएगा।

+0

इस जानकारी के लिए धन्यवाद। मैं इसे पहले कर दूंगा और अगर यह काम करता है तो आपको सूचित करेगा। धन्यवाद :) – emmandroid

+0

मैं पुष्टि करता हूं कि यह काम करता है। – BoD

+0

डायलॉग अभी भी मेरे मामले में पॉप अप करेगा। कोई विचार? – user1810737

6

कोड मैं इस के लिए इस्तेमाल किया:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.main); 

    vView = (VideoView) findViewById(R.id.videoView1); 

    vSource = "android.resource://com.domain.android/" 
      + R.raw.introductionportrait; 
    vView.setVideoURI(Uri.parse(vSource)); 

    vView.setOnErrorListener(mOnErrorListener); 
    vView.requestFocus(); 
    vView.start(); 
} 

private OnErrorListener mOnErrorListener = new OnErrorListener() { 

    @Override 
    public boolean onError(MediaPlayer mp, int what, int extra) { 
     // Your code goes here 
     return true; 
    } 
}; 
3

मैं onCreate विधि के भीतर इस तरह के श्रोताओं की स्थापना पसंद करते हैं। उम्मीद है कि

videoView.setOnErrorListener(new OnErrorListener() { 
    @Override 
    public boolean onError(MediaPlayer mp, int what, int extra) { 
     Log.e(TAG, "Error playing video"); 
     return true; 
    } 
}); 
2

आप नीचे दिए गए कोड को जोड़ सकते हैं, तो कोई त्रुटि होने पर यह वीडियो दृश्य स्क्रीन बंद कर देगा। इसके अलावा, यह वीडियो कहने का डिफ़ॉल्ट पॉपअप प्रदर्शित नहीं करेगा :)

videoview.setOnErrorListener(new MediaPlayer.OnErrorListener() { 
      @Override 
      public boolean onError(MediaPlayer mediaPlayer, int i, int i1) { 
       finish(); 
       return true; 
      } 
     });