我感兴趣的是我有一个播放,停止和暂停按钮。现在,我只能用这些按钮播放一首歌。
我想要做的是使用按钮提供各种各样的歌曲。
当有人点击他们想要收听的歌曲的按钮时,它会开始播放,但仍然可以通过相同的播放,暂停和停止按钮进行控制。
如果这是一个低级别的问题,请原谅我。我是Android新手。我已经做了很多搜索,我已经看过制作音响播放器的教程,但这不是我想要的。
public class SecondActivity extends ActionBarActivity implements OnClickListener {
MediaPlayer mp, mp2;
ImageButton play, pause, stop;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
play = (ImageButton) findViewById(R.id.playbutton);
pause = (ImageButton) findViewById(R.id.pausebutton);
stop = (ImageButton) findViewById(R.id.stopbutton);
play.setOnClickListener(this);
pause.setOnClickListener(this);
stop.setOnClickListener(this);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment()).commit();
setupNavigationButton();
}
}
public void onClick(View v) {
switch(v.getId()) {
case R.id.song1 : if(mp == null){
mp = MediaPlayer.create(this, R.raw.joker);
}
mp.start();
break;
case R.id.playbutton : if(mp == null) {
mp = MediaPlayer.create(this, R.raw.gorillaz);
}
mp.start();
break;
case R.id.pausebutton : mp.pause();break;
case R.id.stopbutton : mp.stop(); mp = null;break;
}
}
private void setupNavigationButton(){
Button button = (Button) findViewById(R.id.back);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText( SecondActivity.this, "You Clicked it!", Toast.LENGTH_LONG).show();
//startActivity(new Intent(MainActivity.this,SecondActivity.class));
finish();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.second, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
/**
* A placeholder fragment containing a simple view.
*/
public static class PlaceholderFragment extends Fragment {
public PlaceholderFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_second,
container, false);
return rootView;
}
}
}
这是我的代码,它运行。非常感谢任何帮助。
答案 0 :(得分:0)
我相信您可以使用int[]
数组实现此功能。例如:
int[] songList = {R.id.gorillaz, R.id.falloutboy, R.id.takingbacksunday, R.id.pink};
在onCreate()
和(例如)中定义此变量,如果您每次都想随机开始新歌,请替换
case R.id.playbutton : if(mp == null) {
mp = MediaPlayer.create(this, R.raw.gorillaz);
}
mp.start();
带
case R.id.playbutton : mp = null;
mp = MediaPlayer.create(this, songList[(int Math.random())%songList.length()]);
mp.start();
其中(int Math.random())%songList.length()
是一个函数,用于生成与songList
数组一起使用的范围内的随机整数。
编辑:
基于评论,这是我的建议:
您需要一种方法来选择您想要播放的歌曲。我将为每首歌使用不同的按钮,但你也可以有一个微调器来选择歌曲并有一个播放/暂停/停止控制台。
为每首歌创建一个按钮。为每个类似的创建一个onClickListener,如:
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
startSong(R.id.falloutboy); // Say this is Fall Out Boy's button
}
}
其中startSong()
的输入是与按钮关联的ID。
然后您的startSong(int res)
方法是:
startSong(int res) {
if(mp == null) {
mp = MediaPlayer.create(this, res);
} else {
mp.stop;
mp = MediaPlayer.create(this, res);
mp.start;
}
}
在审核中,您将拥有1个媒体播放器,每个按钮调用一个方法,将参考ID传递给与该按钮相关联的歌曲,该方法将检查播放器是否已创建,如果已创建,则将其停止用新歌重新创作。因此,主要的暂停和停止按钮将影响同一个媒体播放器。
答案 1 :(得分:0)
private MediaPlayer mp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
MediaPlayer mp = new MediaPlayer();
mp = MediaPlayer.create(this, R.raw.song1);
mp.prepare();
}
public void onClick(View v) {
switch(v.getId())
{
case R.id.song1:
if (mp != null)
{
mp.stop();
mp.release();
}
mp = new MediaPlayer();
mp = MediaPlayer.create(this, R.raw.song1);
mp.prepare();
break;
case R.id.song2:
if (mp != null)
{
mp.stop();
mp.release();
}
mp = new MediaPlayer();
mp = MediaPlayer.create(this, R.raw.song2);
mp.prepare();
break;
//...more songs
case R.id.play_pause_button:
if (mp != null)
{
if(mp.isPlaying())
{
mp.pause();
((Button)v).setText("Play");
}
else
{
mp.start();
((Button)v).setText("Pause");
}
}
break;
case R.id.stopbutton:
if (mp != null)
{
mp.stop();
mp.release();
mp = null;
}
break;
}
}