آموزش پخش استریم ویدیو از سرور در اندروید
در این آموزش، ما قصد داریم به شما نحوه استریم ویدئو از راه دور یا سرور را، با استفاده از MediaController و نمایش آن توسط VideoView در برنامه Android آموزش دهیم. MediaController یک کنترل کننده برای مدیا پلیر محسوب می شودکه دارای متدهای همانند پخش / مکث، عقب، سریع به جلو و نوار لغزنده است. فیلم ها را می توان از منابع مختلف مانند سرورهای راه دور، ذخیره سازی های ابری و کارت SD داخلی بارگیری کرد. بدون ذکر توضیحات بیشتر به سراغ اجرای پروژه می رویم:
اگر در داخل برنامه اکلیپس یا اندروید استودیو قرار دارید پروژه جدیدی را ایجاد کنید
اکلیپس :File ⇒ New Android ⇒ Application Project
اندروید استودیو :File ⇒ New ⇒ New Project
اما اگر هنوز برنامه خود را باز نکرده اید یکی از برنامه های فوق را باز نموده و بعد از تعیین مشخصات(نامگذاری) ، تعیین حداقل sdk و نوع اکتیویتی (blank یا Empty) ، نام اکتیویتی ابتدایی و اصلی خود را همان MainActivity قرار دهید. بعد از لود کامل برنامه ، در مسیر res ⇒layout لایه متناظر اکتیوتی اصلی یعنی activity_main را پیدا نمود و کدهای مندرج و پیش فرض آن را پاک کرده و کدهای xml زیر را به آن اضافه کنید:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" > <Button android:id="@+id/MyButton" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="استریم آنلاین و یدیو" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_marginBottom="89dp" /> </RelativeLayout>
سپس کلاس اصلی یعنی MainActivity.java را باز کرده و کدهای زیر را در آن قرار دهید:
package ir.psrd.example.StramOnline; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.app.Activity; import android.content.Intent; public class MainActivity extends Activity { Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Get the layout from video_main.xml setContentView(R.layout.activity_main); // Locate the button in activity_main.xml button = (Button) findViewById(R.id.MyButton); // Capture button clicks button.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { // Start NewActivity.class Intent myIntent = new Intent(MainActivity.this, VideoViewActivity.class); startActivity(myIntent); } }); } }
به دنبال درج کدهای کلاس MainActivity، لازم است اکتیویتی جدیدی را با نام VideoViewActivity ایجاد کنید با توجه به شکل زیر اکتیویتی جدیدی را با نام مذکور ایجاد کنید.
در مسیر res ⇒layout لایه متناظر اکتیوتی VideoViewActivity یعنی activity_video_view.xml را پیدا نمود و کدهای مندرج و پیش فرض آن را پاک کرده و کدهای xml زیر را به آن اضافه کنید:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent" android:layout_height="fill_parent" > <VideoView android:id="@+id/VideoView" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_centerHorizontal="true" android:layout_centerVertical="true" /> </RelativeLayout>
به دنبال درج کدهای فوق کلاس VideoViewActivity .java را باز کرده و کدهای زیر بدان اضافه می کنیم:
package ir.psrd.example.StramOnline; import android.media.MediaPlayer; import android.media.MediaPlayer.OnPreparedListener; import android.net.Uri; import android.os.Bundle; import android.app.Activity; import android.app.ProgressDialog; import android.util.Log; import android.widget.MediaController; import android.widget.VideoView; public class VideoViewActivity extends Activity { // Declare variables ProgressDialog pDialog; VideoView videoview; // Insert your Video URL String VideoURL = "http://psrd.ir/wp-content/uploads/2018/01/streamonlinevideo.3gp"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Get the layout from video_main.xml setContentView(R.layout.activity_video_view); // Find your VideoView in your video_main.xml layout videoview = (VideoView) findViewById(R.id.VideoView); // Execute StreamVideo AsyncTask // Create a progressbar pDialog = new ProgressDialog(VideoViewActivity.this); // Set progressbar title pDialog.setTitle("Android Video Streaming Tutorial"); // Set progressbar message pDialog.setMessage("Buffering..."); pDialog.setIndeterminate(false); pDialog.setCancelable(false); // Show progressbar pDialog.show(); try { // Start the MediaController MediaController mediacontroller = new MediaController( VideoViewActivity.this); mediacontroller.setAnchorView(videoview); // Get the URL from String VideoURL Uri video = Uri.parse(VideoURL); videoview.setMediaController(mediacontroller); videoview.setVideoURI(video); } catch (Exception e) { Log.e("Error", e.getMessage()); e.printStackTrace(); } videoview.requestFocus(); videoview.setOnPreparedListener(new OnPreparedListener() { // Close the progress bar and play the video public void onPrepared(MediaPlayer mp) { pDialog.dismiss(); videoview.start(); } }); } }
با توجه به نیاز برنامه برای اتصال به اینترنت لازم است مجوز اتصال به اینترنت در قسمت Androidmanifest.xml تعریف شود از این رو مجوز اتصال به اینترنت را به شکل زیر در مانیفست پروژه تعریف می کنیم:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="ir.psrd.example.StramOnline"> <uses-permission android:name="android.permission.INTERNET" > </uses-permission> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity" android:label="@string/app_name" android:theme="@style/AppTheme.NoActionBar"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".VideoViewActivity" android:label="@string/title_activity_video_view" android:theme="@style/AppTheme.NoActionBar"> </activity> </application> </manifest>
حال می توانید پروژه خود را اجرا کرده و نتیجه کار خودتان را ببینید. اگر مشکلی در اجرای کدها دارید یا سوال به خصوصی ذهن شما را مشغول کرده است می توانید در قسمت دیدگاه آن را مطرح کنید. باعث خرسندی ما خواهد بود که پاسخگوی سوالات تخصصی شما باشیم.
1 دیدگاه
محمد · آوریل 12, 2022 در 3:12 ب.ظ
ویدیو پخش نمیشود …چیکار کنم ؟ URL دیگه هم امتحان کردم