невозможно воспроизвести звук с помощью Android MediaPlayer в диалоговом окне? - PullRequest
1 голос
/ 30 января 2012

Я пытаюсь воспроизвести звук в диалоговом окне. Но почему-то это не работает. Я не уверен, потому что это в диалоге или около того.

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 �x@

У меня появилась идея использовать медиаплеер с Android: Воспроизведение аудиоклипа на клике

1 Ответ

2 голосов
/ 30 января 2012

Просто используйте,

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

И дайте мне знать, что произойдет ..

Также посмотрите на этот пример MusicDroid - Audio Player Part I

...