آموزش اندروید استودیوآموزش های برنامه نویسی اندروید
آموزش برنامه نویسی اندروید با اندروید استودیو (بخش بیست و هفتم: پخش صوت در اپلیکیشن اندرویدی)
این بخش از آموزش می تواند برای عده ای از شما بسیار جالب باشد. بعضی از مواقع پیش می آید که احتیاج داریم که صوت در پس زمینه اپلیکیشن اندرویدی ما پخش شود. پس به کار با مدیا پلیر در اندروید نیاز داریم.
ولی برخلاف اسمی که دارد کار با صوت در برنامه نویسی اندروید، خیلی سخت نیست و نیاز به کدنویسی زیادی ندارد.
یک پروژه جدید به نام Sound-Gsm ایجاد کردم.
حال به قسمت لایه برنامه رفته و از Palette ، یک ویجت از نوع TextView را به درون لایه می کشم.
اسم این تکست ویو (TextView) را “Pakhshe Music” می گذارم.
توجه داشته باشید که در برنامه ما، موزیک به صورت خودکار در پس زمینه اپلیکیشنی که نوشته ایم پخش می شود و ما در این بخش از آموزش، دخالتی برای پخش موسیقی نمی کنیم.
حال فایل موسیقی خود را به این پوشه اضافه می کنیم.
من فایل موسیقی خودم را در پوشه raw و از طریق explorer خود ویندوز انجام دادم. پوشه raw را می توانید در این آدرس پیدا کنید:
AndroidStudioProjects\Sound-Gsm\app\src\main\res\raw
به قسمت کدنویسی جاوا یعنی MainActivity.java رفته و کد زیر را در آن می نویسیم.
MediaPlayer mPlayer = MediaPlayer.create(MainActivity.this, R.raw.Air); mPlayer.start();
برای نوشتن کد MediaPlayer کلاس زیر را به پروژه خود اضافه نمایید. و یا بر روی MediaPlayer زده و Alt + Enter را بزنید سپس Import Class را بزنید.
import android.media.MediaPlayer;
اولین باری که من کد را به این صورت نوشتم با خطا مواجه شدم. برای همین خواستم در اینجا نیز با همین اشتباه پیش برم تا شما یاد بگیرد.
اگر کد بالا را اجرا کنید با خطا مواجه می شوید. ولی چرا؟
چون که من اولین بار فایل موسیقی خودم را با حروف بزرگ مثل Air که در بالا نوشته بودم، نوشتم. پس در برنامه نویسی اندروید فایل ها در منابع نباید با حروف بزرگ باشند.
در بخش منابع آموزش های اندروید نیز به این نکته اشاره شد.
پس هم نام فایل و نام آن در کدنویسی اندروید را به نام air.mp3 تغییر می دهیم.
کد کامل
import android.media.MediaPlayer; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); MediaPlayer mPlayer = MediaPlayer.create(MainActivity.this, R.raw.air); mPlayer.start(); } }
اگر برنامه را اجرا نمایید موسیقی با اجرای برنامه پخش می شود. ولی اگر برنامه را ببندید موسیقی همچنان در حال پخش خواهد بود. راه حل چیست؟
در بخش هشتم و بخش دهم از آموزش برنامه نویسی اندروید، در مورد چرخه حیات اکتیویتی ها توضیح داده شد. در اینجا چون ما کد پخش موسیقی را در اکتیویتی onCreate نوشته ایم پس موسیقی هیچ گاه تا Stop شدن برنامه قطع نمی شود.
برای حل این مشکل در اکتیویتی onPause و یا onStop باید موسیقی را قطع کنیم تا وقتی از برنامه خارج شدیم موسیقی قطع شود.
کد زیر را به برنامه اضافه می کنیم تا موسیقی ما به حالت Pause برود.
همچنین با نوشتن mPlayer.Stop نیز می توان موسیقی را Stop نمود نه Pause !
protected void onPause() { super.onPause(); mPlayer.pause(); }
از آنجایی که متغیر mPlayer به صورت سراسری یا Global معرفی نشده است در تابع onPause شناخته نشده است. برای همین باید به صورت سراسری معرفی شود که با نوشتن آن خارج از تابع onCreate این اتفاق می افتد. کد زیر کد پایانی برنامه ما است.
کد کامل و پایانی برنامه ما
import android.media.MediaPlayer; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; public class MainActivity extends AppCompatActivity { // تعریف متغیر به صورت سراسری public MediaPlayer mPlayer; // اکتیویتی onCreate @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // تعریف متغیر برای موسیقی ما که این نام اضافه کرده بودیم mPlayer = MediaPlayer.create(MainActivity.this, R.raw.air); // استارت موسیقی mPlayer.start(); } // onPause اکتیویتی protected void onPause() { super.onPause(); //پایز کردن موسیقی mPlayer.pause(); } }
مفید وعالی بود واقعا ممنون از آموزشتون خدا خیرتون بده
باسلام
یه سوال داشتم
چطور میتونم در اندروید استودیو کاری کنم یه فایل صوتی بعد از دانلود در گوشی پخش بشه و تا حجم فایل نصبی زیاد نشه
سلام برنامه نویس سایت فعلا فعالیت نمی کنن شرمنده