2013-07-29 1 views
0

는 I/원자재가 잘 다음 코드를 사용하여 안드로이드를 사용하고 고해상도에서 영화를 재생하는 VideoView를 지켜 보면서이 있어요 :Videoview에서 애셋에서 비트 맵을로드하는 데 afer가 표시되지 않습니까?

public static void startVideo(String moviename) { 
    playingVideo = true; 
    final String name = moviename + "x264"; 
    instance.runOnUiThread(new Runnable() { 
     public void run() { 
      instance.mVideoView.bringToFront(); 
      instance.mVideoView.setVisibility(View.VISIBLE); 
      String uri = "android.resource://" + instance.getPackageName() 
        + "/raw/" + name; 
      instance.mVideoView.setVideoURI(Uri.parse(uri)); 
      instance.mVideoView.requestFocus(); 
      instance.mVideoView.start(); 
     } 
    }); 

그러나 나는 유효한 자산 이미지 내 활동의에서 onCreate 메소드 내에서 다음 함수를 호출하는 경우 인수로 파일 이름 (즉, "backdrop.jpg은"), 비디오보기가 더 이상 표시 할 것 같다 심지어 코드 여부의 결과 비트 맵을 사용하는 경우

public Bitmap getBitmapFromAsset(String strName) { 
    AssetManager assetManager = this.getAssets(); 
    InputStream is; 
    Bitmap bitmap = null; 
    try { 
     is = assetManager.open(strName); 
     bitmap = BitmapFactory.decodeStream(is); 
     is.close(); 
    } catch (IOException e) { 
     return null; 
    } 
    return bitmap; 
} 

그것은 중요하지 않습니다, 그것은 보인다 위의 함수를 호출하는 단순한 행위로 인해 비디오 플레이어가 나타나지 않는 것으로 보입니다. 단순히 함수를 호출하고 결과를 로컬 변수에 저장하는 것 외에는 아무것도 수행하지 않는 행을 주석 처리하면 videoview가 정상적으로 다시 표시되기 시작합니다.

또한, 다른 영향을받는 것 같습니다 ... 내 프로그램에서 GLSurfaceView를 사용하고 있습니다. 예를 들어 잘 보입니다.

나는 이것에 대해 매우 의아해하고 있습니다. 그리고 어떤 도움이 가장 감사 할 것입니다.

미리 감사드립니다.

답변

0

글쎄, 해결책을 찾았습니다 ... 무슨 일이 일어 났는지는 내 프로그램의 GLSurfaceView가 실제로 비디오 뷰를 오버레이하고 있다는 것이 었습니다. 왜 비디오를 최상위에 넣으려고했는지 모르겠지만 비디오를 재생하는 동안 GLSurfacview를 숨겨 두는 것이 합당하게 작동하는 것처럼 보입니다.