【问题标题】:How can i play songs from res folder using one media player如何使用一个媒体播放器播放 res 文件夹中的歌曲
【发布时间】:2013-09-21 11:04:03
【问题描述】:

我在 res 文件夹中有 2 首歌曲如何使用 mediaplayer 播放它们

我已将此代码用于 2 首不同的歌曲,如何使用一个媒体播放器播放歌曲

public class Nationalanthem 扩展 Activity{

int songs[]={R.drawable.inno,R.drawable.vandemataram};
MediaPlayer mp;
ImageButton play,stop,b1,b2,back,exit,b3;
//Button back,exit;
MediaPlayer mediaPlayer,mediaplayer1;
RadioGroup rg;
RadioButton van,jana;
@Override

protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.natinal_play);



         mp=new MediaPlayer();
         back=(ImageButton)findViewById(R.id.imageButton6);
         exit=(ImageButton)findViewById(R.id.imageButton5);

         b1=(ImageButton)findViewById(R.id.imageButton3);
         b2=(ImageButton)findViewById(R.id.imageButton2);
         b3=(ImageButton)findViewById(R.id.exitbton);
         rg=(RadioGroup)findViewById(R.id.radioGroup1);
         van=(RadioButton)findViewById(R.id.radiov);
         jana=(RadioButton)findViewById(R.id.Radioja);

         //mediaPlayer = MediaPlayer.create(getApplicationContext(),R.drawable.inno);
         //mediaplayer1 = MediaPlayer.create(getApplicationContext(),R.drawable.vandemataram);



     b1.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub                                  
                rg.setOnCheckedChangeListener(new OnCheckedChangeListener() {

                    @Override
                    public void onCheckedChanged(RadioGroup group, int checkedId) {
                        // TODO Auto-generated method stub
                        if (mediaPlayer != null)
                           // mediaPlayer.reset();
                        switch (checkedId) {
                        case R.id.radiov:
                            mediaPlayer = MediaPlayer.create(getApplicationContext(),songs[0]);
                            mediaPlayer.start();
                            break;
                        case R.id.Radioja:
                            mediaPlayer = MediaPlayer.create(getApplicationContext(),songs[1]);
                            mediaPlayer.start();
                            break;
                        default:
                            break;
                        }



                    }
                });

            }
        });

         b2.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                //mediaPlayer.release();
                mediaPlayer.stop();
                mediaPlayer = MediaPlayer.create(getApplicationContext(),R.drawable.inno);
            }
        });

         b3.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                mediaPlayer.pause();
                //mediaplayer1.pause();
            }
        });

back.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub
        //mediaplayer1.stop();

        mediaPlayer.stop();
        mediaPlayer = MediaPlayer.create(getApplicationContext(),R.drawable.inno);
    Intent i2= new Intent(getApplicationContext(),Second.class);
    startActivity(i2);
    //finish();
    }
}); 
exit.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub
        //mediaplayer1.stop();

        AlertDialog.Builder altert =new AlertDialog.Builder(Nationalanthem.this);
        altert.setTitle("Exit");
        altert.setIcon(R.drawable.ic_launcher);
        altert.setMessage("Are you sure want to exit");
        altert.setPositiveButton("Yes",new DialogInterface.OnClickListener()
        { 
            public void onClick(DialogInterface dialog, int which)
        {
                Intent intent = new Intent(Intent.ACTION_MAIN);
                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
                intent.addCategory(Intent.CATEGORY_HOME);   
                intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                finish();
                startActivity(intent);
                mediaPlayer.stop();
                mediaPlayer = MediaPlayer.create(getApplicationContext(),R.drawable.inno);
                mediaplayer1.stop();
                mediaplayer1 = MediaPlayer.create(getApplicationContext(),R.drawable.vandemataram);     

        }

        });

        altert.setNegativeButton("No",new DialogInterface.OnClickListener() {

            public void onClick(DialogInterface dialog, int which) {
                //Toast.makeText(getApplicationContext(), "this is delete",Toast.LENGTH_LONG).show();

            }
        });

        altert.show();
            //System.exit(0);
    }


});



}


}

我现在无法听歌没有声音

【问题讨论】:

  • 你可以为它制作一个数组,并通过它从那个数组中得到的位置来播放歌曲......
  • 好的,已经创建了一个数组,但是如何在媒体播放器中使用
  • 告诉我如何使用它

标签: android


【解决方案1】:

如您所见in the documentation,您可以使用reset() 将媒体播放器恢复到初始状态。

【讨论】:

    【解决方案2】:

    您可以将文件放在asset 目录下,并使用File.listFiles() 方法获取文件列表。然后使用这个:

    for (File file : files) {
        AssetFileDescriptor afd = getAssets().openFd(file.getName());
        player = new MediaPlayer();
        player.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(),afd.getLength());
        player.prepare();
        player.start();
        // Do other tasks
    }
    

    欲了解更多信息,请查看this

    【讨论】:

      【解决方案3】:

      试试这个代码

      Integer songs[]={R.drawable.inno,R.drawable.rock,R.drawable.hello};
      
      next.setOnClickListener(new OnClickListener() {
      
              @Override
              public void onClick(View v) {
                  mediaPlayer.reset();
                  mediaPlayer = MediaPlayer.create(getApplicationContext(),song[index]);
                  mediaPlayer.start();
      
              }
          });
      

      编辑 - 使用 RadioGroup

      radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {
      
              @Override
              public void onCheckedChanged(RadioGroup group, int checkedId) {
                  // TODO Auto-generated method stub
                  if (mediaPlayer != null)
                      mediaPlayer.reset();
                  switch (checkedId) {
                  case R.id.radiov:
                      mediaPlayer = MediaPlayer.create(getApplicationContext(),song[0]);
                      mediaPlayer.start();
                      break;
                  case R.id.Radioja:
                      mediaPlayer = MediaPlayer.create(getApplicationContext(),song[1]);
                      mediaPlayer.start();
                      break;
                  default:
                      break;
                  }
      
      
      
              }
          });
      

      【讨论】:

      • switch(id1) { case R.id.radiov: mediaPlayer=MediaPlayer.create(getApplicationContext(), song[0]);媒体播放器.start();休息;案例 R.id.Radioja: mediaPlayer=MediaPlayer.create(getApplicationContext(), song[1]); mediaPlayer.start();休息; } 在这里我只播放第一首歌曲 m 无法播放第二首歌曲。
      • 这里我使用电台组播放了 2 首歌曲,我一次只能播放一首歌曲。当我点击暂停时,歌曲从第一首开始播放
      • 我已经在 onclick 方法中为播放按钮编写了 switch case
      • 嘿,当我在新项目中使用它时它正在工作,但是我如何暂停和停止我已经尝试过但我很困惑
      • mOnVideoSizeChangedListener 为空。发送 MEDIA_SET_VIDEO_SIZE 消息失败。我得到这个 eeor
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多