android - Want to package a small video in the package for deployment -
is there way reference programmatically small video file adn include in teh package - i.e. don't want have separate on sd card. thinking of putting in 'raw' package directory.
e.g. mpeg4 called 'video' in 'raw'
am trying work out correct format uri.parse() has beaten me. thought should r.raw (as used when setting media player audio mymediaplayer = mediaplayer.create(this, r.raw.audiocameralive1) - doesn't seem be.
any suggestions
oliver
i see there have been number of views, in case looking solution, did - , seems work fine. there cleaner way of doing same but, 1 makes sense me ...
oliver
public class showvideoactivity extends activity implements surfaceholder.callback, onerrorlistener, onpreparedlistener, oncompletionlistener { /** called when activity first created. */ private mediaplayer mymediaplayer; boolean bolmediaplayerisreleased = false; // surfaceholder , surfaceview used display video // implementing surfaceholder.callback interface means have // implement surfacechanged(), surfacecreated() , surfacedestroyed() private surfaceview videosurface; private surfaceholder videoholder; display currentdisplay; @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.showvideo); // inflate showvideo // identify surface used hold camera image videosurface = (surfaceview)findviewbyid(r.id.videosurface); // surfaceholder 'monitors' activity on surface videoholder = videosurface.getholder(); videoholder.setkeepscreenon(true); // data pushed onto buffers external surface videoholder.settype(surfaceholder.surface_type_push_buffers); videoholder.setkeepscreenon(true); // let monitor know 'this' activity responsible // callback functions. videoholder.addcallback(this); // 'callbacks' further processing mymediaplayer = mediaplayer.create(this,r.raw.filename); mymediaplayer.setoncompletionlistener(this); mymediaplayer.setonerrorlistener(this); mymediaplayer.setonpreparedlistener(this); mymediaplayer.setoncompletionlistener(this); currentdisplay = getwindowmanager().getdefaultdisplay(); } // set listener wait mediaplayer end (is playbackcompleted()?) public void oncompletion(mediaplayer mp) { wrapup(mp); } public void surfacecreated(surfaceholder createdholder) { // surface created, possible set preview mymediaplayer.setdisplay(createdholder); } public void surfacedestroyed(surfaceholder destroyedholder) { if (mymediaplayer != null) { if (mymediaplayer.isplaying() ) mymediaplayer.stop(); mymediaplayer.release(); bolmediaplayerisreleased = true; } } public void surfacechanged(surfaceholder changedholder, int intformat, int intwidth, int intheight) { if (mymediaplayer.isplaying()) return; else { setvideosurfacesize(mymediaplayer); mymediaplayer.start(); } } public boolean onerror(mediaplayer mplayer, int interror, int intextra) { return false; } public void onprepared(mediaplayer mplayer) { setvideosurfacesize(mplayer); mplayer.start(); // 'started' mode, player can either 'stopped', 'paused' or playbackcompleted' } // end onprepared public void wrapup(mediaplayer mp) { if (mp != null) { if (mymediaplayer.isplaying() ) mp.stop(); mp.release(); bolmediaplayerisreleased = true; } // clean before terminating. essential // if cleanup not done surfacedestroyed called // , screw // firstly remove callback videoholder.removecallback(this); // prevents callbacks when surface destroyed showvideoactivity.this.finish(); } }
Comments
Post a Comment