2016-03-21 18 views
0

Video görüntülemek için MediaPlayer kullanıyorum. Dönmem gerek. Yerel yöntem setLooping() kullanıyorum, ancak çalışmıyor. Video bitti ve hepsi bu. İşte benim kodudur:MediaPlayer setLooping (true) çalışmıyor

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

     setContentView(R.layout.activity_full_screen); 

     TextureView videoViewFullScreen = (TextureView) findViewById(R.id.video_screen); 

     path = getIntent().getExtras().getString(SettingsActivity.FILE_PATH); 
     cycle = getIntent().getExtras().getBoolean(SettingsActivity.CYCLE); 

     position = getIntent().getIntExtra(FullScreenActivity.POSITION, -1); 

     videoViewFullScreen.setSurfaceTextureListener(new TextureView.SurfaceTextureListener() { 
      @Override 
      public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) { 

       final Surface surf = new Surface(surface); 
       try { 
        mediaPlayerFullScreen = new MediaPlayer(); 
        mediaPlayerFullScreen.setDataSource(path); 
        mediaPlayerFullScreen.setSurface(surf); 
        if (cycle) { 
         mediaPlayerFullScreen.setLooping(true); 
        } 

        mediaPlayerFullScreen.prepareAsync(); 

        mediaPlayerFullScreen.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
         @Override 
         public void onPrepared(MediaPlayer mediaPlayer) { 
          if (position != -1) { 
           Log.d("Position", "Position Full " + position); 
           mediaPlayerFullScreen.seekTo(position); 
          } 

          mediaPlayer.start(); 
         } 
        }); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
      } 

      @Override 
      public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) { 
      } 

      @Override 
      public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) { 
       mediaPlayerFullScreen.stop(); 
       mediaPlayerFullScreen.release(); 
       mediaPlayerFullScreen = null; 
       return true; 
      } 

      @Override 
      public void onSurfaceTextureUpdated(SurfaceTexture surface) { 
      } 
     }); 
    } 

    @Override 
    public void onDestroy() { 
     super.onDestroy(); 
     if (mediaPlayerFullScreen != null) { 
      mediaPlayerFullScreen.stop(); 
      mediaPlayerFullScreen.release(); 
      mediaPlayerFullScreen = null; 
     } 
    } 

Ben tüm benzer soruları baktı ve burada bulabilirsiniz tüm cevapları çalıştı, ama bunların hiçbiri bana yardımcı oldu. Android sürüm 4.4.2 var, Firmware sürüm 4.5, Çekirdek sürüm 3.3.0 Birisi bana yardımcı olabilir mi? Videoyu döngülemenin başka bir yolu var mı?

cevap

0

ben setLooping (doğru) için yedek bulmak, bu benim için çalışıyor:

    mediaPlayerFullScreen.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
        @Override 
        public void onCompletion(MediaPlayer mp) { 
         mediaPlayerFullScreen.reset(); 
         try { 
          mediaPlayerFullScreen.setDataSource(path); 
         } catch (IOException e) { 
          e.printStackTrace(); 
         } 
         mediaPlayerFullScreen.setSurface(surf); 
         mediaPlayerFullScreen.prepareAsync(); 

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