۱۳۹۴/۰۸/۰۷, ۱۲:۳۹ ب.ظ
سلام
دوستان من براي پخش آنلاين mp3 با اين دستور :
فايل رو از سرور فراخوني و پخش مي کنه
من مجبورم براي هر فايل که مي خوام پخش کنم يه اکتيويتي جديد ايجاد کنم ،
راه حل مناسبتري سراغ داريد ؟
مثلا اين کد رو ببنيد :
اين کد اکتيويتي من ، تکست ويو ها رو مطالبشونو از ديتابيس برمي داره و من مجبورم براي اين که لينک فايل mp3 رو بدم از اون کد استفاده کنم
مي تونم يه ستون در ديتابس اظافه کنم و آدرس تمام فايل ها روي سرور رو داخلش وارد کنم و از رو اون بخونمه؟
البته اين کد رو از نت پيدا کردم ولي نمي دونم جواب مي ده يا نه :
دوستان من براي پخش آنلاين 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();