0

나는 비디오를 재생하기 위해 표면 뷰를 사용하고 있습니다. 사운드 및 비디오도 미디어 플레이어 seekto가 업데이트합니다. 하지만 롤리팝을 사용하면 검색 기능을 사용하려고 할 때 오디오 만 변경되지만 비디오는 동일한 위치에 있습니다. Lollipop이이 문제를 일으키는 이유는 누구나 도와 줄 수 있습니까?Mediaplayer Android Lollipop API 레벨 21에 대한 Seekbar가 업데이트되지 않습니다.

P. 롤리팝 이전 버전에서는 동일한 코드가 완벽하게 작동합니다. . 편집 : 동영상을 검색하는 동안 Facebook에서와 MX 플레이어에서도 동일한 동작을 관찰했습니다. 하지만 MX 플레이어에서 HW에서 SW 인코더로 바뀌면 잘 작동합니다. 내 코드에서이를 고치는 방법?

@Override 
public void onProgressChanged(SeekBar bar, int progress, boolean fromuser) { 
    long duration = mPlayer.getDuration(); 
    long newposition = (duration * progress)/1000L; 
    mPlayer.seekTo((int) newposition); 
    Log.d(TAG, "progress changed"); 
    // mPlayer.setDisplay(); 
    // mPlayer.start(); 
} 

조각 :

vidSurface = (SurfaceView) getActivity().findViewById(R.id.surfView); 
    frame = (FrameLayout) getActivity().findViewById(
      R.id.videoSurfaceContainer); 
    vidHolder = vidSurface.getHolder(); 
    vidHolder.addCallback(this); 
    mediaPlayer = new MediaPlayer(); 
    mediaPlayer.setOnErrorListener(this); 
    mediaPlayer.setOnPreparedListener(this); 
    mediaPlayer.setOnCompletionListener(this); 
    mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 

@Override 
public void surfaceCreated(SurfaceHolder holder) { 
    if (mediaPlayer == null) 
     mediaPlayer = new MediaPlayer(); 

    playVideo(); 

} 


public void playVideo() { 

    mediaPlayer.reset(); 
    mediaPlayer.setDisplay(vidHolder); 
    VideosModel model = null; 

     model = videosList.get(videoPosition); 


    videoTitle = model.getVideoTitle(); 
    tvTitle.setText(videoTitle); 

    try { 
     // mediaPlayer.setDisplay(vidHolder); 
     mediaPlayer 
       .setDataSource(getActivity(), Uri.parse(model.getPath())); 
     tryToGetAudioFocus(); 
     mediaPlayer.prepareAsync(); 

    } catch (IllegalArgumentException e) { 
     e.printStackTrace(); 
    } catch (SecurityException e) { 
     e.printStackTrace(); 
    } catch (IllegalStateException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

} 
+0

http://stackoverflow.com/questions/27122394/android-mediaextractor-mediacodec-seek는 비슷하게 들리지만 저수준 API를 사용하고있었습니다. – fadden

+0

도움이되지 못했습니다. ( – RisingUp

+0

누군가가 해결책을 제안 할 수 있다면 – RisingUp

답변

0

개발자 옵션에서 뉴 플레이어를 사용하지 않도록 설정하여이 문제를 해결했다. 모든 것이 이제는 잘됩니다.

관련 문제