اموزش پخش و توقف موسیقی+لینک دانلود پروژه
خوب اموزش ساخت یک برنامه است.سورس کد ها و لینک خود برنامه در زیر تاپیک قرار دارد.با تشکر
اکنون می خواهیم یک برنامه اندروید بسازیم که دارای دو دکمه باشد، یک دکمه برای پخش موسیقی و دیگری برای توقف پخش موسیقی. بنابراین کاربر می تواند کنترل کند که آیا موسیقی پخش بشود یا خیر.
دربرنامهeclipse،ابتدا یک پروژه اندرویدبا نام play music می سازیم .
(نام packageرا برابر com.uncocoder.playmusic.app انتخاب می کنیم. نام activity اصلی را برابر MainActivity انتخاب می کنیم و فایل xml متناظر آن را هم برابر activity_main قرار می دهیم).
ابتدا باید فایل strings.xml از پروژه اندروید را باز کنیم :
کدهای آن، در ابتدا به صورت زیر می باشد :
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">play music</string> <string name="action_settings">Settings</string> <string name="hello_world">Hello world!</string> </resources>
ما دو رشته (string) دیگر نیز در آن تعریف می کنیم :
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">play music</string> <string name="action_settings">Settings</string> <string name="hello_world">Hello world!</string> <string name="music_play">پخش موسیقی</string> <string name="music_stop">توقف پخش موسیقی</string> </resources>
این دو رشته، عنوان هایی هستند که بر روی دو دکمه، نمایش داده خواهند شد.
سپس فایل activity_main.xml از پروژه اندروید را باز می کنیم :من از این کد استفاده کردم شما می تونید از عکس یا حتی هر چیزی دوست داشتید استفاده کنید.
کدهای آن را به صورت زیر تغییر می دهیم (تعریف دو دکمه مورد نیازمان) :
<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: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" > <Button android:id="@+id/button1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/music_play" /> <Button android:id="@+id/button2" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignLeft="@+id/button1" android:layout_below="@+id/button1" android:text="@string/music_stop" /> </RelativeLayout>
ظاهر گرافیکی activity_main.xml به صورت زیر خواهد بود.
فایل موسیقی مورد نظرمان، دارای نام مثلا playmusic.mp3 می باشد. یا هر اسمی که دوست داشتید:
یک فولدر با نام raw ، به صورت زیر فولدر برای فولدر res می سازیم و سپس فایل playmusic.mp3 را در آن کپی می کنیم :
اکنون باید کدهای مربوط به نحوه عملکرد دو دکمه را درون فایل MainActivity.java بنویسیم. بنابراین فایل MainActivity.java را باز می کنیم :
فایل MainActivity.java ، در ابتدا دارای کدهای زیر می باشد :
package com.uncocoder.playmusic.app; import android.os.Bundle; import android.app.Activity; import android.view.Menu; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }
کدهای آن را به صورت زیر تغییر می دهیم :
package com.uncocoder.playmusic.app; import android.media.MediaPlayer; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class MainActivity extends Activity { public MediaPlayer player; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button b_1 = (Button) findViewById(R.id.button1); b_1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { player = MediaPlayer.create(MainActivity.this, R.raw.playmusic); player.setLooping(true); // Set looping player.setVolume(100,100); player.start(); } }); Button b_2 = (Button) findViewById(R.id.button2); b_2.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { player.stop(); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }
و می تونید سورس پروژه برنامه رو دانلود کنید .
سورس پروژه در اخرین پست





دوستان ببخشید نمی دونم چه مشکلی داشت اما لینک کار نمی کرد مجبور شدم این جا بزارم
شما با این کد می تونید چک کنید که ایا اهنگ پخش می شود یا نه و می تونی بگی که اگه اهنگ پخش میشد فلان کار انجام بده و اگه پخش نمی شود هم فلان کارو خیلی ساده:)
و بعد تعریفش می کنیم:
player = MediaPlayer.create(MainActivity.this, R.raw.m);//به جای mاسم اهنگ بزارید
بعد یک باتن میزارید و id بهش میدید و انکلیک براش می نویسید خیلی ساده
و بعد با این کد چک کنید:
//اگر اهنگ پخش نمی شود این کار یا هر کاری رو انجام بده
if(player.isPlaying() == false){
player.setLooping(true); // Set looping
player.setVolume(50,50);
player.start();
}else if(player.isPlaying() == true);{}//اگر اهنگ پخش نمی شود این کار یا هر کاری رو انجام بده
و با توجه به نیازتون هر کاری دوست دارید انجام بدید:)

سلام من کد رو دانلود کردم و برنامه درست کار میکنه ولی تنها وقتی که برای بار اول روی دکمه پخش کلیک کنید اگر اول که وارد برنامه میشید روی دکمه ی توقف کلیک کنید فورس کلوز میده! یه امتحان بکیند؟!
با تشکر!

من این کد رو زدم که از sdcard بخونه و فایل موزیک در این دایرکتوری هست اما crash میکنه :
Uri uri = Uri.parse(G.DIR_TEMP + "/bavarkonam_remix.mp3/"); player = MediaPlayer.create(FirstPage.this, uri); player.setLooping(true); // Set looping player.setVolume(100, 100); player.start();

فرقی نداره ، با اسلش و بدون اسلش یکی شد.فایل موزیکش هست اما ...
public static final String DIR_SDCARD = Environment.getExternalStorageDirectory().getAbsolutePath(); public static final String DIR_APP = DIR_SDCARD + "/music-downloader/"; public static final String DIR_TEMP = DIR_APP + "/temp/";

شما یک اسلش اظافه گذاشتین.در این خط کد یه اسلش اظافس.
Uri uri =Uri.parse(G.DIR_TEMP +"/bavarkonam_remix.mp3/");
شما باید اینجوری بنویسین.
Uri uri =Uri.parse(G.DIR_TEMP +"bavarkonam_remix.mp3/");

سلام دوستان .
ببینید من این کد رو گذاشتم توی یک دکمه . وقتی روی دکمه کلیک میشه موزیک پخش
player = MediaPlayer.create(MainActivity.this, R.raw.music);
player.setLooping(true); // Set looping
player.setVolume(100,100);
player.start();
بعد این کد رو هم گذاشتم که بعد از یک ثانیه آهنگ متوقف بشه :
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(1000);
player.stop();
}
catch (InterruptedException e) {
e.printStackTrace();
}
}
});
thread.start();
ببینید من وقتی یکبار روی دکمه کلیک میکنم آهنگ پخش میشه و پس از یک ثانیه متوقف میشه . ولی وقتی دوبار یا بیش از یکبار روی دکمه کلیک میکنم آهنگ هر یک ثانیه یکبار متوقف میشه و دوباره پخش میشه و هی پشت سر هم پخش میشه .
امیدوارم مظورم رو فهمیده باشید . لطفا جواب بدید .
منتظرم

اگه بخوایم آهنگ رو از اینترنت دانلود بعد پخشش کنیم ، چی کار باید کرد ؟

دوستان من یک فایل رو play می کنم، وقتی از اکتیویتی خارج می شم اون آهنگ همچنان play میشه که خیلی خوبه و مشکلی نیست، اما زمانی که مجدد به همون اکتیویتی برمی گردم می خوام seekbar روی همون قسمت آهنگ باشه که داره پخش میشه ولی باز برگشته به اول و اگر روی دکمه play کلیک کنم مجدد آهنگ play میشه! یعنی آهنگ همزمان دو بار پخش میشه! لطفا راهنمایی کنید چطوری درستش کنم.
@Override
protected void onResume() {
super.onResume();
if(playing == true){
Uri uri = Uri.parse(G.DIR_SOUND + "/" + soundThumbnail);
player = MediaPlayer.create(ActivityMain.this, uri);
player.setLooping(false); // Set looping
player.setVolume(100,100);
MediaMetadataRetriever mmr = new MediaMetadataRetriever();
mmr.setDataSource(G.context,uri);
String durationStr = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
int millSecond = Integer.parseInt(durationStr);
int min = (int) Math.floor((millSecond / 1000) / 60);
int sec = (millSecond / 1000) % 60;
txtPlayTime.setText(min + " : " + sec);
if (player.isPlaying() == false) {
skbPlay.setProgress((100 * player.getDuration()) / (millSecond));//اینجا می خوام ست کنم ولی نمی شه!
imgPlay.setImageResource(R.drawable.ic_pause);
} else if (player.isPlaying() == true) {
imgPlay.setImageResource(R.drawable.ic_play);
}
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .