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

داینامیک کردن مدیا پلیر

Smsbaz  12 سال پیش  12 سال پیش
+1 0

سلام دوستان

کی می تونه این کد رو به 10 فایل تخصیص بده؟

برای پخش اهنگه و من نمی خوام هر اهنگ به تنهایی این همه کد داشته باشه

یکبار برای هر 10  ترک

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

به نظرم بهترینش سوسچ کیس بود که بازم نشد :D

دوستان هلپ می پلیز B-)

 
import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;

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();
    }
     
}
0 0
کد مرتبط با seekbar ربطی به سوال نداره. اگه کد سبک تری بذاری خوانایی بالاتری داره و مفهوم تره (12 سال پیش)
 برای این سوال 5 پاسخ وجود دارد.
پاسخ به سوال 
محمد حسین زاده  12 سال پیش
+2 0

دقیقا متوجه نشدم لیست فایلهاتو کجا داری ولی میشه با اکشنی که کاربر انجام میده سورس مدیا پلیر رو عوض کنی :

 
String path = "...";
mediaPlayer.setDataSource(path + mediafile);
0 0
خوب هر اهنگ یه سیکبار داره.در تغییراتی که خودم اعمال کردم سیک بار هم از کار میافتاد و جزو سوال منم میشه.لیست فایلها در یه پوشه در res به نام raw .میشه راجب توضیحتون بیشتر بحث کنید متوجه نشدم (12 سال پیش)
پاسخ به سوال 
sadeghbarout  12 سال پیش
+2 0

اگه 10 تا آهنگ داری و برای هر کدوم یه seekbar و دکمه play و ... داری به نظرم بهترین راه استفاده از یه listView هست که توی xml آداپترش، اون Seekbar و... رو میذاری و توی کدهای آداپترت، این کدهای پخش و ... رو میذاری.

اطلاعات آهنگات هم که از صفحه main میریزی توی یه آرایه و میفرستی به آداپتر لیست ویوت.

یه راه دیگه هم گذاشتن این کدها توی یه حلقه for ه 10 تایی هست که seekbar و... رو با کد کلا به صفحه اضافه کنی (که یکم سخت تره از نظر designش)

ولی راه اولی که گفتم راحت عملیه چون قبلا انجامش داده بودم.

0 0
داداش قبلا انجام دادی الان کدشو نداری؟واقعا خستم کرده (12 سال پیش)
0 0
به نظر من هم این روش خوبیه میتونی تو آدابتر آیتم های لیست ویوت متغیری برای ذخیره آدرس آهنگ ها داشته باشی و روی اون مانور بدی اگه activity filechooser را گوگل کنی نمونه کد خوبی بت میده (12 سال پیش)
0 0
توی لیست ویو هرکاری کردم نتونستم جمو جورش کنم (12 سال پیش)
0 0
خب دیگه من دیر رسیدم ! آقا محمد کدهاشو گذاشتن ;) (12 سال پیش)
پاسخ به سوال 
محمد حسین زاده  12 سال پیش
+4 0

با فرض وجود ساختار اطلاعاتی مثل

 public class StructSong {
public String name;
public String path;

public StructSong(String _name, String _path) {
name=_name;
path=_path;
}
}

که قابل استفاده تو لیست ویو و یا هر منطق دیگه ای هم هست و کلاس FakeData با وظیفه ساخت لیست درون حافظه ای از ساختار بالا، میتونی از کلاس زیر استفاده کنی :

 public class MediaManager {
private MediaPlayer mediaPlayer;
private AssetManager assets;
private SeekBar seekBar;
private Runnable UpdateSongTime = new Runnable() {
public void run() {
int startTime = mediaPlayer.getCurrentPosition();
if (seekBar != null)
seekBar.setProgress(startTime);
G.handler.postDelayed(this, 100);
}
};

public MediaManager(AssetManager _assets, SeekBar _seekBar) {
assets = _assets;
seekBar = _seekBar;
mediaPlayer = new MediaPlayer();
}

public void setCurrentPosition(int position) {
reset();
if (position < 0)
position = 0;
if (position >= FakeData.songs.size())
position = FakeData.songs.size() - 1;
FakeData.currentPosition = position;
StructSong song = FakeData.songs.get(position);
try {
AssetFileDescriptor afd = assets.openFd(song.path);
mediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
afd.close();
mediaPlayer.prepare();
start();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}

public void moveCurrentPosition(int count) {
setCurrentPosition(FakeData.currentPosition + count);
}

public void pause() {
mediaPlayer.pause();
}

public void start() {
mediaPlayer.start();
if (seekBar != null)
{
seekBar.setMax(mediaPlayer.getDuration());
G.handler.postDelayed(UpdateSongTime, 100);
}
}

public void reset() {
mediaPlayer.reset();
}

public void stop() {
mediaPlayer.pause();
mediaPlayer.seekTo(0);
}
}

setCurrentPosition برای تعیین فایل با توجه به موقعیتش تو لیست ساخته شده در کلاس FakeData

moveCurrentPosition برای تغییر موقعیت فایل. کاراییش تو دکمه های قبلی و بعدی که با مقادیر 1و-1 فراخونی میشه.

اگه نقاط مبهمی تو کد بود بگو که توضیح بدم. مکان فایل ها هم assets در نظر گرفته شده که قطعا قابل تغییره.

0 0
دمت گرم و مچکر.فقط من یکم گیج میزنم.فراخونیش چجوریه؟ (12 سال پیش)
+1 0
تو اکتیویتی خودت یه نمونه ازش با پارامتر های مورد نیاز میسازی و با همون هم کار میکنی. دیگه نمونه ای از MediaPlayer نمیسازی (12 سال پیش)
0 0
و fakedata? :D (12 سال پیش)
+1 0
گفتم بالا. وظیفش ایجاد لیستی از StructSong هستش. مثلا اگه داری از دیتابیس اطلاعات رو میخونی با یه لیست برگشتی از دیتا بیس جایگزینش میکنی . اگه دیتابیس در کار نیست و همه چیز ثابته خودت یه لیست دستی میسازی. پایین کد کلاسش رو میزارم (12 سال پیش)
پاسخ به سوال 
محمد حسین زاده  12 سال پیش
+3 0

کلاس FakeData :

 public class FakeData {

public static ArrayList<StructSong> songs = new ArrayList<StructSong>();

public static int currentPosition = 0;

public static AdapterSongs adapter;

public static void init() {

for (int i = 1; i < 10; i++) {

songs.add(new StructSong("Song #" + i, "0" + i + ".MP3"));
}

adapter = new AdapterSongs(songs);

adapter.notifyDataSetChanged();
}
}

0 0
خیلی خیلی ممنونم.تست میکنم.مشکلی بود بازم زحمت میدم (12 سال پیش)
پاسخ به سوال 
Smsbaz  12 سال پیش
0 0

هر کاری می کنم ارورو ارورو بازم ارور

عاصیم کرد از صبح مشخولشم

گریه حضار :'(


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