2012-08-22 6 views
5

ストリーミングURLから動画を再生しようとしています。コードは以下のようになりますandroid 4.0以降の動画表示に関する問題

public class VideoPlayer extends Activity 
{ 
    private VideoView mVideoView;    
    String videoURL=""; 
    static Utility utility; 
    static Context context; 
    MediaController mediaController; 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    {   
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.video_player);   
     setupViews(); 
    } 

    private void setupViews() 
    { 
     context=VideoPlayer.this; 
     utility=new Utility(VideoPlayer.this); 
     isActivityisRunning=true; 
     showProgressDialog("Loading video.."); 
     videoURL=getIntent().getExtras().getString("url");    
     mVideoView=(VideoView)findViewById(R.id.video_view); 
     mediaController=new MediaController(context);    
     mVideoView.setMediaController(mediaController); 

     mVideoView.setOnPreparedListener(new OnPreparedListener() 
     { 
      @Override 
      public void onPrepared(MediaPlayer mp) 
      { 
       hideProgressDialog(); 

       if(bIsOnPausedCalled) 
        mVideoView.seekTo(LastDuration); 
        mVideoView.start();      
        mVideoView.requestFocus(); 
        bIsOnPausedCalled=false; 
        LastDuration=0; 
       } 
      }); 

      mVideoView.setOnCompletionListener(new OnCompletionListener() 
      { 

       @Override 
       public void onCompletion(MediaPlayer mp) 
       { 
        finish(); 
       } 
      }); 


      mVideoView.setOnErrorListener(new OnErrorListener() 
      { 

      @Override 
      public boolean onError(MediaPlayer mp, int what, int extra) 
      { 
       utility.hideProgressDialog(); 
       return false; 
      } 
     }); 

      playVideoFile();  
     } 

    public static void showDialog(String Message) 
    {  
       alertDialog = new AlertDialog.Builder(context).create(); 
       alertDialog.setTitle(Constant.DialogTitle); 
       alertDialog.setMessage(Message); 
       alertDialog.setCancelable(false); 
       alertDialog.setButton("Ok", new DialogInterface.OnClickListener() 
       { 
          public void onClick(DialogInterface dialog, int which) 
          {    
          dialog.dismiss();       
          } 
       }); 
       if(isActivityisRunning) 
        alertDialog.show(); 
       else 
        utility.showToast(Message); 
    } 

    static ProgressDialog progressDialog; 
    static AlertDialog alertDialog; 

    public void showProgressDialog(String Message) 
    { 
      hideProgressDialog(); 
      progressDialog=new ProgressDialog(context); 
      progressDialog.setTitle(Constant.DialogTitle); 
      progressDialog.setMessage(Message);       
      if(isActivityisRunning) 
       progressDialog.show(); 
      else 
       utility.showToast(Message); 
    } 

    public static boolean isActivityisRunning; 
    public static boolean showProgressDialog; 


    public static boolean bIsOnPausedCalled=false; 
    public static int LastDuration=0; 

     @Override 
     protected void onPause() 
     { 

      hideProgressDialog(); 
      bIsOnPausedCalled=true; 
      isActivityisRunning=false; 
      if (mVideoView != null) 
      {  
       if(LastDuration==0) 
       { 
        LastDuration=mVideoView.getCurrentPosition(); 
        mVideoView.suspend(); 
        mVideoView.setVisibility(View.GONE);  
       }    
      } 
      super.onPause(); 
     } 

     @Override 
     protected void onResume() 
     { 

      isActivityisRunning=true; 
       if(bIsOnPausedCalled) 
       {      
        setupViews();    
       } 
       super.onResume();  
     } 

     @Override 
     protected void onDestroy() 
     { 
      super.onDestroy(); 
      try 
      {    
       if (mVideoView != null) 
       { 
        mVideoView.stopPlayback(); 
        mVideoView=null;     
        hideProgressDialog(); 
        isActivityisRunning=false; 
        bIsOnPausedCalled=false; 
        LastDuration=0; 
       } 

      } catch (Exception e) 
      {}    
     } 


    public static void hideProgressDialog() 
    { 
     if(progressDialog!=null) 
     { 
      if(progressDialog.isShowing()) 
      { 
       progressDialog.dismiss(); 
      }   
     } 
    } 


    private void playVideoFile() 
     { 

       try 
       {     
        mVideoView.setVideoURI(Uri.parse(videoURL)); 
       } 
       catch (Exception e) 
       { 
        utility.hideProgressDialog(); 
        if (mVideoView != null) 
        {     
         mVideoView.stopPlayback(); 
        } 
       } 
      } 

これは、4.0より下のバージョンのAndroid搭載デバイス(スリープモードボタンで再開)で正常に動作します。 しかし、バージョン4.0以降のAndroid搭載携帯電話でビデオを再生しようとしているときには、 ビデオは正常に再生されますが、スリープモードに戻り、スリープモードから復帰すると、ビデオ表示サイズは画面の半分になります。次のようにenter image description here

お手伝いしますか?事前に

おかげで.....あなたがやっている

答えて

0

がすべて正しいですが、あなたはsetContentView(R.layout.video_player)を適用しています。動画が再開されても、 は1つのみです。 ので、コードが代わりに

@Override 
public void onCreate(Bundle savedInstanceState) 
{   
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.video_player);  
    setupViews(); 
} 

private void setupViews() 
{ 
    context=VideoPlayer.this; 
    ----- 
    ------ 
} 
+0

感謝の男.... GR8の

@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setupViews(); } private void setupViews() { setContentView(R.layout.video_player); context=VideoPlayer.this; ----- ------ } 

する必要があります –

関連する問題