import android.app.Activity; import android.net.Uri; import android.os.Bundle; import android.widget.MediaController; public class CustomVideoViewTest extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); CVView = (CustomVideoView)findViewById(R.id.VideoView); MediaController controller = new MediaController(this); CVView.setMediaController(controller); //CVView.setVideoPath("android.resource://com.android/"+R.raw.video); //播放Local端的影音資源 , SD Card or res/raw 裡的影音檔 CVView.setVideoURI(Uri.parse("http://www.dubblogs.cc:8751/Android/Test/Media/mp4/test.mp4")); //播放遠端的影音資源 , 影音串流 CVView.requestFocus(); CVView.start(); } CustomVideoView CVView; }
另外應用程式要連接網路需要加上
android:name="android.permission.INTERNET : Allows applications to open network sockets
執行結果如下
另外關於VideoView大小的問題
android:name="android.permission.INTERNET : Allows applications to open network sockets
執行結果如下
另外關於VideoView大小的問題
可以看到VideoView的寬和高屬性都已經設為"fill_parent"了 , 但事實上執行的結果並不會填滿整個parent layout , 如果想更改大小的話目前比較簡單的方法是寬設為"xxdip"來解決 , 不過只有更改寬的dip才會起作用 , 高的部分怎麼改都一樣 , 應該是有更好的方法來修改VideoView的寬和高。在網路上看到一篇文章有解決這個問題 , 照他的方法做程式碼如下
import android.content.Context; import android.util.AttributeSet; import android.util.Log; import android.widget.VideoView; public class CustomVideoView extends VideoView { public CustomVideoView(Context context) { super(context); // TODO Auto-generated constructor stub Log.d("Go to", "Context context"); } public CustomVideoView(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub mVideoWidth = 0; mVideoHeight = 0; Log.d("Go to", "Context context, AttributeSet attrs"); } //可以發現進入的是CustomVideoView(Context context, AttributeSet attrs)這個建構子 //所以留著覆寫他 , 否則程式會強制關閉 public void onMeasure (int widthMeasureSpec, int heightMeasureSpec) { int width = getDefaultSize(mVideoWidth, widthMeasureSpec); int height = getDefaultSize(mVideoHeight, heightMeasureSpec); setMeasuredDimension(width,height); } private int mVideoWidth; private int mVideoHeight; }
設置videoview大小code看不懂...
回覆刪除怎麼讀取檔案來源???
1.單純使用xml檔案裡的 layout_height="fill_parent"是無法達到全螢幕的 , 所以要 override onMeasure(int,int)這個method來改變VideoView的大小達到全螢幕的效果 , 因為想分別取得xml檔案裡我們長和寬設定的layout寬和高所以使用 getDefaultSize()來獲取 ,當然你也可以在程式中取得螢幕的寬和高來設定 , 最後記得使用setMeasuredDimension(width,height)來儲存 , 所以能不能改變View的大小一切的關鍵都在onMeasure(int,int)method 中 使用setMeasuredDimension(width,height)。
刪除2.檔案來源是網路上的 Video file , 設定媒體來源的code在這行
刪除CVView.setVideoURI(Uri.parse("http://www.dubblogs.cc:8751/Android/Test/Media/mp4/test.mp4"));
不播放耶 連開啟程式都有問題
回覆刪除請問如果我的影片700mb 放在遠端 然後我要邊讀取然後邊播放 這樣要怎麼實現
回覆刪除不好意思 我想請問一下 在模擬器是可以播放影片
回覆刪除但為什麼在手機上就不能??
會跳出無法撥放檔案的訊息
手機版本是4.0的
謝謝