آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
مشکل عدم دسترسی خریداران پیشین به برخی آموزش ها برطرف شد
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

اموزش پخش و توقف موسیقی+لینک دانلود پروژه

MEHDI007  10 سال پیش  7 سال پیش
+24 0

خوب اموزش ساخت یک برنامه است.سورس کد ها و لینک خود برنامه در زیر تاپیک قرار دارد.با تشکر

اکنون می خواهیم یک برنامه اندروید بسازیم که دارای دو دکمه باشد، یک دکمه برای پخش موسیقی و دیگری برای توقف پخش موسیقی. بنابراین کاربر می تواند کنترل کند که آیا موسیقی پخش بشود یا خیر.

دربرنامه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;
	}

}

و می تونید سورس پروژه برنامه رو دانلود کنید .

سورس پروژه در اخرین پست

+1 0
دوستان ببخشید لینک دانلود مشکل داشت.اصلاح شد با تشکر:) (10 سال پیش)
0 0
چرا من توی اینترنت سرچ میکنم < اکثرا برای اجرای فایل صوتی از "R.raw" و یا از Asset , ِdrwable استفاده میکنند ؟ و کمتر کی سورسی میزاری از SD_CARD < متاسافانه اجرا از SD_CARD ارور های غیر منطقی داره ! < اگر پروژه ایی برای اجرا از SD_CARD دارید « ممنون میشم راهنمایی کنید (9 سال پیش)
0 0
برای چی اجرا از SD_CARD من فکر کنم مشکل زیاد به وجود بیاره ولی دقیقا نمیدونم تا حالا استفاده نکردم:ا (9 سال پیش)
0 0
برای اینکه در ابتدا برنامه ی ما حجم کمی داشته باشه و راحت دانلود بشه < و بعدا منابع رو دانلود کنیم و از اونجا پخش کنیم < فرض کنید < هر روز منبع جدید توی برنامه قرار بگیره < برای دانلود < مشکلم توی این تاپیک بود < کم کم داره رفع میشه < لینک (9 سال پیش)
 برای این سوال 8 پاسخ وجود دارد.
پاسخ به سوال 
MEHDI007  10 سال پیش
+4 0

دوستان ببخشید نمی دونم چه مشکلی داشت اما لینک کار نمی کرد مجبور شدم این جا بزارم

اپلود

picofile


 

شما با این کد می تونید چک کنید که ایا اهنگ پخش می شود یا نه و می تونی بگی که اگه اهنگ پخش میشد فلان کار انجام بده و اگه پخش نمی شود هم فلان کارو خیلی ساده:)

و بعد تعریفش می کنیم:

  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);{}//اگر اهنگ پخش نمی شود این کار یا هر کاری رو انجام بده

و با توجه به نیازتون هر کاری دوست دارید انجام بدید:)

+1 0
مهدی جان ممنون بابت آموزشت.یه نکته.شما میتونستین با یک شرط هر دو دکمرو تبدیل کنین به یک دکمه اینجوری هم فضای کمتری اشغال میشد هم از نظر بسری کار قشنگ تری میشد.بعد هم تکس یا عکس هر دکمه بنا به موقعیتش رو دکمه می افتاد. (10 سال پیش)
+1 0
بله دوست عزیز می دونم کاری های زیادی از نظر گرافیکی می تونستم انجام بدم:)اگه دلت می خواد برات شبیه یک پلیر حرفه ای کنم.نه دوست عزیز این فقط برای اموزش نه...دیگه.ولی اگه بخوای خودت هم می تونه توی 5دقیقه یک تعغیرات کلی به وجود بیاری:)من فقط اینو از جنبه ی اموزشی درست کردم:)موفق باشی (10 سال پیش)
0 0
ATRAS جان میشه کد اینی که میگی بزاری ، یعنی اجرا و توقف آهنگ با یک دکمه (10 سال پیش)
0 0
دستون درد نکنه ازین کارا بیشتر بکنین (10 سال پیش)
+1 0
دوست عزیز با همون کد های داخل برنامه هم می تونید این کارو انجام بدید.اگه نیاز دارید پروژه رو تعغیر بدم برتون بفرستم:) (10 سال پیش)
0 0
ممنون میشم همین کار رو برای یک دکمه انجام بدید ، یعنی play و Stop شدن آهنگ فقط با یک دکمه. (10 سال پیش)
0 0
همین جواب مطالعه کنید فکر کنم کافیه:)کد رو گذاشتم (10 سال پیش)
پاسخ به سوال 
ali 2011  10 سال پیش
0 0

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

با تشکر!

0 0
یه راه ساده داره اونم اینکه دستور بدی برای اولین بار دکمه توقف مخالف null باشه البته من هنوز کد ها رو ندیدم (10 سال پیش)
0 0
با یک عبارت شرطی ساده میشه دوتا دکمه رو یکی کرد و دیگه نیاز به این هم نداره:) (10 سال پیش)
0 0
مرسی از آموزشت ولی من یک آهنگ از اینترنت دانلود کردم توی Sdcard حالا میخوام این آهنگ رو از اونجا پلی کنم چکار کنم؟؟؟ (10 سال پیش)
پاسخ به سوال 
Amir  10 سال پیش
+1 0

من این کد رو زدم که از 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();
0 0
اما خطای nullpointer میده ، (10 سال پیش)
0 0
اسلش آخر رو بردارین .مقدار G.DIR_TEMP رو چی نوشتین؟ (10 سال پیش)
پاسخ به سوال 
Amir  10 سال پیش
+1 0

فرقی نداره ، با اسلش و بدون اسلش یکی شد.فایل موزیکش هست اما ...

 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/";
0 0
شما یک "/" در انتهای music-downloader/ دارید و دوباره یک "/" در ابتداری "/temp" ! (9 سال پیش)
پاسخ به سوال 
ATRAS  10 سال پیش
0 0

شما یک اسلش اظافه گذاشتین.در این خط کد یه اسلش اظافس.

 
  Uri uri =Uri.parse(G.DIR_TEMP +"/bavarkonam_remix.mp3/");

شما باید اینجوری بنویسین.

   Uri uri =Uri.parse(G.DIR_TEMP +"bavarkonam_remix.mp3/");
پاسخ به سوال 
Ghost  10 سال پیش
0 0

سلام دوستان .

ببینید من این کد رو گذاشتم توی یک دکمه . وقتی روی دکمه کلیک میشه موزیک پخش

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();

ببینید من وقتی یکبار روی دکمه کلیک میکنم آهنگ پخش میشه و پس از یک ثانیه متوقف میشه . ولی وقتی دوبار یا بیش از یکبار روی دکمه کلیک میکنم آهنگ هر یک ثانیه یکبار متوقف میشه و دوباره پخش میشه و هی پشت سر هم پخش میشه .

امیدوارم مظورم رو فهمیده باشید . لطفا جواب بدید .

منتظرم

پاسخ به سوال 
مهدی  9 سال پیش
0 0

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

+1 0
این دوتا آموزش رو ببینید ولی خیلی کار ساده ای هست و با اموزش های استاد اصلا کاری نیست که نشه انجام داد همه چیز کامل آموزش داده شده (http://goo.gl/zqjVNB ) & (http://goo.gl/26NVC9) (9 سال پیش)
پاسخ به سوال 
SaeiD-as  7 سال پیش
0 0

دوستان من یک فایل رو 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);
}
}

 

0 0
خودم فکر می کنم زمانی که player رو مجدد داخل onResume میسازم این مشکل بوجود میاد، ولی نمی دونم چطوری می تونم همون آهنگ رو معرفیش کنم (7 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .