آموزش ایجاد Videoview در برنامه نویسی اندروید
سلام دوستان در این سری از آموزش های برنامه نویسی اندروید به آموزش ایجاد Videoview در برنامه نویسی اندروید می پردازیم. بعضی ها می گویند که فقط ویدیو هایی با فرمت 3gp قابل اجرا در videoview هستند بلکه این طور نیست و فرمت mp4 نیز پشتیبانی می شود.در ادامه با ما همراه باشید. برای این کار ابتدا ما باید فایل layout خود را باز (activity-main.xml) و کد زیر را در آن قرار دهیم.
1 2 3 4 5 6 7 8 9 10 11 | <?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 را باز کرده کد های زیر را در آن قرار دهید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | 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 را در آن قرار دادید) خط زیر را به آن اضافه کنید.
1 | android:configChanges="orientation"> |
به شکل زیر می شود.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <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://programchi.ir/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 نندازم
و یا آدرس سرور آنلاین بهش ندم
امیدوارم درست توضیح داده باشم ?
یعنی اپلیکیشن بر روی هر گوشی نصب شد، بره و تمامی آهنگ ها و یا ویدئو ها رو خودش پیدا کنه و پخش کنه