[英]android automatically Start onClick when open activity
public class StreamingMp3Player extends Activity implements OnClickListener, OnTouchListener, OnCompletionListener, OnBufferingUpdateListener{
private ImageButton buttonPlayPause;
private SeekBar seekBarProgress;
public EditText editTextSongURL;
private MediaPlayer mediaPlayer;
private int mediaFileLengthInMilliseconds;
private final Handler handler = new Handler();
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initView();
}
/** This method initialise all the views in project*/
private void initView() {
buttonPlayPause = (ImageButton)findViewById(R.id.ButtonTestPlayPause);
buttonPlayPause.setOnClickListener(this);
seekBarProgress = (SeekBar)findViewById(R.id.SeekBarTestPlay);
seekBarProgress.setMax(99); // It means 100% .0-99
seekBarProgress.setOnTouchListener(this);
editTextSongURL = (EditText)findViewById(R.id.EditTextSongURL);
editTextSongURL.setText(R.string.testsong_20_sec);
mediaPlayer = new MediaPlayer();
mediaPlayer.setOnBufferingUpdateListener(this);
mediaPlayer.setOnCompletionListener(this);
}
private void primarySeekBarProgressUpdater() {
seekBarProgress.setProgress((int)(((float)mediaPlayer.getCurrentPosition()/ mediaFileLengthInMilliseconds)*100)); // This math construction give a percentage of "was playing"/"song length"
if (mediaPlayer.isPlaying()) {
Runnable notification = new Runnable() {
public void run() {
primarySeekBarProgressUpdater();
}
};
handler.postDelayed(notification,1000);
}
}
@Override
public void onClick(View v) {
if(v.getId() == R.id.ButtonTestPlayPause){
/** ImageButton onClick event handler. Method which start/pause mediaplayer playing */
try {
mediaPlayer.setDataSource(editTextSongURL.getText().toString()); // setup song from http://www.hrupin.com/wp-content/uploads/mp3/testsong_20_sec.mp3 URL to mediaplayer data source
mediaPlayer.prepare(); // you must call this method after setup the datasource in setDataSource method. After calling prepare() the instance of MediaPlayer starts load data from URL to internal buffer.
} catch (Exception e) {
e.printStackTrace();
}
mediaFileLengthInMilliseconds = mediaPlayer.getDuration(); // gets the song length in milliseconds from URL
if(!mediaPlayer.isPlaying()){
mediaPlayer.start();
buttonPlayPause.setImageResource(R.drawable.button_pause);
}else {
mediaPlayer.pause();
buttonPlayPause.setImageResource(R.drawable.button_play);
}
primarySeekBarProgressUpdater();
}
}
@Override
public boolean onTouch(View v, MotionEvent event) {
if(v.getId() == R.id.SeekBarTestPlay){
/** Seekbar onTouch event handler. Method which seeks MediaPlayer to seekBar primary progress position*/
if(mediaPlayer.isPlaying()){
SeekBar sb = (SeekBar)v;
int playPositionInMillisecconds = (mediaFileLengthInMilliseconds / 100) * sb.getProgress();
mediaPlayer.seekTo(playPositionInMillisecconds);
}
}
return false;
}
@Override
public void onCompletion(MediaPlayer mp) {
/** MediaPlayer onCompletion event handler. Method which calls then song playing is complete*/
buttonPlayPause.setImageResource(R.drawable.button_play);
}
@Override
public void onBufferingUpdate(MediaPlayer mp, int percent) {
/** Method which updates the SeekBar secondary progress by current song loading from URL position*/
seekBarProgress.setSecondaryProgress(percent);
}
}
Now this code Play mp3 When i click "buttonPlayPause" image button. 现在此代码播放mp3当我单击“ buttonPlayPause”图像按钮时。 But i need auto start this play button when i open this activity... it is possible?
但是我在打开此活动时需要自动启动此播放按钮...这可能吗?
My layout 我的布局
<TextView
android:text="Song Titile"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/SongTitle"/>
<TextView
android:layout_below="@+id/SongTitle"
android:text="The song URL"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/SongUrl"/>
<ImageButton
android:layout_below="@+id/SongUrl"
android:id="@+id/ButtonTestPlayPause"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:src="@drawable/button_play"/>
<SeekBar
android:layout_below="@+id/ButtonTestPlayPause"
android:id="@+id/SeekBarTestPlay"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:thumb="@drawable/thumb_transparent"/>
</RelativeLayout>
i am passing url from another activity ... i need if i open this activity start and play mp3 automatically.. dont want click play button 我正在从另一个活动传递URL ...我需要如果我打开此活动开始并自动播放mp3 ..不想单击“播放”按钮
move the onClick()
's logic inside a method, and call this method both from onClick and onCreate 将
onClick()
的逻辑移动到方法内部,并从onClick和onCreate调用此方法
private void myMethod() {
// logic here
}
@Override
public void onClick(View v) {
if(v.getId() == R.id.ButtonTestPlayPause){
myMethod();
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initView();
myMethod();
}
You can also execute in your onCreate statement: 您还可以在onCreate语句中执行:
Button button = findViewById(R.id.ButtonTestPlayPause);
button.performClick();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initView();
play();
}
and in your onclick(): 并在您的onclick()中:
if(v.getId() == R.id.ButtonTestPlayPause){
play();
}
and in play method use: 在玩法中使用:
public void play(){
try {
mediaPlayer.setDataSource(editTextSongURL.getText().toString());data source
mediaPlayer.prepare();
} catch (Exception e) {
e.printStackTrace();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.