2017-02-04 5 views
3

У меня есть видеопроигрыватель, когда я запускаю его и нажимаю значок запуска и снова перезапускаю приложение, начало воспроизведения видео с того места, где оно было. Когда я приостанавливаю видео и нажимаю значок запуска и снова перезапустите приложение. Видео не находится в состоянии паузы. Он снова начинается с последних position.Thanks заранееСостояние перезагрузки приложения после нажатия кнопки «домой» с видеоизображением

public class VideoFullscreenActivity extends Activity { 


    private static boolean startFromZero = false; 
    VideoView videoView; 

    private static boolean isplaying = false; 

    ProgressDialog pDialog; 
    SharedPreferences.Editor editor; 

    SharedPreferences prefs; 
    int restoredPosition; 

    public static boolean isStartFromZero() { 
     return startFromZero; 
    } 


    public static void setStartFromZero(boolean startFromZero) { 
     VideoFullscreenActivity.startFromZero = startFromZero; 
    } 

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

     setContentView(R.layout.activity_video_fullscreen); 
     videoView = (VideoView) findViewById(R.id.videoview); 
     editor = getSharedPreferences("VIDEO_POSITION", MODE_PRIVATE).edit(); 

     prefs = getSharedPreferences("VIDEO_POSITION", MODE_PRIVATE); 


     if (startFromZero) { 
      editor.putInt("CURRENT_POSITION", 0);//stopPosition is an int 
      editor.commit(); 
     } else { 
      setStartFromZero(false); 
     } 

     restoredPosition = prefs.getInt("CURRENT_POSITION", 0); 

     if (Utilities.checkInternetConnection(this)) { 


      Intent intent = getIntent(); 

      pDialog = new ProgressDialog(this); 
      // Set progressbar message 
      pDialog.setMessage("Buffering..."); 
      pDialog.setIndeterminate(false); 
      pDialog.setCancelable(true); 
      // Show progressbar 
      pDialog.show(); 

      MediaController mediaController = new 
        MediaController(this); 
      mediaController.setAnchorView(videoView); 
      videoView.setMediaController(mediaController); 

      if(intent.getStringExtra(Constants.URL)!= null) 
      { 
       Uri videoUri = Uri.parse(intent.getStringExtra(Constants.URL)); 
       videoView.setVideoURI(videoUri); 

      } else if (intent.getStringExtra("VideoUrl") != null) 
      { 
       Map<String, String> headers = new HashMap(); 
       headers.put(APP_KEY, APPKEY_VALUE); 
       headers.put(SESSION_ID, SharedInstance.getInstance().getLoginDetails().getSessionId()); 

       Uri uri = Uri.parse(intent.getStringExtra("VideoUrl")); 
       Method setVideoURIMethod = null; 
       try { 
        setVideoURIMethod = videoView.getClass().getMethod("setVideoURI", Uri.class, Map.class); 
        setVideoURIMethod.invoke(videoView, uri,headers); 
       } catch (NoSuchMethodException e) { 
        e.printStackTrace(); 
       } catch (InvocationTargetException e) { 
        e.printStackTrace(); 
       } catch (IllegalAccessException e) { 
        e.printStackTrace(); 
       } 
       //videoView.setVideoURI(uri,headers); 
      } 
      videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
       // Close the progress bar and play the video 
       public void onPrepared(MediaPlayer mp) { 
        pDialog.dismiss(); 
        videoView.start(); 
       } 
      }); 

      if (prefs != null) { 
       restoredPosition = prefs.getInt("CURRENT_POSITION", 0); //0 is the default value. 
      } 
      videoView.seekTo(restoredPosition); 
      videoView.start(); 
      Log.i("positionPlayback", "onCreate " + restoredPosition); 

     } else { 
      Utilities.showAlertLoginDialog(this, "", getResources().getString(R.string.internet_unavailable_msg)); 
     } 
     videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
      @Override 
      public void onCompletion(MediaPlayer mediaPlayer) { 
       onBackPressed(); 
      } 
     }); 

//---------------------------------------------------------------// 

     videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
      @Override 
      public void onPrepared(MediaPlayer mediaPlayer) { 
       this.onPrepared(mediaPlayer); 
      } 
     }); 
    } 

    @Override 
    public void onPause() { 
     super.onPause(); 
     Log.i("positionPlayback", "onPause " + restoredPosition); 
     if (videoView != null && videoView.isPlaying()) { 
      videoView.pause(); 

     } 
     restoredPosition = videoView.getCurrentPosition(); 

     editor.putInt("CURRENT_POSITION", restoredPosition);//stopPosition is an int 
     Utilities.hideKeybord(VideoFullscreenActivity.this); 

    } 

    @Override 
    public void onResume() { 
     super.onResume(); 
     checkForCrashes(); 
     startFromZero = false; 
     if (Utilities.checkInternetConnection(this)) { 
      Log.i("positionPlayback", "onResume " + restoredPosition); 
      pDialog.show(); 
      videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
       // Close the progress bar and play the video 
       public void onPrepared(MediaPlayer mp) { 
        pDialog.dismiss(); 
        restoredPosition = prefs.getInt("CURRENT_POSITION", 0); 
        videoView.seekTo(restoredPosition); 
        videoView.start(); 

       } 
      }); 
     } else { 
      Utilities.showAlertLoginDialog(this, "", getResources().getString(R.string.internet_unavailable_msg)); 
     } 
    } 

    @Override 
    protected void onSaveInstanceState(Bundle outState) { 
     super.onSaveInstanceState(outState); 
    } 

    private void checkForCrashes() { 
     CrashManager.register(this, BuildConfig.hockeyAppId); 
    } 

    @Override 
    protected void onStart() { 
     super.onStart(); 
     if (prefs != null) { 
      SharedPreferences prefs = getSharedPreferences("VIDEO_POSITION", MODE_PRIVATE); 
      restoredPosition = prefs.getInt("CURRENT_POSITION", 0); //0 is the default value. 
     } 
     videoView.seekTo(restoredPosition); 
     videoView.start(); 
     Log.i("positionPlayback", "onStart " + restoredPosition); 
    } 

    @Override 
    protected void onStop() { 
     super.onStop(); 
     Log.i("positionPlayback", "onStop 1 " + restoredPosition); 
     if (videoView != null && videoView.isPlaying()) { 
      videoView.pause(); 
     } 
     editor.putInt("CURRENT_POSITION", restoredPosition);//stopPosition is an int 
     editor.commit(); 
     Log.i("positionPlayback", "onStop " + restoredPosition); 
    } 

    @Override 
    protected void onDestroy() { 
     editor.putInt("CURRENT_POSITION", restoredPosition); 
     editor.commit(); 
     Log.i("positionPlayback", "onDestroy " + restoredPosition); 
     super.onDestroy(); 

    } 

    @Override 
    protected void onRestart() { 
     super.onRestart(); 
     SharedPreferences prefs = getSharedPreferences("VIDEO_POSITION", MODE_PRIVATE); 
     restoredPosition = prefs.getInt("CURRENT_POSITION", 0); 
     Log.i("positionPlayback", "onRestart " + restoredPosition); 
    } 

    @Override 
    public void onConfigurationChanged(Configuration newConfig) { 
     super.onConfigurationChanged(newConfig); 
    } 

    @Override 
    public void onBackPressed() { 
     editor.putInt("CURRENT_POSITION", 0); 
     editor.commit(); 
     finish(); 
    } 
} 
+0

так что ур вопрос? – rafsanahmad007

+0

вы можете установить чек в OnResume(). Если проигрыватель воспроизводится, установите его в состояние паузы. – tahsinRupam

+0

мой вопрос: когда я приостанавливаю видео и нажимаю кнопку запуска ... и снова перезапустите приложение, видео должно быть в состоянии паузы как предыдущее. Это происходит с игровым состоянием .. но не с паузой –

ответ

1

Пожалуйста, постарайтесь сделать один статус boolean для проверки видео в ручном режиме паузы или нет.

boolean manual_pause = false; 

in onPause проверить статус видео, чтобы повлиять на ручной режим.

@Override 
public void onPause() { 
    super.onPause(); 
    Log.i("positionPlayback", "onPause " + restoredPosition); 
    if (videoView != null && videoView.isPlaying()) { 
     videoView.pause(); 
     manual_pause = false; 
    } else if(videoView != null){ 
     manual_pause = true; 
    } 
    restoredPosition = videoView.getCurrentPosition(); 

    editor.putInt("CURRENT_POSITION", restoredPosition);//stopPosition is an int 
    Utilities.hideKeybord(VideoFullscreenActivity.this); 

} 

Проверьте этот статус в onResume(), чтобы установить статус видео ранее.

@Override 
public void onResume() { 
    super.onResume(); 
    checkForCrashes(); 
    startFromZero = false; 
    if (Utilities.checkInternetConnection(this)) { 
     Log.i("positionPlayback", "onResume " + restoredPosition); 
     pDialog.show(); 
     videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
      // Close the progress bar and play the video 
      public void onPrepared(MediaPlayer mp) { 
       pDialog.dismiss(); 
       restoredPosition = prefs.getInt("CURRENT_POSITION", 0); 
       videoView.seekTo(restoredPosition); 
       if(manual_pause) { 
        videoView.pause(); 
        manual_pause = false; 
       }else{ 
        videoView.start(); 
       } 
      } 
     }); 
    } else { 
     Utilities.showAlertLoginDialog(this, "", getResources().getString(R.string.internet_unavailable_msg)); 
    } 
} 

Вы должны обработать свой предыдущий статус, как этот ручной.

Надеюсь, это поможет вам ...

+1

спасибо @ Mr.Sandy, он работает. iwas pu tting же решение, но в неправильном месте ..actualy только 4 месяца дружбы с android :) –

+0

Okey, Приятно знать, что вы получаете решение ... Если этот ответ поможет вам, пожалуйста, пропустите голос и сделайте все правильно. и все самое лучшее для вашей долгой дружбы с Android @Vivek Mishra –

+0

уверен, что я сделаю прямо сейчас –

1

вам не хватает editor.commit(); @ вам нужно совершить после того, как вы добавите значение!

+0

Должен ли я поставить это после editor.putInt ("CURRENT_POSITION", restorePosition); // stopPosition - это int –

+0

, конечно же, это ** Выполняет изменения ваших настроек обратно из этого редактора в объект SharedPreferences, который он редактирует **, поэтому один раз вы сделали, вы должны совершить! проверьте другие сценарии, а я просто проверил на паузе –

+0

Мне жаль, но это не сработало. :(уже потратил много времени :( –

Смежные вопросы