کلیدستان

نسخه‌ی کامل: دریافت آدرس فایل صوتی از دیتابس جهت پخش آن
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام 
دوستان من براي پخش آنلاين mp3 با اين دستور :


کد:
private MediaPlayer mediaPlayer;
private int lengthOfAudio;
private final String URL = "http://server8.mp3quran.net/bu_khtr/001.mp3";
.
.
.
mediaPlayer.setDataSource(URL);
mediaPlayer.prepare();
lengthOfAudio = mediaPlayer.getDuration();
فايل رو از سرور فراخوني و پخش مي کنه

من مجبورم براي هر فايل که مي خوام پخش کنم يه اکتيويتي جديد ايجاد کنم ،

راه حل مناسبتري سراغ داريد ؟

مثلا اين کد رو ببنيد :

کد:
package ir.gilan.android;


کد:
import java.io.IOException;



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_SCREEN_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);
     }
    

@Override
public void onBufferingUpdate(MediaPlayer mediaPlayer, int percent)
{
       seekBar.setSecondaryProgress(percent);
}


@Override
public void onCompletion(MediaPlayer mp)
{
       btn_play.setEnabled(true);
       btn_pause.setEnabled(false);
       btn_stop.setEnabled(false);
}


@Override
public boolean onTouch(View v, MotionEvent event)
{
       if (mediaPlayer.isPlaying())
       {
              SeekBar tmpSeekBar = (SeekBar)v;
              mediaPlayer.seekTo((lengthOfAudio / 100) * tmpSeekBar.getProgress() );
       }
       return false;
}


@Override
public 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.getCurrentPosition() / 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();
    }


}




اين کد اکتيويتي من ، تکست ويو ها رو مطالبشونو از ديتابيس برمي داره و من مجبورم براي اين که لينک فايل mp3 رو بدم از اون کد استفاده کنم 

مي تونم يه ستون در ديتابس اظافه کنم و آدرس تمام فايل ها روي سرور رو داخلش وارد کنم و از رو اون بخونمه؟

البته اين کد رو از نت پيدا کردم ولي نمي دونم جواب مي ده يا نه :

کد:
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.
setDataSource(streamingURL);
mediaPlayer.prepare();
mediaPlayer.start();
 

 
کسی نظری نداره؟
منظورتون رو دقیق بگید.مثلا این قسمت کد آخری که گذاشتید با کدی که در ابتدای موضوع گذاشتید چه فرقی میکنه؟.جفتش یه کار رو میکنه.

نقل قول:مي تونم يه ستون در ديتابس اظافه کنم و آدرس تمام فايل ها روي سرور رو داخلش وارد کنم و از رو اون بخونمه؟

خب میتونید کل آدرسها رو به صورت رشته بخوابونید توی یک ستون از دیتبایس و بعد از اونا استفاده کنید.
واسه استفاده هم، از دیتابیس رشته مورد نظر رو بگیرید  و داخل متغیر زیر بخوابونید و استفاده کنید.

کد:
String URL;
این دو تا یک عمل رو انجام میدن ؟
کد پی‌اچ‌پی:
mediaPlayer.setDataSource(URL); 
و 
کد پی‌اچ‌پی:
setDataSource(streamingURL); 

فرق این دو رو می خوام 
در اون موردی که فرمودید یه مقدار روشن تر عنوان می کنید 
ممنون