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

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

morteza1366  10 سال پیش  10 سال پیش
0 0

سلام دوستان

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

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

سواله من : میخواهم وقتی بر روی هر سطر که کلیک کنم در اکتیویتی که باز میشه یک فایل صوتی پخش بشه و توسط یک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 سال پیش
0 0

پاسخ به سوال 
HoCoder  10 سال پیش
+2 0

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

 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 );
}
} );
0 0
خیلی ممنون،ولی من چندتا فایل صوتی دارم که این آدرس این فایل ها در متغییر soundid ذخیره کردم و فکر کنم این خط کد شما : soundPlay.setDataSource( DIR_APP_SOUND + "/" + fileNameSound ); فقط یکی فایل میگیره نه چند تا فایل صوتی؟ چطوری چندتا فایل صوتی وقتی که بر روی هر کدوم از سطرهای لیست ویو کلیک میکنم پخش بشه؟ ممنون (10 سال پیش)

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