آموزش ایجاد Videoview در برنامه نویسی اندروید
سلام دوستان در این سری از آموزش های برنامه نویسی اندروید به آموزش ایجاد Videoview در برنامه نویسی اندروید می پردازیم. بعضی ها می گویند که فقط ویدیو هایی با فرمت 3gp قابل اجرا در videoview هستند بلکه این طور نیست و فرمت mp4 نیز پشتیبانی می شود.در ادامه با ما همراه باشید. برای این کار ابتدا ما باید فایل layout خود را باز (activity-main.xml) و کد زیر را در آن قرار دهیم.
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center" >
<VideoView
android:id="@+id/video_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"/>
</FrameLayout>
فایل Mainactivity.java را باز کرده کد های زیر را در آن قرار دهید.
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.res.Configuration;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnPreparedListener;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.widget.MediaController;
import android.widget.VideoView;
public class AndroidVideoViewExample extends Activity {
private VideoView myVideoView;
private int position = 0;
private ProgressDialog progressDialog;
private MediaController mediaControls;
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//set the media controller buttons
if (mediaControls == null) {
mediaControls = new MediaController(AndroidVideoViewExample.this);
}
//initialize the VideoView
myVideoView = (VideoView) findViewById(R.id.video_view);
// create a progress bar while the video file is loading
progressDialog = new ProgressDialog(MainActivity.this);
// set a title for the progress bar
progressDialog.setTitle("Android Video View Example Programchi.ir");
progressDialog.setMessage("Loading...");
progressDialog.setCancelable(false);
progressDialog.show();
try {
//set the media controller in the VideoView
myVideoView.setMediaController(mediaControls);
//set the uri of the video to be played
myVideoView.setVideoURI(Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.kitkat));
} catch (Exception e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
myVideoView.requestFocus();
//we also set an setOnPreparedListener in order to know when the video file is ready for playback
myVideoView.setOnPreparedListener(new OnPreparedListener() {
public void onPrepared(MediaPlayer mediaPlayer) {
// close the progress bar and play the video
progressDialog.dismiss();
//if we have a position on savedInstanceState, the video playback should start from here
myVideoView.seekTo(position);
if (position == 0) {
myVideoView.start();
} else {
//if we come from a resumed activity, video playback will be paused
myVideoView.pause();
}
}
});
}
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
//we use onSaveInstanceState in order to store the video playback position for orientation change
savedInstanceState.putInt("Position", myVideoView.getCurrentPosition());
myVideoView.pause();
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
position = savedInstanceState.getInt("Position");
myVideoView.seekTo(position);
}
}
ما در ابتدا videview را پیدا می کنیم سپس یک progressDailog ایجاد می کنیم (قبل تر آموزش ProgressDialog را قرار داده بودیم کافی است سرچ کنید) ما دو تا void داریم که دو کار انجام می دهند اولی onSaveInstanceState مقدار ویدیویی که نمایش داده شده است را ذخیره می کند تا در صورت خروج از آن بتوانیم دوباره از ادامه آن ویدیو رو ببینیم و onRestoreInstanceState مقدار زمانی video را بر می گرداند برای نمایش ادامه ویدیو و setOnPreparedListener این listener بررسی می کند که چه زمانی ویدیو برای نمایش آماده شده است.
و برای اینکه مسیر ویدیو رو تنظیم کنیم از setVideoURI استفاده می کنیم برای اینکه از توی خود برنامه ویدیو اجرا شود شما باید یک فولدر به نام raw ایجاد کنید و فیلم خود را در آن قرار دهید سپس مسیر آن را همانند بالا تنظیم کنید و MediaController دکمه های است که برای ویدیو ما نمایش داده می شود(دکمه بعدی قبلی و pause ).
حالا به بخش AndroidManifest بروید و آن جایی که اکتیویتی را ایجاد می کند (همون اکتیویتی که videoview را در آن قرار دادید) خط زیر را به آن اضافه کنید.
android:configChanges="orientation">
به شکل زیر می شود.
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name">
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:configChanges="orientation">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
این آموزش هم به پایان رسید امیدوارم مفید بوده باشد.
موفق باشید.
آموزش برنامه نویسی اندروید |
سلام
اگه امکانش هست آموزش پخش به صورت استریم رو هم قرار بدید
سلام قبلا قرار گرفته است از لینک زیر استفاده کنید
https://orjinakteb.com/tag/stream-%DA%A9%D8%B1%D8%AF%D9%86-%D9%88%DB%8C%D8%AF%DB%8C%D9%88-%D8%A7%D8%B2-url/
موفق باشید.
سلام خسته نباشید
ببینید من یک ویدیو دارم که سه تا لیوان داخلش هست و زیر یکی از لیوان ها یک توپ گذاشته میشه
اول هم نشون میده توپ زیر کدوم لیوان هستش بعد اون سه تا لیوان و میچرخونه بعد ما باید بگیم توپ تو کدوم لیوان.حالا این کارو میخوام یک اپلیکیشن واسم انجام بده ینی بگه توپ کجاست.
حالا چجوری باید با استفاده از ویدیو ویو اندروید استدیو چنین کاری رو بکنم؟؟؟
ممنونم اگه جواب بدین
سلام و درود با videoview همچین چیزی اصلا نمیشه فکر می کنم شما به تازگی برنامه نویسی شروع کردین چون برای همچین کاری باید یک view سفارشی طراحی کنید یا اینکه به صورت یک فایل gif تمامی حالت ها را ایجاد کنید و با استفاده از شرط آنها را نمایش دهید.
موفق باشید.
سلام داداش اگه بخایم videoview بصورت انلاین در aide باشه یعنی فیلم توبرنامه با uri پخش شه چه کدی بنویسیم؟
فرقی نمیکنه
وقت بخیر
ممنون میشم راهنمایی کنید چطوری کد بزنم که آهنگ و یا ویدئو های دیگه ای که داخل حافظه گوشی و یا کارت حافظه هستن خونده بشن، منظورم اینه آهنگها از قبل تو پوشه raw نندازم
و یا آدرس سرور آنلاین بهش ندم
امیدوارم درست توضیح داده باشم ?
یعنی اپلیکیشن بر روی هر گوشی نصب شد، بره و تمامی آهنگ ها و یا ویدئو ها رو خودش پیدا کنه و پخش کنه