Reputation:
I am trying to play a video in my app. It has to be embedded.
I went through the "Play Video Files in Android" thread.
I am able to play my video using VideoView as mentioned in this discussion. But there are a few problems.
I need full screen video, how do I stretch VideoView to full screen? Will that stretch the video too?
I don't need the default play/forward/stop buttons at all. Basically I need continuous loop playing of the video.
I tried the MediaPlayer class as in here, but it never worked. What should the string format look like if I have my video file in res/raw directory? I really don't want the video file played from sdcard. How can it be bundled along with the app?
If any of these two approaches work, I will be better off.
This is my code:
videoHolder = new VideoView(this);
// videoHolder = (VideoView)findViewById(R.id.videoview);
LayoutParams params = new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
videoHolder.setLayoutParams(params);
videoHolder.setMediaController(new MediaController(this));
setContentView(videoHolder);
//
//
//// I tested and found that it works fine for .wmv, .3gp and .mp4
//// videoHolder.setVideoURI(Uri.parse("file:///sdcard/video.3gp"));
videoHolder.setVideoURI(Uri.parse("res/raw/demo.3gp"));
videoHolder.requestFocus();
videoHolder.start();
Strangely the commented url works (the one with sdcard). The other one does not work. I have tried many combinations from "file:// res/raw/demo.3gp" to only "demo".
What would be the correct string to access the file?
Upvotes: 18
Views: 51193
Reputation: 13815
No need to do any coding for playing video to full screen mode
Apply the following layout format over the xml containing the videoview it will for sure will play the video in full screen mode. as it is running mine.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<VideoView android:id="@+id/myvideoview"
android:layout_width="fill_parent"
android:layout_alignParentRight="true"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_alignParentBottom="true"
android:layout_height="fill_parent">
</VideoView>
</RelativeLayout>
Plus adding the mediacontroller will also give you the controller to use.
Upvotes: 50
Reputation: 101
Modified @Javanator's answer a bit, this won't stretch the video:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<VideoView android:id="@+id/myvideoview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true">
</VideoView>
</RelativeLayout>
Hope this helps someone :)
Upvotes: 4
Reputation: 10623
If you want to play video in full screen, then just add these line of code in your Androidmanifest.xml file, in the activity where this video is going to play. Just add these two lines in android manifest file.
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:configChanges="orientation|screenSize"
Like in my androidmanifest.xml file i have added it
<activity
android:name="com.appliconic.straminglivevideo.MainActivity"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:configChanges="orientation|screenSize"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Upvotes: 4
Reputation: 819
I know this thread is a few weeks old, but you don't have to copy the video file to the SD card just to play it. Use the following but insert your package name instead of "com.yourcompany.yourproject":
videoView.setVideoURI(Uri.parse("android.resource://com.yourcompay.yourproject/" + R.raw.yourvideoresource));
Upvotes: 6
Reputation: 81
I have solved the problem:
1.
To remove the continue/pause buttons remove the media controller. For the looping issue
put OnCompletionListener
so that when the video reaches the end, it starts again:
videoView.setOnCompletionListener(
new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
videoView.start();
}
});
2.
To resize the video, override method onMeasure()
in VideoView
like this:
public class MyVideoView extends VideoView {
public MyVideoView(Context context) {
super(context);
}
@Override
protected void onMeasure (int widthMeasureSpec, int heightMeasureSpec)
{
setMeasuredDimension(480,800);
}
}
Upvotes: 8