آموزش اندروید استودیوآموزش های برنامه نویسی اندروید
آموزش برنامه نویسی اندروید با اندروید استودیو (بخش سی و ششم: کار با VideoView در اندروید)
بعضی اوقات پیش می آید که بخواهیم در قسمتی از برنامه ای که میسازیم، نمایش ویدیو داشته باشیم. برای این منظور قسمتی از لایه برنامه را به محل پخش ویدیو اختصاص می دهیم.
توجه داشته باشید که ما در این آموزش می خواهیم پخش ویدیو در اپلیکیشن اندرویدی به صورت آفلاین را آموزش دهیم. زیرا نحوه پخش ویدیو به صورت آنلاین تفاوتهایی با پخش ویدیو به صورت آفلاین دارد. و پخش آفلاین ویدیویی را نیز بعدا آموزش خواهیم داد.
در قسمت Properties از ابزار VideoView که به لایه اپلیکیشن کشیدیم، مقدار layout_width را fill_parent می گذاریم تا عرض صفحه را بپوشاند. مقدار layout_height را نیز، wrap_content میگذاریم تا VideoView ارتفاع خودش را با فایل ویدیویی ما هماهنگ کند.
کد VideoView
<VideoView android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/videoView" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:layout_marginBottom="60dp" />
به سراغ کدنویسی جاوای برنامه می رویم. فایل MainActivity.xml را باز کرده و طبق مراحل زیر پیش می رویم.
در این قسمت، فایل ویدیویی که می خواهیم پخش شود را در یکی پوشه های پروژه برنامه می ریزیم. برای این کار باید فایل ویدیویی را در پوشه Raw کپی کنیم. در قسمت پخش صوت، از آموزش های اندروید چگونگی آن توضیح داده شد ولی برای راحتی شما، در اینجا نیز همان توضیحات را می دهیم. (مراحل زیر) :
قبلا گفته شد که پوشه Res پوشه منابع ما است و عکس ها و فایل های ما برای استفاده در برنامه در این پوشه قرار می گیرد. پس باید یک پوشه جدید به نام Raw در پوشه Res ایجاد کنیم.
برای این کار طبق عکس، بر روی پوشه Res کلیک راست کرده و سپس از قسمت New، بر روی Android Resource Directory کلیک می کنیم.
ویدیویی که من کپی کردم، نامش Myvideo.mp4 است که مشاهده می کنید در پوشه Raw اضافه شده است.
اولین باری که من به همین صورت ادامه دادم. برای همین خواستم در اینجا نیز با همین اشتباه پیش برم تا شما یاد بگیرد.
اگر از اینجا به بعد با نام بالا پیش بروید، با خطا مواجه می شوید. ولی چرا؟
چون که من اولین بار فایل خودم را با حروف بزرگ مثل My که در بالا نوشته بودم، نوشتم. پس در برنامه نویسی اندروید فایل ها در منابع نباید با حروف بزرگ باشند.
در بخش منابع آموزش های اندروید نیز به این نکته اشاره شد.
اسم فایل را به myvideo.mp4 تغییر میدهم.
ابزار VideoView را که در بخش لایه اپلیکیشن، اضافه کرده بودیم در این قسمت معرفی می کنیم. و نام متغیر آن را Video می گذاریم.
VideoView Video = (VideoView) findViewById(R.id.videoView);
برای ابزار VideoView باید کلاس VideoView به برنامه، Import شود:
import android.widget.VideoView;
برای پخش ویدیو، اول ویدیو باید بافر شود. بافر در اینجا یعنی قسمتی از ویدیو زودتر در حافظه اصلی دستگاه ما قرار می گیرد و آماده پخش می شود، تا در زمان مناسب پخش شود. اگر از سایتهایی مثل یوتوب و یا آپارت ویدیو به صورت آنلاین نگاه کنید، متوجه می شوید که نوار ویدیویی، نیمه پررنگی، جلوتر می رود. در آنجا بافر یعنی تا آن قسمت از ویدیو، از اینترنت به حافظه ما منتقل شده است و در صورت قطع اینترنت نیز شما تا آن قسمتی که بافر شده است را می توانید مشاهده کنید.
در این جا زیاد لازم نیست وارد این جزئیات شویم، این توضیحات فقط برای این بود که بگوییم ما در این پروژه، به یک رشته احتیاج داریم تا کار بافر را برای ما انجام دهد و ویدیوی ما در آن رشته ذخیره شود. و سپس از همان رشته، VideoView ویدیوی ما را پخش کند.
متغیر Buffer را از نوع String معرفی می کنیم. برای این کار، کد زیر را می نویسیم:
String Buffer = "android.resource://com.gsm_developers.videoview_gsm/"+R.raw.myvideo;
توجه داشته باشید در کد بالا مقدار android.resource، در واقع محل فایل ویدیویی ما است. که اول این آدرس، نام پکیج و سپس محل قرار گیری فایل ویدیویی ما در پروژه می باشد.
“android.resource:// نام پکیج /”R.محل فایل ما در پروژه
در اینجا نام پکیج، com.gsm_developers.videoview_gsm می باشد. (نام پکیج را می توانید در اولین خط از فایل جاوا MainActivity.java مشاهده نمایید.)
محل فایل ما نیز در پوشه Raw و اسم آن myvideo است. که می شود: R.raw.myvideo
در مرحله بعد، یک متغیر از نوع Uri را معرفی می کنم تا اطلاعات را از رشته بگیرد. این اطلاعات جهت پخش، به VideoView فرستاده می شود.
Uri uri = Uri.parse(Buffer);
حال باید Uri ما که در مرحله قبل آن را معرفی کردیم، توسط VideoURI ست شود.
Video.setVideoURI(uri);
کد زیر نیز، ویدیو شما را پخش می کند.
Video.start();
کد کامل MainActivity
package com.gsm_developers.videoview_gsm; import android.net.Uri; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.VideoView; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); VideoView Video = (VideoView) findViewById(R.id.videoView); String Buffer = "android.resource://com.gsm_developers.videoview_gsm/"+R.raw.myvideo; Uri uri = Uri.parse(Buffer); Video.setVideoURI(uri); Video.start(); } }
باسلام
ممنون از پست خوبتون.
ممنون از شما . نظرات شما باعث دلگرمی ماست
سلام
من میخوام یه ویدیوی 5 ثانیه ای بدون داشتن دکمه های کنترل پشت سر هم تکرار بشه. باید چه کدی اضافه کنم؟
ممنون
سلام متاسفانه برنامه نویس سایت نیستن شرمنده دوست عزیز
سلام
من به همین صورت که گفتید برنامه را نوشتم ولی فقط صدادارد ولی تصویری نمیاد
سلام متاسفانه برنامه نویس سایت فعلا فعالیت ندارند
سلام ببخشید من قسمت اول این آموش برنامه نویسی اندروید رو میخوام چیکار کنم!؟؟
سلام متاسفانه برنامه نویس سایت فعلا فعالیت ندارند