5

से वीडियो स्रोत पथ प्राप्त करें मेरे पास वीडियो व्यू उदाहरण है। मुझे इससे वीडियो स्रोत पथ पता होना चाहिए।एंड्रॉइड वीडियो व्यू

क्या यह संभव है? कोई भी मेरी मदद कर सकता हैं?

WebChromeClient वर्ग से मेरे कोड है:

@Override 
public void onShowCustomView(final View view, final CustomViewCallback callback) { 
    super.onShowCustomView(view, callback); 

    if (view instanceof FrameLayout) { 
     final FrameLayout frame = (FrameLayout) view; 
     if (frame.getFocusedChild() instanceof VideoView) { 
      // get video view 

      video = (VideoView) frame.getFocusedChild(); 
     } 
    } 
} 

कैसे वीडियो वस्तु fron वीडियो स्रोत पथ प्राप्त करने के लिए?

उत्तर

15

वीडियो व्यू में वीडियो पथ/उरी के लिए गेटर्स नहीं हैं। आपका एकमात्र परिवर्तन प्रतिबिंब का उपयोग करना है। उरी private Uri mUri में संग्रहीत है। इसका उपयोग करने के लिए आप इसका उपयोग कर सकते हैं:

Uri mUri = null; 
try { 
    Field mUriField = VideoView.class.getDeclaredField("mUri"); 
    mUriField.setAccessible(true); 
    mUri = (Uri)mUriField.get(video); 
} catch(Exception e) {} 

बस ध्यान रखें कि एक निजी क्षेत्र भविष्य में एंड्रॉइड रिलीज में बदलाव के अधीन हो सकता है।

+5

तोमिक, बहुत बहुत धन्यवाद !!! यह वास्तव में दिलचस्प समाधान है। यह एक दयालु बात है कि वीडियो व्यू के पास इस क्षेत्र के लिए सार्वजनिक गेटर नहीं है – ihrupin

+0

आप किसी प्रकार का पुरस्कार लायक हैं। अच्छी तरह से किया। –

9

आप VideoView में setVideoUriMethod ओवरराइड कर सकते हैं अगर आप इस तरह निजी तरीकों का उपयोग कर पसंद नहीं है:

public class MyVideoView extends VideoView 
{ 
    Uri uri; 

    @Override 
    public void setVideoURI (Uri uri) 
    { 
     super.setVideoURI(uri); 
     this.uri = uri; 
    } 
} 

अब आप आवश्यकतानुसार videoview की uri पहुँच सकते हैं। उम्मीद है की वो मदद करदे।

+0

मेरी राय में, यह बेहतर जवाब है। प्रतिबिंब कार्यों का उपयोग करके टोमिक का जवाब, लेकिन यह भविष्य में टूट सकता है (विभिन्न एपीआई स्तरों पर एंड्रॉइड एसडीके में परिवर्तन)। मुझे अतीत में इसकाट दिया गया है। – dell116

3

एक अन्य विकल्प देखने के टैग पर वीडियो उरी/पथ सेट और बाद में पुनः प्राप्त करने के लिए होगा।

जब आप खेलते हैं/शुरू

videoView.setVideoPath(localPath); 
videoView.setTag(localPath); 

आप क्या

String pathOfCurrentVideoPlaying = (String)videoView.getTag(); 

खेल रहा है बस एक अनुकूलक का उपयोग कर यदि टैग बाहर खाली करने के लिए याद की जांच करना चाहते हैं।

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