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