پخش mp3 از سرور اینترنتی به وسلله ی دریافت لینک از دیتابیس
سلام دوستان من یه دیتابیس دارم (sqlite) که اطلاعات رو ازش میگیرم میخام برای هر مقدار از دیتابیس یه فایل صوتی اختصاص بدم برای همین یه فیلد به نام صدا ایجاد کردم و لینک دانلود فایل صوتی رو توش قرار دادم حالا میخام ببینم چه جوری میشه اونو تو دیتابیس فراخونی کرد و آنلاین پخشش کرد ؟
این کد رو نگاه بندازید تمام ایتم ها رو از دیتابیس گرفتم بدون دردسر اما نمی تونم آدرس فایل mp3 رو از دیتابیس بگیرم :
public class ShowData extends Activity implements OnClickListener, OnTouchListener, OnCompletionListener, OnBufferingUpdateListener{ Dastan dastan; Context c; DBAdapter db; SharedPreferences sh; int size; boolean rushan; String font; Typeface my_font; static MediaPlayer mPlayer; Button play_button, pause_button; TextView text_shown; private Button btn_play,btn_pause,btn_stop; private SeekBar seekBar; private MediaPlayer mediaPlayer; private int lengthOfAudio; private final String URL = "http://server8.mp3quran.net/bu_khtr/001.mp3"; private final Handler handler = new Handler(); private final Runnable r = new Runnable() { @Override public void run() { updateSeekProgress(); } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_show_dastan); initialize_Controls(); } private void initialize_Controls() { btn_play = (Button)findViewById(R.id.btn_play); btn_play.setOnClickListener(this); btn_pause = (Button)findViewById(R.id.btn_pause); btn_pause.setOnClickListener(this); btn_pause.setEnabled(false); btn_stop = (Button)findViewById(R.id.btn_stop); btn_stop.setOnClickListener(this); btn_stop.setEnabled(false); seekBar = (SeekBar)findViewById(R.id.seekBar); seekBar.setOnTouchListener(this); mediaPlayer = new MediaPlayer(); mediaPlayer.setOnBufferingUpdateListener(this); mediaPlayer.setOnCompletionListener(this); sh = getSharedPreferences("setting", 0); size = sh.getInt("size?", 20); rushan = sh.getBoolean("rushan?", true); font = sh.getString("font?", "Bnazanin"); my_font = Typeface.createFromAsset(getAssets(), font + ".ttf"); c = getBaseContext(); db = new DBAdapter(c); db.open(); dastan = (Dastan) getIntent().getExtras().get("thisdastan"); Log.i(DBAdapter.TAG, "dastan gerefte shod: " + dastan.getOnvan()); TextView name = (TextView) findViewById(R.id.name); name.setBackgroundColor(Color.parseColor("#FFDEAD" )); name.setShadowLayer(1, 0, 0, Color.BLACK); name.setText(dastan.getOnvan()); ImageView ax2 = (ImageView) findViewById(R.id.ax2); TextView T2_text = (TextView) findViewById(R.id.T2_text); T2_text.setText(dastan.getTell()); TextView T1_text = (TextView) findViewById(R.id.T1_text); T1_text.setText(dastan.getAdres()); TextView T3_text = (TextView) findViewById(R.id.T3_text); TextView T4_text = (TextView) findViewById(R.id.T4_text); T2_text.setTextSize(size); T2_text.setTypeface(my_font); T1_text.setTextSize(size); T1_text.setTypeface(my_font); if (rushan) { getWindow() .addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCR EEN_ON); Log.i(DBAdapter.TAG, "nur e safhe rushan mimanad"); } T2_text.setText(dastan.getTell()); int imageResource = c.getResources().getIdentifier(dastan.getAx2(), "drawable", c.getPackageName()); ax2.setImageResource(imageResource); } @Overridepublic void onBufferingUpdate(MediaPlayer mediaPlayer, int percent){ seekBar.setSecondaryProgress(percent);}@Overridepublic void onCompletion(MediaPlayer mp){ btn_play.setEnabled(true); btn_pause.setEnabled(false); btn_stop.setEnabled(false);}@Overridepublic boolean onTouch(View v, MotionEvent event){ if (mediaPlayer.isPlaying()) { SeekBar tmpSeekBar = (SeekBar)v; mediaPlayer.seekTo((lengthOfAudio / 100) * tmpSeekBar.getProgress() ); } return false;}@Overridepublic void onClick(View view){ try { mediaPlayer.setDataSource(URL); mediaPlayer.prepare(); lengthOfAudio = mediaPlayer.getDuration(); } catch (Exception e) { //Log.e("Error", e.getMessage()); } switch (view.getId()) { case R.id.btn_play: playAudio(); break; case R.id.btn_pause: pauseAudio(); break; case R.id.btn_stop: stopAudio(); break; default: break; } updateSeekProgress();}private void updateSeekProgress(){ if (mediaPlayer.isPlaying()) { seekBar.setProgress((int)(((float)mediaPlayer.getC urrentPosition() / lengthOfAudio) * 100)); handler.postDelayed(r, 1000); }}private void stopAudio(){ if(mediaPlayer!=null) { mediaPlayer.stop(); } btn_play.setEnabled(true); btn_pause.setEnabled(false); btn_stop.setEnabled(false); seekBar.setProgress(0);}private void pauseAudio(){ if(mediaPlayer!=null) { mediaPlayer.pause(); } btn_play.setEnabled(true); btn_pause.setEnabled(false);}private void playAudio(){ if(mediaPlayer!=null) { mediaPlayer.start(); } btn_play.setEnabled(false); btn_pause.setEnabled(true); btn_stop.setEnabled(true);} @Override protected void onPause() { // TODO Auto-generated method stub super.onPause(); db.updateContact(dastan); db.close(); } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); db.open(); }}Cursor cursor = G.database.rawQuery("SELECT * FROM Track WHERE Singer ='" + Singername + "' ORDER BY Year DESC", null);
public ArrayList<StructTrack> Note = new ArrayList<StructTrack>();
while (cursor.moveToNext()) {
StructTrack Track = new StructTrack();
Track.Url = cursor.getString(cursor.getColumnIndex("Url"));
Track.Trackname = cursor.getString(cursor.getColumnIndex("Name"));
Note.add(Track);
}
این کد میاد یه سلکت میزنه به دیتابیست با شرطی که مورد نظرت هست (مثلا اینجا من اومدم روی سطرهایی که خواننده ی مورد نظرم هست سلکت کردم)
بعدش توی while میاد یکی یکی ستون های url و هرچیزی دیگه مثل سال انتشار یا ... که توی دیتابیس تعریف کردیو میگیری و میریزی توی لیست آرایه ی نوت که قبلا تعریف شده و در پایان همه ی لینکها توی آرایه ی note ذخیره میشن
و میتونی ازشون استفاده کنی
استاد آقاجانی توی بخش database کامل توضیح دادند پیشنهاد میکنم یه بار با دقت ببینید.
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .