می خواهیم با استفاده از کلاس MediaPlayer ، ویدئوهای اینترنتی را در اپلیکیشنمان نمایش دهیم.
- نفیسه افقی 5 سال قبل سوال کرد
- آخرین ویرایش 5 سال قبل
- شما باید برای ارسال دیدگاه وارد شوید
<<برای انجام همین کار با استفاده از کلاس VideoView، به این پست مراجعه کنید>>
یکی از روش های جایگزین برای نمایش زنده ویدئو ها از اینترنت، استفاده از کلاس MediaPlayer
است.
مرحله اول
می توانید فایل های رسانه ای، از جمله ویدئو را، از طریق SufraceView
نمایش دهید. بطور مثال، می توانید از layout زیر استفاده کنید.
<RelativeLayout xmlns: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:background="#000000"
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=".MainActivity" >
<SurfaceView
android:id="@+id/surfView"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</RelativeLayout>
داخل اکتیویتی، از SurfaceView
استفاده خواهیم کرد.
مرحله دوم
به کلاس اکتیویتی خود، این اینترفیس ها را اضافه کنید.
public class MainActivity extends Activity implements SurfaceHolder.Callback, OnPreparedListener
حالا اندروید استودیو (یا هر ide که از آن استفاده می کنید) اخطار می دهد که باید توابع زیر را پیاده سازی کنید:
@Override
public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) {
// TODO Auto-generated method stub
}
@Override
public void surfaceCreated(SurfaceHolder arg0) {
//setup
}
@Override
public void surfaceDestroyed(SurfaceHolder arg0) {
// TODO Auto-generated method stub
}
@Override
public void onPrepared(MediaPlayer mp) {
//start playback
}
ما کدهایی به توابع surfaceCreated
و onPrepared
اضافه می کنیم.
مرحله سوم
حالا متغیرهای زیر را به کلاس اکتیویتی اضافه کنید:
private MediaPlayer mediaPlayer;
private SurfaceHolder vidHolder;
private SurfaceView vidSurface;
String vidAddress = "https://archive.org/download/ksnn_compilation_master_the_internet/ksnn_compilation_master_the_internet_512kb.mp4";
در تابع onCreate
اکتیویتی، از SurfaceView
استفاده می کنیم و متغیرهای بالا را مقداردهی می کنیم.
vidSurface = (SurfaceView) findViewById(R.id.surfView);
vidHolder = vidSurface.getHolder();
vidHolder.addCallback(this);
مرحله چهارم
در تابع surfaceCreated
، منابع مورد نیاز را تنظیم می کنیم (آدرس ویدئو و غیره):
try {
mediaPlayer = new MediaPlayer();
mediaPlayer.setDisplay(vidHolder);
mediaPlayer.setDataSource(vidAddress);
mediaPlayer.prepare();
mediaPlayer.setOnPreparedListener(this);
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
}
catch(Exception e){
e.printStackTrace();
}
در نهایت، در تابع onPrepared
، ویدئو را پلی می کنیم:
mediaPlayer.start();
- نفیسه افقی 5 سال قبل پاسخ داد
- آخرین ویرایش 5 سال قبل
- شما باید برای ارسال دیدگاه وارد شوید