把 video 放在 apk 包中, 可以方便程序的安装,有两种读取的方法
video 文件放在 Prj_Dir/assets 下 ( Prj_Dir/assets/myvideo.mp4)
public class VideoActivity extends Activity { public final String TAG = "VideoActivity"; private final String VIDEO = "myvideo.mp4"; public boolean storeVideoFile() { try { InputStream is = getResources().getAssets().open(VIDEO); //注意,这里用 MODE_WORLD_READABLE 是因为播放Video的是MediaPlayer进程,不是本进程 //为了让, MediaPlayer进程能读取此文件,所以设置为: MODE_WORLD_READABLE FileOutputStream os = openFileOutput(VIDEO, MODE_WORLD_READABLE); byte[] buffer = new byte[1024]; while (is.read(buffer) > -1) { os.write(buffer); } is.close(); os.close(); } catch (Exception e) { e.printStackTrace(); return false; } return true; } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (!storeVideoFile()) return; VideoView videoView = new VideoView(this); setContentView(videoView); // videoView.setMediaController(new MediaController(this)); videoView.setVideoPath(getFilesDir().getAbsolutePath() + "/" + VIDEO); videoView.setOnPreparedListener(new OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { mp.setLooping(true); } }); videoView.start(); } }
这种方法,更加简洁, Video 文件放 Prj_dir/raw/ 下面
public class VideoActivity extends Activity { public final String TAG = "VideoActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Uri uri = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.myvideo); VideoView videoView = new VideoView(this); setContentView(videoView); videoView.setVideoURI(uri); Log.e(TAG, " uri is:" + uri); videoView.setOnPreparedListener(new OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { mp.setLooping(true); } }); videoView.start(); } }