2012-01-30 43 views
1

我想在对话框中播放声音。但不知何故,它不起作用。我不确定是因为它在对话框中。无法在对话框中使用android MediaPlayer播放声音?

File file = new File(Environment.getExternalStorageDirectory(),"/record"); 
    final String soundUri = file.getAbsolutePath() + "/" +childName; 
    RelativeLayout layout = new RelativeLayout(MLT_File.this); 

    final MediaPlayer mp = MediaPlayer.create(MLT_File.this, Uri.parse(soundUri)); 

    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT); 
    params.setMargins(0, 20, 0, 0); 
    LinearLayout layout2 = new LinearLayout(MLT_File.this); 
    layout2.setLayoutParams(params); 
    layout2.setGravity(Gravity.CENTER); 
    final ImageButton btn = new ImageButton(MLT_File.this); 
    btn.setImageDrawable(this.getResources().getDrawable(android.R.drawable.ic_media_play)); 
    layout2.addView(btn); 

    layout.addView(layout2); 

    btn.setOnClickListener(new OnClickListener() 
    { 
     @Override 
     public void onClick(View v) 
     { 
      // TODO Auto-generated method stub 
      if(mp.isPlaying()) 
      { 
       mp.pause(); 
       btn.setImageDrawable(MLT_File.this.getResources().getDrawable(android.R.drawable.ic_media_play)); 
      }//video is playing 

      else 
      { 
       mp.start(); 
       btn.setImageDrawable(MLT_File.this.getResources().getDrawable(android.R.drawable.ic_media_pause)); 
      } 
     } 
    });//onClickListener 

    AlertDialog.Builder builder = new AlertDialog.Builder(MLT_File.this); 
    builder.setView(layout); 
    builder.setCancelable(false); 
    builder.setPositiveButton("Delete", new DialogInterface.OnClickListener() 
    { 
     @Override 
     public void onClick(DialogInterface dialog, int which) 
     { 
      // TODO Auto-generated method stub 
      mp.stop(); 
      itemClick (1,soundUri); 
     } 
    });//delete 

    builder.setNeutralButton("Share", new DialogInterface.OnClickListener() 
    { 
     @Override 
     public void onClick(DialogInterface dialog, int which) 
     { 
      // TODO Auto-generated method stub 
      mp.stop(); 
      itemClick (3,soundUri); 
     } 
    });//share 

    builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() 
    { 
     @Override 
     public void onClick(DialogInterface dialog, int which) 
     { 
      // TODO Auto-generated method stub 
      mp.stop(); 
      dialog.dismiss(); 
     }   
    });//cancel 
    builder.create().show(); 

只有1个错误:

01-30 16:27:29.251: E/MediaPlayer-JNI(32416): setDataSource: outside path in JNI is �[email protected] 

我使用媒体播放器的想法来自Android: Playing an audio clip onClick

回答

2

只要使用,

private MediaPlayer mp = new MediaPlayer(); 
mp.reset(); 
mp.setDataSource(soundUri); 
mp.prepare(); 
mp.start(); 

让我知道发生什么事。 。

也看看这个例子MusicDroid - Audio Player Part I

+0

它不工作。我是否需要在清单中添加任何内容以访问它? – Jovi 2012-01-31 01:06:14

+0

它的工作原理..但因为我没有设定音量,所以我认为它没有。谢谢 ! – Jovi 2012-02-07 08:53:26

+0

欢迎伙伴..!快乐编码..! – user370305 2012-02-07 09:56:35

相关问题