2011-11-28 18 views
13

मैं एक AsyncTask, जहां मैं एक वीडियो दृश्य को छिपाने के लिए है, वीडियो प्लेबैक प्रारंभ करें, और वीडियो दृश्य जब वीडियो के चलते दिखाई देते हैं।VideoView शुरू नहीं करता है जब अदृश्य

लेकिन वीडियो दृश्य तब शुरू नहीं होगा जब वीडियो दृश्य अदृश्य हो जाए, एसिंक कार्य बैकग्राउंड पर लटकता रहता है। अगर मैं इस लाइन बाहर टिप्पणी, वीडियो के शुरू। क्यों वीडियो दृश्य एक दिखाई सतह की आवश्यकता है?

public void walk(final View v) { 

    new AsyncTask() { 
     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      mVideoView.setVisibility(View.INVISIBLE); // this line causes video not to start 
      mVideoView.start(); 
     } 

     @Override 
     protected Object doInBackground(Object... objects) { 
      while (!mVideoView.isPlaying()) {} 
      return null; 
     } 

     @Override 
     protected void onPostExecute(Object o) { 
      super.onPostExecute(o); 
      mVideoView.setVisibility(View.VISIBLE); 
     } 

    }.execute(); 

के बारे में थोड़ी कारण है कि मैं यह कर रहा हूँ:

https://stackoverflow.com/search?q=%5Bandroid%5D+videoview+black

https://stackoverflow.com/search?q=%5Bandroid%5D+video+%5Bmediaplayer%5D+black: मुझे लगता है कि आप आमतौर पर जब कोई वीडियो शुरू है काला फ्लैश के जाने-माने मुद्दे से बचने की कोशिश

उत्तर

10

VideoView वास्तव में एक विशेष SurfaceView है। एक SurfaceView सामान्य विंडो के पीछे एक और खिड़की (विचारों के सभी युक्त) बनाने, और उसके बाद तो यह है कि नई विंडो (अपने स्वयं के ड्राइंग सतह के साथ) इसके पीछे देखा जा सकता है पारदर्शिता का एक क्षेत्र होने से काम करता है।

यदि कोई सतह दृश्य अब दिखाई नहीं दे रहा है, तो इसकी सतह नष्ट हो जाएगी यानी SurfaceHolder.Callback.surfaceDestroyed कहा जाता है। VideoView अपने वीडियो खेलने के लिए मान्य सतह नहीं है, इसलिए अपने AsyncTaskdoInBackground कभी नहीं छोड़ने के लिए सक्षम हो जाएगा की कोशिश नहीं करेंगे।

सतह के दृश्य सतह के दृश्य के दौरान सतह आपके लिए बनाई जाएगी; आप surfaceCreated (SurfaceHolder) और surfaceDestroyed (SurfaceHolder) जब सतह बनाया है और नष्ट हो जाता है के रूप में खिड़की दिखाया गया है और छिपा है की खोज के लिए लागू करना चाहिए।

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