Почему я не могу воспроизвести mp3 файл в Android? - PullRequest
0 голосов
/ 08 сентября 2011

Я реализовал этот код для воспроизведения звукового файла, доступного в файле res / drawable / testing123.mp3.Код:

 public void playSound()
    {
        boolean mStartPlaying = true;
        if (mStartPlaying==true) 
        {
//          String word = wordValue.getText().toString();
            String file = Environment.getExternalStorageDirectory().getAbsolutePath();
            String sound = file+"/testing123.mp3";
            //System.out.println("Before Allocation file is: "+file);
            //rePlay.setText("Stop");
            mPlayer = new MediaPlayer();
            try 
            {
                mPlayer.setDataSource(sound);
                mPlayer.prepare();
                mPlayer.start();
            } 
            catch (IOException e) 
            {
                Log.e(LOG_TAG, "prepare() failed");
            }
        } 
        else 
        {
           //   stopPlaying();
            //rePlay.setText("Replay");
            mPlayer.release();
            mPlayer = null;
        }
        mStartPlaying = !mStartPlaying;
    }

Но я не могу его воспроизвести.Звуковой файл находится в файле res / drawable / testing123.mp3

Так что, пожалуйста, помогите мне, почему я не могу воспроизвести этот файл?Спасибо.

Ответы [ 4 ]

1 голос
/ 01 ноября 2011

Ваша проблема - разрешение файла.

По умолчанию при записи в FileOutputStream вы получаете тип разрешения rw -, ---, --- (600).MediaPlayer не сможет воспроизвести файл, если вы не дадите ему «разрешение на чтение» для «других»: по крайней мере, rw -, ---, r-- (604).

Я рекомендую 644 (rw,r, r) и вы можете использовать следующую команду:

Runtime.getRuntime (). exec ("chmod 644" + PATH_TO_YOUR_FILE);

После этого вы сможете игратьсохраненный медиафайл

1 голос
/ 08 сентября 2011
MediaPlayer player = new MediaPlayer.create(context, URI);
player.start();

Это должно быть достаточно, просто убедитесь, что ваш URI правильный.

1 голос
/ 08 сентября 2011
in my case it works.i add external storage permission.dont know whether it is needed.you first have to copy the music file to sdCard.and check ur mplayer is initiated or not.

public void playSound()
    {
        MediaPlayer mPlayer;
        mPlayer=new MediaPlayer();
        boolean mStartPlaying = true;
        if (mStartPlaying==true) 
        {


                String file = Environment.getExternalStorageDirectory().getAbsolutePath();


                try {

                    mPlayer.setDataSource(file+"/30.mp3"); mPlayer.prepare(); mPlayer.start();
                    ;
                    } 
                catch (Exception e) 
                    {e.printStackTrace(); } }
        else { 
     mStartPlaying = !mStartPlaying; }
}
1 голос
/ 08 сентября 2011

В своих приложениях я помещаю аудиофайлы в папку / res / raw. Например, у меня есть файл mp3, используемый для уведомлений, под названием «notify.mp3» в моей папке raw, и я могу получить к нему доступ

Uri uri = Uri.parse("android.resource://com.darrenmowat.boothr/" + R.raw.notify);

Вы можете использовать

mPlayer.setDataSource(context, uri);

для установки источника данных.

...