ورود

View Full Version : دریافت متغیر از دیتابیس



Apriliyaa
پنج شنبه 07 آبان 1394, 10:28 صبح
سلام
دوستان من برای پخش آنلاین 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_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);
}


@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.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();
}


}





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

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

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



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

Apriliyaa
جمعه 08 آبان 1394, 18:02 عصر
جوابی نبیود؟؟؟؟/؟

pbm_soy
جمعه 08 آبان 1394, 23:08 عصر
این برنامه شما کمی مبهم است!
احتمالا کامل اینجا نگذاشتید و کسی بخواد جواب بده باید همه کد شما را بخونه تا بفهمه چیکار کردید!
تو این جایی ندیدم که از دیتابیس خوانده باشید! فقط بهش وصل شدید و بازکردید!
احتمالا داخل کلاس dastan دیتابیس را خواندید و داخل خصوصیات آن کلاس مقادیر دیتابیسی که خواندید را ست کردید چون مقادیر تکست ویوها را از dastan گرفتید! بهتر بود کلاس dastan را هم اینجا میگذاشتید!
در هر صورت شما در دیتابیس در جدول داستان فیلد آدرس mp3 را از نوع رشته ای اضافه میکردید و در کلاس داستان هم مقدار آن فیلد را به همراه دیگر مقادیر که خواندید میخواندید ودر خصوصیتی مانند dastan.mp3 میگذاشتید و دیتاسورس مدیاپلیر را توسط آن ست میکردید!

در جواب سوال نهایی شما بله نام ومسیر فایلهای صوتی را میتوانستید از دیتابیس بخوانید البته به شرطی که در دیتابیس چنین فیلدی داشته باشید

Apriliyaa
شنبه 09 آبان 1394, 10:40 صبح
اینو ببنید :

play.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
String url = database.getUrl();
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM _MUSIC);
try {
mediaPlayer.setDataSource(url);
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
mediaPlayer.prepareAsync();
//You can show progress dialog here untill it prepared to play
mediaPlayer.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
//Now dismis progress dialog, Media palyer will start playing
mp.start();
}
});
mediaPlayer.setOnErrorListener(new OnErrorListener() {
@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
// dissmiss progress bar here. It will come here when MediaPlayer
// is not able to play file. You can show error message to user
return false;
}
});



کاری که این کد می کنه رو می خوام داخل برنامه ی خودم بیارم

اون dastan رو هم براتون قرار می دم :



package ir.db.database;
import android.os.Parcel;import android.os.Parcelable;
public class Dastan implements Parcelable {
private int id; private String onvan; private String tell; private String adres; private String tasvir; private String fav; private String mail; private String ezafi; private String ax2; private static String ax1;
public Dastan() {
}
public int getId() { return id; }
public void setId(int id) { this.id = id; }
public String getOnvan() { return onvan; }
public void setOnvan(String onvan) { this.onvan = onvan; }
public String getTell() { return tell; }
public void setTell(String tell) { this.tell = tell; }
public String getAdres() { return adres; }
public void setAdres(String adres) { this.adres = adres; }
public String getTasvir() { return tasvir; }
public void setTasvir(String tasvir) { this.tasvir = tasvir; }
public String getFav() { return fav; }
public void setFav(String fav) { this.fav = fav; }
public String getMail() { return mail; }
public void setMail(String mail) { this.mail = mail; }
public String getEzafi() { return ezafi; }
public void SetEzafi(String ezafi) { this.ezafi = ezafi; }
public String getAx2() { return ax2; }
public void SetAx2(String ax2) { this.ax2 = ax2; }
public static String getAx1() { return ax1; }
public void SetAx1(String ax1) { this.ax1 = ax1; }
public Dastan(Parcel in) { id = in.readInt(); onvan = in.readString(); tell = in.readString(); adres = in.readString(); tasvir = in.readString(); fav = in.readString(); mail = in.readString(); ezafi = in.readString(); ax2 = in.readString(); ax1 = in.readString(); }
@Override public int describeContents() { // TODO Auto-generated method stub return 0; }
@Override public void writeToParcel(Parcel dest, int arg1) { // TODO Auto-generated method stub dest.writeInt(id); dest.writeString(onvan); dest.writeString(tell); dest.writeString(adres); dest.writeString(tasvir); dest.writeString(fav); dest.writeString(mail); dest.writeString(ezafi); dest.writeString(ax2); dest.writeString(ax1); }
public static final Parcelable.Creator<Dastan> CREATOR = new Parcelable.Creator<Dastan>() {
@Override public Dastan createFromParcel(Parcel arg0) { // TODO Auto-generated method stub return new Dastan(arg0); }
@Override public Dastan[] newArray(int arg0) { // TODO Auto-generated method stub return new Dastan[arg0]; } };
public CharSequence Matn3() { // TODO Auto-generated method stub return null; }
}