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的
謝謝