How To Play Multiple Video In Different Video View In One Activity
Solution 1:
Play multiple videos is depends on hardware but if your device supports only one instance of media Player then you must call yourVideoView.stopPlayBack() for playing video in another videoview. you can resume video in first videoview by using its resume() method but after stop playing from second.
Solution 2:
Your device should support playing multiple videos also quality of videos (HD videos) which needs high end devices else it will throw error.
I tried this code it works with all nexus devices.
Solution 3:
According to this answer, it is very much possible to play multiple videos simultaneously, but it depends on the device and its hardware. The Android version doesn't seem to matter. I'd suggest you read his comments and code for a better understanding.
Solution 4:
See below code , here play 4 video's in different video view in one activity
main_activity.xml
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_weight="1.0"android:orientation="vertical"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context="ycrathi.com.multiplevideoplay.MainActivity"><VideoViewandroid:id="@+id/v1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="0.25" /><VideoViewandroid:id="@+id/v2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="0.25" /><VideoViewandroid:id="@+id/v3"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="0.25" /><VideoViewandroid:id="@+id/v4"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="0.25" /></LinearLayout>
MainActivity.java
package ycrathi.com.multiplevideoplay;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.VideoView;
publicclassMainActivityextendsAppCompatActivity {
@OverrideprotectedvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
VideoViewv1= (VideoView) findViewById(R.id.v1);
VideoViewv2= (VideoView) findViewById(R.id.v2);
VideoViewv3= (VideoView) findViewById(R.id.v3);
VideoViewv4= (VideoView) findViewById(R.id.v4);
v1.setVideoURI(Uri.parse("http://192.168.1.1/Video/vid5.mp4"));
v1.start();
v1.requestFocus();
v1.setKeepScreenOn(true);
v2.setVideoURI(Uri.parse("http://192.168.1.1/Video/vid5.mp4"));
v2.start();
v2.requestFocus();
v2.setKeepScreenOn(true);
v3.setVideoURI(Uri.parse("http://192.168.1.1/Video/vid5.mp4"));
v3.start();
v3.requestFocus();
v3.setKeepScreenOn(true);
v4.setVideoURI(Uri.parse("http://192.168.1.1/Video/vid5.mp4"));
v4.start();
v4.requestFocus();
v4.setKeepScreenOn(true);
}
}
AndroidMenifest.xml
<?xml version="1.0" encoding="utf-8"?><manifestxmlns:android="http://schemas.android.com/apk/res/android"package="ycrathi.com.multiplevideoplay"><uses-permissionandroid:name="android.permission.INTERNET"/><uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:supportsRtl="true"android:theme="@style/AppTheme"><activityandroid:name=".MainActivity"><intent-filter><actionandroid:name="android.intent.action.MAIN" /><categoryandroid:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>
Solution 5:
Here is the full answer for showing multiple video in one activity. Working in all device. I have used Surfaceview and Textureview for Playing Videos.
Activity:
publicclassReactionViewActivityextendsAppCompatActivity {
privatestatic final StringTAG = ReactionViewActivity.class.getSimpleName();
privateString mainVideo = "";
privateProgressBar progress_bar;
privateSurfaceView mSurfaceView;
privateTextureView mTextureView;
privateMediaPlayer mMediaPlayer, mMediaPlayer1;
@OverrideprotectedvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_reaction_view);
initView();
}
privatevoidinitView() {
progress_bar = findViewById(R.id.progress_bar);
mSurfaceView = findViewById(R.id.surface_view);
mTextureView = findViewById(R.id.textureView);
textureParams = (FrameLayout.LayoutParams) mTextureView.getLayoutParams();
surfaceParams = (FrameLayout.LayoutParams) mSurfaceView.getLayoutParams();
final String video = getIntent().getStringExtra("video");
mTextureView.setSurfaceTextureListener(newTextureView.SurfaceTextureListener() {
@OverridepublicvoidonSurfaceTextureAvailable(SurfaceTexture surfaceTexture, int i, int i1) {
Surface surface = newSurface(surfaceTexture);
try {
mMediaPlayer1 = newMediaPlayer();
mMediaPlayer1.setDataSource(video);
mMediaPlayer1.setSurface(surface);
mMediaPlayer1.setLooping(true);
mMediaPlayer1.prepareAsync();
// Play video when the media source is ready for playback.
mMediaPlayer1.setOnPreparedListener(newMediaPlayer.OnPreparedListener() {
@OverridepublicvoidonPrepared(MediaPlayer mediaPlayer) {
progress_bar.setVisibility(View.GONE);
mediaPlayer.start();
}
});
mMediaPlayer1.setAudioStreamType(AudioManager.STREAM_MUSIC);
} catch (IllegalArgumentException e) {
Log.d(TAG, e.getMessage());
} catch (SecurityException e) {
Log.d(TAG, e.getMessage());
} catch (IllegalStateException e) {
Log.d(TAG, e.getMessage());
} catch (IOException e) {
Log.d(TAG, e.getMessage());
}
}
@OverridepublicvoidonSurfaceTextureSizeChanged(SurfaceTexture surfaceTexture, int i, int i1) {
}
@OverridepublicbooleanonSurfaceTextureDestroyed(SurfaceTexture surfaceTexture) {
returnfalse;
}
@OverridepublicvoidonSurfaceTextureUpdated(SurfaceTexture surfaceTexture) {
}
});
if (Objects.requireNonNull(getIntent().getExtras()).containsKey("mainVideo")) {
mainVideo = getIntent().getStringExtra("mainVideo");
mSurfaceView.getHolder().addCallback(newSurfaceHolder.Callback() {
@OverridepublicvoidsurfaceCreated(SurfaceHolder surfaceHolder) {
mMediaPlayer = newMediaPlayer();
mMediaPlayer.setDisplay(surfaceHolder);
try {
mMediaPlayer.setDataSource(mainVideo);
mMediaPlayer.setLooping(true);
mMediaPlayer.prepare();
mMediaPlayer.setOnPreparedListener(newMediaPlayer.OnPreparedListener() {
@OverridepublicvoidonPrepared(MediaPlayer mediaPlayer) {
mMediaPlayer.start();
}
});
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
} catch (IOException e) {
e.printStackTrace();
}
}
@OverridepublicvoidsurfaceChanged(SurfaceHolder surfaceHolder, int i, int i1, int i2) {
}
@OverridepublicvoidsurfaceDestroyed(SurfaceHolder surfaceHolder) {
}
});
}
}
@OverridepublicvoidonBackPressed() {
releaseMediaPlayer();
finish();
}
@OverrideprotectedvoidonDestroy() {
super.onDestroy();
releaseMediaPlayer();
}
privatevoidreleaseMediaPlayer() {
if (mMediaPlayer != null) {
mMediaPlayer.release();
mMediaPlayer = null;
}
if (mMediaPlayer1 != null) {
mMediaPlayer1.release();
mMediaPlayer1 = null;
}
}
}
XML:
<?xml version="1.0" encoding="utf-8"?><RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".ReactionViewActivity"><FrameLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:background="@color/black"android:layout_below="@+id/rlTopbar"><TextureViewandroid:id="@+id/textureView"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_gravity="center" /><SurfaceViewandroid:id="@+id/surface_view"android:layout_width="110dp"android:layout_height="140dp"android:layout_gravity="right"android:layout_marginRight="@dimen/margin_20"android:layout_marginTop="@dimen/margin_20" /><ProgressBarandroid:id="@+id/progress_bar"android:layout_width="@dimen/margin_50"android:layout_height="@dimen/margin_50"android:layout_gravity="center"android:indeterminateDrawable="@drawable/custom_progress" /></FrameLayout></RelativeLayout>
Post a Comment for "How To Play Multiple Video In Different Video View In One Activity"