پخش ویدیو با کلاس های videoView و MediaController در کاتلین اندروید ، عنوان مطلبی است که قصد داریم در این لحظه از تجاری اپ آن را به شما کاربران و همراهان عزیز آموزش دهیم.در ادامه با ما همراه باشید…
ساده ترین راه برای نمایش ویدیو در برنامه اندروید استفاده از کلاس videoView است.کلاس videoView یک ویژوال کامپوننت است که به لایوت و اکتیویتی اضافه میشود و قابلیت پخش ویدیو را فراهم میکند.در حال حاضر اندروید از فرمت های ویدیویی زیر پشتیبانی میکن :
کلاس videoView برای مدیریت پخش یک ویدیو دارای متدهای زیر می باشد که به شرح هر کدام میپردازیم.
اگر یک پلیر از یک کلاس videoView برای پخش ویدئو به تنهایی استفاده کند.کاربر هیچ کنترلی برای مدیریت پخش تا پایان ویدئو نخواهد داشت. که ما برای حل این مشکل یک نمونه از کلاس MediaController را به کلاس ویدیو ویو متصل میکنیم و با این کار کلاس MediaController مجموعه ای از کنترلر های پخش برای مدیریت ویدئو اعم از دکمه توقف ، دکمه مکث ، دکمه پخش ، دکمه جلو بردن فیلم و دکمه به عقب بردن فیلم را برای کاربر فراهم میکند.
کنترلر ها به صورت خودکار در هنگام پخش از دید کاربر و بر روی ویدئو مخفی میشوند و کاربر برای مدیریت آنها میتواند دوباره آنها رو نمایان کند.
در ادامه آموزش ما یک پلیر پخش فیلم را در قالب یک مثال کاربردی با استفاده از کلاس های VideoView و MediaController توضیح داده ایم که توانایی پخش فیلم از یک لینک در سرور را دارد.
یک پروژه جدید در اندروید استدیو ایجاد کنید و طبق تصاویر زیر آن را تنظیم نمایید.
رابط کاربری برای mainActivity از یک نمونه از کلاس ویدیو ویو تشکیل شده است.
که میتونید برای ویرایش کردن رابط کاربری مسیر زیر را در اندروید استدیو طی کنید
app -> res -> layout -> activity_video_player.xml
سپس روی activity_video_player.xml دو بار کلیک کنید تا حالت دیزاین آن نمایان شود و ویجت TextView پیش فرض را حذف کنید.
از بخش Palette panel به تب ویجت ها رفته و یک نمونه videoView را روی صفحه طراحی بکشید.
طبق تصویر زیر آن را تنظیم کنید
و کدهای xml را به صورت زیر تغییر دهید :
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.ebookfrenzy.videoplayer.VideoPlayerActivity" tools:layout_editor_absoluteX="0dp" tools:layout_editor_absoluteY="81dp"> <VideoView android:id="@+id/videoView1" android:layout_width="0dp" android:layout_height="wrap_content" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" /> </android.support.constraint.ConstraintLayout>
package com. tejariapp.video_player import android.support.v7.app.AppCompatActivity import android.os.Bundle import kotlinx.android.synthetic.main.activity_video_player.* class VideoPlayerActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_video_player) configureVideoView() } private fun configureVideoView() { videoView1.setVideoPath( "https://www.tejariapp.com/android_book/movie.mp4") videoView1.start() } }
کلاس بالا لینک فیلم را دریافت میکند و آن را در ویدئو ویو پخش میکند.
ما برای دریافت فیلم از سایت و پخش آن در پلیر یا ویدیو ویو نیاز به مجوز دسترسی به اینترنت داریم برای این کار باید به AndroidManifest.xml برویم و دسترسی اینترنت را به آن اضافه کنیم طبق نمونه زیر :
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.tejariapp.video_player" > <uses-permission android:name="android.permission.INTERNET" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme" > . . . </manifest>
تا اینجا کار با کلاس VideoView برای پخش فیلم به پایان رسید و شما میتوانید پروژه را در شبیه ساز اندرویدی یا دستگاه اندرویدی خود اجرا کنید. و نتیجه را ببینید.
تا اینجا ما از کلاس videoView استفاده کرده ایم ،در ادامه به چگونگی افزودن ابزارهای کنترل فیلم به پلیر میپردازیم.
package com.tejariapp.video_player import android.support.v7.app.AppCompatActivity import android.os.Bundle import android.widget.MediaController import kotlinx.android.synthetic.main.activity_video_player.* class VideoPlayerActivity : AppCompatActivity() { private var mediaController: MediaController? = null . . private fun configureVideoView() { videoView1.setVideoPath( "https://www.tejariapp.com/android_book/movie.mp4") mediaController = MediaController(this) mediaController?.setAnchorView(videoView1) videoView1.setMediaController(mediaController) videoView1.start() } }
با اعمال تغییرات بالا و اجرا کردن مجدد برنامه در شبیه ساز و با لمس ویدیو پلیر ابزارهای کنترل همانند تصویر زیر ظاهر میشود
در این متد مدت زمان فیلم و همچنین دانلود و پیکر بندی فیلم را در Android Studio Logcat نمایش میدهیم.
package com.tejariapp.videoplayer import android.support.v7.app.AppCompatActivity import android.os.Bundle import android.widget.MediaController import android.util.Log import kotlinx.android. synthetic.main.activity_video_player.* class VideoPlayerActivity : AppCompatActivity() { private var TAG = "VideoPlayer" . . private fun configureVideoView() { videoView1.setVideoPath( "https://www.tejariapp.com/android_book/movie.mp4") mediaController = MediaController(this) mediaController.setAnchorView(videoView1) videoView1.setMediaController(mediaController) videoView1.setOnPreparedListener { mp -> mp.isLooping = true Log.i(TAG, "Duration = " + videoView1.duration) } videoView1.start() } }
و در نهایت پروژه را اجرا میکنیم.
و قبل از شروع پخش فیلم در Android Studio Logcat خروجی زیر را میتوانیم ببینیم.
۱۱-۰۵ ۱۰:۲۷:۵۲٫۲۵۶ ۱۲۵۴۲-۱۲۵۴۲/com. tejariapp.video_player I/VideoPlayer: Duration = ۶۸۷۴
2 Comments
سلام و عرض خسته نباشید.
میخوام یه اپلیکیشن بسازم که بیاد چندتا فیلم کوتاه رو از یک پوشه در سرور دانلود کنه و پشت سر هم هر کدوم از این فیلم ها رو در اپ به صورت خودکار نمایش بده و بعد از اتمام هر ویدئو به صورت خودکار ویدئوی بعدی رو نمایش بده.ممنون میشم اگه راهنمایی کنید.مرسی
با سلام
دوست عزیز خواسته شما به گونه ای نیست که با یک کامنت به آن پاسخ داده شود.در صورتی که تمایل داشته باشید کارتون توسط تیم برنامه نویسی ما انجام شود از طریق فرم سفارش پروژه ،جهت سفارش پروژه یا خواسته خود اقدام نمایید.
همچنین اگر عجله ای برای انجام کار خود نداشته باشید در ماه آینده در این باره یک آموزش در وب سایت قرار خواهیم داد.
با احترام