2012-07-15 105 views
1

我試圖使用Android的VideoView在我的設備上播放SD卡文件夾中的視頻。它似乎像過去一樣工作得很好,但我重構了一些代碼,現在我似乎無法得到它的工作。以下是一個示例:Android VideoView SD卡無法正常工作

// filepath = Environment.getExternalStorageDirectory().getPath() + "/test.mp4" 
videoView = new VideoView(AkadiApplication.Instance().getApplicationContext()); 
videoView.setVideoURI(Uri.parse(filePath)); 
videoView.start(); 
videoView.requestFocus(); 

我已通過應用程序驗證過該文件是否存在,因此我知道這不是FileNotFound問題。另外,如果我設置了一個onComplete回調函數,就好像視頻播放過程一樣(沒有視頻或聲音,只是視圖應該是黑色的方塊)。我知道視頻編解碼器是有效的,因爲該設備在我的應用程序之外播放它。我認爲這可能與權限問題:

http://code.google.com/p/android/issues/detail?id=10197

+0

這是什麼碼代替?嘗試改變你的構造函數是'videoView = new VideoView(AkadiApplication.this);'你又如何將videoView添加到屏幕上?只用你發佈的代碼,我看不出VideoView甚至會被添加到屏幕上。 – FoamyGuy 2012-07-15 23:47:54

+0

對不起,我應該解釋一下AkadiApplication是什麼,它是應用程序的單例。無論我在哪裏,它都可以訪問上下文。該代碼位於應該返回View的函數中,在這種情況下,它是一個已經初始化並正在播放的VideoView。沒有包含VideoView的佈局文件,我將所有內容都以編程方式添加到Activity中。 – dlee123 2012-07-16 13:55:28

回答

0

在layout.xml文件

<VideoView android:id="@+id/video_view" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent"> 
</VideoView> 

創建VideoView然後在Java文件

VideoView mVideoView = (VideoView) findViewById(R.id.video_view); 
mVideoView.setVideoURI(uri); 
mVideoView.requestFocus(); 
mVideoView.start();