آموزش پخش آنلاین آهنگ بدون دانلود آن در اندروید
سلام دوستان در این سری از آموزش برنامه نویسی به آموزش پخش آنلاین آهنگ بدون دانلود آن در اندروید می پردازیم به طور دقیق اگر بخواهیم آن را توضیح دهیم یعنی بدون اینکه آن را دانلود کنیم به صورت Stream آن را پخش کنید در ادامه با ما همراه باشید.
در ابتدا دسترسی استفاده از اینترنت را اضافه کنید.
برای اینکار وارد فایل AndroidManifest.xml شده و خط زیر را اضافه کنید.
1 | <uses-permission android:name="android.permission.INTERNET" /> |
وارد layout خود شده و دو کمه همانند زیر قرار دهید . نام این فایل برابر با activity_main.xml است.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <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" tools:context=".MainActivity" > <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/button1" android:layout_centerHorizontal="true" android:text="Stop Music" /> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="157dp" android:text="Play Music" /> </RelativeLayout> |
دو دکمه وجود دارد یکی برای اجرا و دیگری برای متوقف کردن آن.
کد مربوط به 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 | package ir.programchi; import java.io.IOException; import android.app.Activity; import android.media.AudioManager; import android.media.MediaPlayer; import android.os.Bundle; import android.view.View; import android.widget.Button; public class MainActivity extends Activity { Button buttonStop,buttonStart ; String AudioURL = "http://dl.vmusic.ir/Electronica/Eleven.Five%20-%20The%20Way%20We%20Were%20(Toby%20Hedges%20Remix)%20%5Bwww.vmusic.ir%5D.mp3"; MediaPlayer mediaplayer; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); buttonStart = (Button)findViewById(R.id.button1); buttonStop = (Button)findViewById(R.id.button2); mediaplayer = new MediaPlayer(); mediaplayer.setAudioStreamType(AudioManager.STREAM_MUSIC); buttonStart.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub try { mediaplayer.setDataSource(AudioURL); mediaplayer.prepare(); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SecurityException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalStateException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } mediaplayer.start(); } }); buttonStop.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub mediaplayer.stop(); } }); } } |
از mediaplayer برای اینکار استفاده کردیم. ادرس ulr را در بالا قرار دادیم سپس با استفاده از ویژگی setDataSource آهنگ را به عنوان ورودی به آن دادیم در اینجا بدون اینکه فایل دانلود شود پخش می شود ولی دقت کنید در صورتی که اهنگ بخواهد به صورت آنلاین پخش شود منابع بسیار زیادی از سرور را درگیر می کند پس نیاز به سرور قوی دارد.
این آموزش هم به پایان رسید.
موفق و موید باشید.
اگه بخوام صدایی که تو سرورم ذخیره شده و لینک دانلود نداره تو برنامم پخش شه باید چیکارکنم
مثل زیر عمل کنید.
موفق باشید.
آموزش به صورت کامل در لینک زیر قرار دارد.
https://programchi.ir/2017/08/04/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%BE%D8%AE%D8%B4-%D8%A2%D9%86%D9%84%D8%A7%DB%8C%D9%86-%D8%A2%D9%87%D9%86%DA%AF-%D8%A8%D8%AF%D9%88%D9%86-%D8%AF%D8%A7%D9%86%D9%84%D9%88%D8%AF-%D8%A2%D9%86-%D8%AF%D8%B1/
موفق باشید.
با عرض ادب و خسته نباشید ببخشید سایتی دارای این لینک اهنگ است
http://dl.nicmusic.net/nicmusic/fullalbum/Majid-kharatha/Majid%20Kharatha%20-%20Cancel/01%20-%20Cancel.mp3
که وقتی ان را در برنامه تست میکنم اتفاقی نمی افتد
(سایت هایی که بعد از کلیک روی اهنگ ان تب جدیدی باز میکند و شروع به خواندن میکند را میشود از روش شما استفاده کرد ولی سایت هایی که وقتی روی اهنگ کلیک میکنی بدون باز شدن تب جدید شروع به دانلود میکند نمیشه این کار را کرد نمونه اش لینک بالا که از سورس کد های سایت به دست اوردم)
مثلا سایت زیر از این نمونه سایت ها است سوال من اینه که میخواهم بدون دانلود اهنگ خوانده شود لطفا راهنمایی کنید چی کار کنم؟؟؟ برای این گونه سایت ها؟؟؟
به طور مثال
http://nicmusic.net/1396/03/macan-band/
برخی از سایت ها از هاست دانلود استفاده می کنند هاست دانلود امکان پردازش فایل به صورت live را ندارد ولی برخی از سایت ها فایل را بروی هاست شخصی خود آپلود می کنند یعنی درcpanel یا directadmin به همین علت شما می توانید آنها را play کنید همانطور که از اسم آموزش پیداست ما در حال stream دیتا هستیم و نیاز به ایجاد پردازش در آن طرف سرور داریم شما حتما باید از فایل هایی که url انها در هاست آپلود شده است و نه بروی هاست دانلود استفاده کنید.
موفق باشید.
مهندس یک سوال دیگه این که میتوان از طریق کلاس MediaPlayer علاوه بر اطلاعات اهنگ عکس ان اهنگ را به دست اورد ؟؟؟
اگر نمیشه میشه بگید چه کار کنم؟؟ باید عکس اهنگ را جدا در سرور قرار دهم یا روش بهتری است؟؟؟
میشه از کد زیر استفاده کنید.
مهندس شرمنده قسمت file.getpath که خروجی این متد لینک سایت مورد نظر ماست؟؟ چون منظورم به دست اوردن عکس ان بدون دانلوده
کد وقتی به این خط میرسه mmr.setDataSource(file.getPath());
خطای java.lang.IllegalArgumentException میده
میشه لطفا کامل تر بگید واقعا ضروریه نیازش دارم ممنون تشکر
سلام و درود نمیشه به صورت آنلاین عکس فایل رو دریافت کرد مگر اینکه که از Mediaplayer استفاده شده باشه و اینکه اگر با کد زیر عکس برنگرده یعنی فایل music عکسی نداشته که بتونه بگیریه
موفق باشید.
مهندس ممنون میشه کمی بیش در مورد جمله ای ک گفتید (مگر اینکه که از Mediaplayer استفاده شده باشه ) توضیح بیش تر دهید؟؟
شما نمی تونید از لینک فایلی که دارید stream می کنید عکس دریافت کنید چون فایل نیست و به گونه raw data نیست و در جاهایی هم ذخیره نشده بروی گوشی کاربر بلکه روی سرور هست
یه راه حل میگم تست کنید ببینید جواب میده یا خیر
کتاب خانه زیر را اضافه کنید.
بعد از کد زیر استفاده کنید.
شاید کار بکنه در بالا باید لینک موزیک را قرار دهید قبلش چک کنید عکس برگشتی در bitmap باشد یعنی null نباشد.
موفق باشید.