如何让媒体播放器从应用程序播放音频文件

时间:2013-08-03 07:46:07

标签: android android-intent

我在我的应用程序中播放音频文件时遇到困难,这是我的代码:

Integer[] mAudio = {
    R.raw.audioa,
    R.raw.audiob,
    R.raw.audioc,
    R.raw.audiod,

};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.playing);  
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);


    Gallery gallery = (Gallery) findViewById(R.id.gallery4);
    gallery.setAdapter(new ImageAdapter(this));
    gallery.setOnItemClickListener(new OnItemClickListener() {

 public void onItemClick(AdapterView<?> parent, View v, final int position, long id){

final ImageView imageView = (ImageView) findViewById(R.id.Image7);
imageView.setImageResource(mFullSizeIds[position]);
mageView.setOnClickListener(new View.OnClickListener() {

@Override
Public void onClick(View arg0) {

    android.media.MediaPlayer.create(Audio.this,mAudio[position]);
    Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI);
    startActivity(intent);                           

         }
});

这个想法是当用户从图库中选择图像然后选择音频应该播放的较大图像时。但是,当我使用此代码时:

 MediaPlayer mp = MediaPlayer.create(Owls.this,mAudio[position]);  
 mp.start();

然后效果很好,但无法停止音频,当退出应用程序(主页键或后退键)时,音频会继续播放。我需要实现的是当用户选择图像时,它应该询问您想要使用哪个播放器,然后播放该图像的音轨。目前它只是调出我的整个媒体库而不是此代码中指定的音频文件:

android.media.MediaPlayer.create(Birds.this,mAudio[position]);

它应该只播放该图像的音频文件,而不是为这个应用程序调出整个音轨 任何人都有任何想法,请能帮助我吗? 感谢

1 个答案:

答案 0 :(得分:0)

它将解决您的问题之一:('无法停止音频和退出应用程序(主页键或后退键)音频继续播放')

这部分必须在每个活动的onPause:

Context context = getApplicationContext();
        ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
        List<RunningTaskInfo> taskInfo = am.getRunningTasks(1);
        if (!taskInfo.isEmpty()) {
          ComponentName topActivity = taskInfo.get(0).topActivity; 
          if (!topActivity.getPackageName().equals(context.getPackageName())) {
            player.stop();
            Toast.makeText(xYourClassNamex.this, "YOU LEFT YOUR APP", Toast.LENGTH_SHORT).show();
          }
        }

因此,当您退出应用时,您可以停止播放器。