بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

چگونگی پخش فایل صوتی در لیست ویو با کلیک کردن بر روی هر سطر لیست ویو

مدیریت گفتگو
morteza1366 10 سال پیش
آخرین تغییر: 10 سال پیش

سلام دوستان

من توی اندروید تازه کارم،لطفآ راهنمایی کنید

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

سواله من : میخواهم وقتی بر روی هر سطر که کلیک کنم در اکتیویتی که باز میشه یک فایل صوتی پخش بشه و توسط یکseekBar بتونم اون فایل صوتی جلو وعقب ببرم.

این MainActivity:

 public class AudioClassMainActivity extends Activity {

//
ListView listView2;
AudioClassListViewAdapter adapter;

String[] EnglishText;
String[] title_chapter_story_audio;
int[] buttonIDAudio;
ArrayList<AudioClassStory> arraylist = new ArrayList<AudioClassStory>();

int[] soundid;


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

listView2 = (ListView) findViewById(R.id.listView2);

//منبع داده
title_chapter_story_audio = new String[]{ "Title 1 ", "
Title 2 ", "Title 3 ", "Title 4 ", "Title 5 ", "Title 6 " };

Resources res = getResources();
String[] EnglishText = res.getStringArray(R.array.EnglishText);

buttonIDAudio = new int[]{ R.drawable.chapter1, R.drawable.chapter2,
R.drawable.chapter3, R.drawable.chapter4,
R.drawable.chapter5, R.drawable.chapter6 };
soundid = new int[]{ R.raw.track101, R.raw.track102, R.raw.track103, R.raw.track104, R.raw.track105, R.raw.track106 };

for (int i = 0; i < EnglishText.length; i++)

{
// WorldPopulation wp = new WorldPopulation(rank[i], country[i],
// population[i], flag[i]);
AudioClassStory wp = new AudioClassStory(EnglishText[i], title_chapter_story_audio[i], buttonIDAudio[i], soundid[i]);

arraylist.add(wp);
}

// ساخت آداپتور سفارشی با منبع داده ایجاد شده
adapter = new AudioClassListViewAdapter(this, arraylist);

listView2.setAdapter(adapter);


 این هم کلاس آداپتور:


public class AudioClassListViewAdapter extends BaseAdapter {

//public class AudioClassListViewAdapter extends BaseAdapter implements OnCompletionListener, OnSeekBarChangeListener {

Context mContext;
LayoutInflater inflater;

// این فیلدها برای نگهداری مقادیری استفاده می شوند که از منبع داده دریافت شده است
private List<AudioClassStory> Storylist = null;
private ArrayList<AudioClassStory> arraylist;


SeekBar seekBar1;
int[] soundid;

TextView title_chapter_story_audio;


// متد سازنده که اطلاعات را از منبع داده گرفته و داخل فیلدها ذخیره می کند
public AudioClassListViewAdapter(Context context, List<AudioClassStory> Storylist) {
mContext = context;
this.Storylist = Storylist;
inflater = LayoutInflater.from(mContext);
this.arraylist = new ArrayList<AudioClassStory>();
this.arraylist.addAll(Storylist);
}


public class ViewHolder {

TextView title_chapter_story_audio;
ImageView buttonIDAudio;
SeekBar seekBar1;
int[] soundid;

MediaPlayer mp;
}


@Override
public int getCount() {
return Storylist.size();
}


@Override
public AudioClassStory getItem(int position) {
return Storylist.get(position);
}


@Override
public long getItemId(int position) {
return position;
}



@Override
public View getView(final int position, View view, ViewGroup parent) {
final ViewHolder holder;
if (view == null) {
holder = new ViewHolder();


view = inflater.inflate(R.layout.audioclass_row_layout, null);

// ویوهای مرتبط را متصل و شناسایی می کند
holder.title_chapter_story_audio = (TextView) view.findViewById(R.id.title_chapter_story_audio);
holder.buttonIDAudio = (ImageView) view.findViewById(R.id.buttonIDAudio);
holder.seekBar1 = (SeekBar) view.findViewById(R.id.seekBar1);

view.setTag(holder);
} else {
holder = (ViewHolder) view.getTag();
}

// پر کردن ویوها بر اساس مقداری که داخل پوزیشن است
holder.title_chapter_story_audio.setText(Storylist.get(position).gettitle_chapter_story_audio());

holder.buttonIDAudio.setImageResource(Storylist.get(position).getbuttonIDAudio());

holder.seekBar1.setTag((Storylist.get(position).getsoundid()));

// برای کلیک کردن بر روی هر وبو مقادیر زیر را به کلاس آیدئو شو کانتن استوری بفرست
view.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {

// فراخوانی شو کانتنت استوری اکتیویتی
Intent intent = new Intent(mContext, AudioClassShowContentStory.class);

// چهار مقدار زیر را به شو کانتنت استوری اکتیویتی ارسال کند
intent.putExtra("EnglishText",
(Storylist.get(position).getEnglishText()));

intent.putExtra("gettitle_chapter_story_audio",
(Storylist.get(position).gettitle_chapter_story_audio()));

intent.putExtra("buttonIDAudio",
(Storylist.get(position).getbuttonIDAudio()));
intent.putExtra("soundid",
Storylist.get(position).getsoundid());

mContext.startActivity(intent);
}
});


این هم کلاسی که متن را نشان میدهد:


public class AudioClassShowContentStory extends Activity {

TextView ContentstoryAudio;
String EnglishText;
int soundid;
SeekBar seekBar;
MediaPlayer mediaplayer;


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

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

Intent i = getIntent();

// مقادیر را از لیست ویو اکتیویتی دریافت می کند
EnglishText = i.getStringExtra("EnglishText");
soundid = i.getIntExtra("soundid", soundid);

// مقادیر دریافت شده از لیست ویو اکتیویتی را در لایه خودش نشان می دهد
ContentstoryAudio.setText(EnglishText);

نظرات

پاسخ‌ها 2

morteza1366 10 سال پیش

نظرات

HoCoder 10 سال پیش

واسه پخش موزیک از این کد استفاده کن

 MediaPlayer    soundPlay = new MediaPlayer();
soundPlay.setDataSource( DIR_APP_SOUND + "/" + fileNameSound );
soundPlay.prepare();
soundPlay.start();

واسه stop

 soundPlay.release();

و کد seekbar

 seekBarPlayer.setOnSeekBarChangeListener( new OnSeekBarChangeListener() {


@Override
public void onStopTrackingTouch( SeekBar seekBar ) {

}


@Override
public void onStartTrackingTouch( SeekBar seekBar ) {

}


@Override
public void onProgressChanged( SeekBar seekBar , int progress , boolean fromUser ) {
int duration = soundPlay.getDuration();
float percent = progress / 100.0f;
float time = duration / percent;
soundPlay.seekTo( (int) time );
seekBar.setProgress( progress );
}
} );

نظرات

morteza1366 10 سال پیش
خیلی ممنون،ولی من چندتا فایل صوتی دارم که این آدرس این فایل ها در متغییر soundid ذخیره کردم و فکر کنم این خط کد شما : soundPlay.setDataSource( DIR_APP_SOUND + "/" + fileNameSound ); فقط یکی فایل میگیره نه چند تا فایل صوتی؟ چطوری چندتا فایل صوتی وقتی که بر روی هر کدوم از سطرهای لیست ویو کلیک میکنم پخش بشه؟ ممنون

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