رفتن به مطلب
انجمن اندروید ایران | آموزش برنامه نویسی اندروید و موبایل
  • android.png.1fab383bc8500cd93127cebc65b1dcab.png

پخش موسیقی از حافظه خارجی (SD card) و هماهنگ کردن با سیک بار


پست های پیشنهاد شده

من یک برنامه دارم که فایل موسیقی رو از فولدر raw میگیره و پخش می کنه پخش فایل mp3 با یک سیک بار هماهنگ شده، حالا می خوام به جای اینکه این فایل از فولدر raw خونده بشه از حافظه sd card  فراخوانی بشه و با سیک بار هم هماهنگ باشه ولی نتونستم، من فقط تونستم فایل رو از sd card پخش کنم ولی برای هماهنگ کردنش با سیک بار به مشکل برخوردم

 این کد برنامه ایه که موسیقی رو از فولدر  raw پخش می کنه، اگه میشه راهنماییم کنید چطور میشه سورس فراخوانی رو  sd card  بذارم به نحوی که با سیک بار هماهنگ باشه

[shcode=java]public class MainActivity extends Activity implements OnClickListener {

    SeekBar seek_bar;

    Button play_button, pause_button;

    MediaPlayer mediaPlayer;

    TextView text_shown;

    Handler seekHandler = new Handler();

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        getInit();

        seekUpdation();

    }

    public void getInit() { 

        seek_bar = (SeekBar) findViewById(R.id.seek_bar);

        play_button = (Button) findViewById(R.id.play_button);

        pause_button = (Button) findViewById(R.id.pause_button);

        text_shown = (TextView) findViewById(R.id.text_shown);

        play_button.setOnClickListener(this);

        pause_button.setOnClickListener(this);

        mediaPlayer = MediaPlayer.create(this, R.raw.my_file);

        seek_bar.setMax(mediaPlayer.getDuration());

    }

    Runnable run = new Runnable() {

        @Override

        public void run() {

            seekUpdation();

        }

    };

    public void seekUpdation() {

        seek_bar.setProgress(mediaPlayer.getCurrentPosition());

        seekHandler.postDelayed(run, 1000);

        seek_bar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {

            @Override

            public void onStopTrackingTouch(SeekBar seek_bar) {

                // TODO Auto-generated method stub

            }

            @Override

            public void onStartTrackingTouch(SeekBar seek_bar) {

                // TODO Auto-generated method stub

            }

            @Override

            public void onProgressChanged(SeekBar seek_bar, int progress, boolean fromUser) {

                if(fromUser){

                    mediaPlayer.seekTo(progress);

                    seek_bar.setProgress(progress);

                }

            }

        });

    }

    @Override

    public void onClick(View view) {

        switch (view.getId()) {

        case R.id.play_button:

            text_shown.setText("Playing...");

            mediaPlayer.start();

            break;

        case R.id.pause_button:

            mediaPlayer.pause();

            text_shown.setText("Paused...");

        }

    }

    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

        if(fromUser){

            mediaPlayer.seekTo(progress);

            seekBar.setProgress(progress);

        }

    }

    @Override

    public void onBackPressed() {

        mediaPlayer.stop();

        finish();

    }

}[/shcode]

می خوام

[shcode=java]mediaPlayer = MediaPlayer.create(this, R.raw.my_file);[/shcode]

با

[shcode=java]"/sdcard/Android" , "my_file.mp3"[/shcode]

یا هر کد مشابهی عوض بشه تا فایلم از sd card  پخش بشه، لطفا راهنماییم کنید.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام

دوست عزیز این کد رو از یه سایت برداشتم امیدوارم به دردت بخوره

import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.ImageButton;
import android.widget.ListView;
import android.app.ListActivity;

class Mp3Filter implements FilenameFilter{
public boolean accept(File dir, String name){
	return (name.endsWith(".mp3"));
}
}

//androidoone.com

public class MainActivity extends ListActivity {

private static final String SD_PATH = new String ("/mnt/sdcard/");
private List songs = new ArrayList();
private MediaPlayer mp = new MediaPlayer();

   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);
       updatePlayList();

       ImageButton stopPlay = (ImageButton) findViewById(R.id.stopbtn);

       stopPlay.setOnClickListener(new OnClickListener() {

		public void onClick(View arg0) {
			mp.stop();
		}
	});

   }

   //androidoone.com

   @Override
   protected void onListItemClick(ListView list, View view, int position, long id)
   {
   	try{
   		mp.reset();
   		mp.setDataSource(SD_PATH + songs.get(position));
   		mp.prepare();
   		mp.start();
   	} catch (IOException e){
   		Log.v(getString(R.string.app_name), e.getMessage());
   	}
   }

private void updatePlayList() {
	File home = new File(SD_PATH);
	if(home.listFiles(new Mp3Filter()).length>0){
		for(File file: home.listFiles(new Mp3Filter())){
			songs.add(file.getName());
		}

		ArrayAdapter songList = new ArrayAdapter(this, R.layout.song_item, songs);
		setListAdapter(songList);
	}
}
}

لینک ارسال
به اشتراک گذاری در سایت های دیگر

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...