为什么MediaPlayer无法启动?

时间:2015-08-09 03:38:48

标签: android android-mediaplayer ringtone

我有一个声音应该在活动开始onCreate时启动,因为这是一个警报。问题是,声音没有开始。我检查了我的音量,它已经开启了。

这是媒体播放器的代码:

    String tone = intent.getStringExtra("reminderTone");

    MediaPlayer mPlayer = new MediaPlayer();
    try {
        Log.d("log", "try");
        if (tone != null && !tone.equals("")) {
            Log.d("log", "tone is not null");
            Uri toneUri = Uri.parse(tone);
            if (toneUri != null) {
                Log.d("log", "mediaplayer starts");
                mPlayer.setDataSource(this, toneUri);
                mPlayer.setAudioStreamType(AudioManager.STREAM_ALARM);
                mPlayer.setLooping(true);
                mPlayer.prepare();
                mPlayer.start();
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

这是日志输出

08-09 10:55:33.316  20706-20706/? D/log﹕ try
08-09 10:55:33.317  20706-20706/? D/log﹕ tone is not null
08-09 10:55:33.317  20706-20706/? D/log﹕ mediaplayer starts

我已经检查了#34; reminderTone"其中有一个String URI。

这就是String URI的样子。 " android.media.Ringtone@ab91882"

我使用了另一种声音源进行测试,这个有效:

    //play ringtone
    final MediaPlayer sounds = MediaPlayer.create(this, R.raw.sample);
    sounds.start();

你们知道这有什么问题吗?

2 个答案:

答案 0 :(得分:1)

Context appContext = getApplicationContext();
MediaPlayer resourcePlayer = MediaPlayer.create(appContext, R.raw.my_audio);
MediaPlayer filePlayer = MediaPlayer.create(appContext, Uri.parse("file:///sdcard/localfile.mp3"));
MediaPlayer urlPlayer = MediaPlayer.create(appContext, Uri.parse("URL"));
MediaPlayer contentPlayer = MediaPlayer.create(appContext, Settings.System.DEFAULT_RINGTONE_URI);
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource("/sdcard/test.3gp");
mediaPlayer.prepare();

答案 1 :(得分:0)

您需要检查您的URI,确保使用正确的URI。

  

注意:URI字符串对于您所使用的每个存储媒体都是不同的   在我的例子中,我假设你正在寻找   原始文件夹中的音乐。

int i = R.raw.sample; // we assume that we want to get the URI of our sound from our RAW folder.
String uri = android.resource://com.example.myproject/" + i;

播放音乐时,您可以使用这种简单的方法

 MediaPlayer player = null;

 public void playMusic(int i) throws RemoteException {
            try {

                if (player == null)
                    player = new MediaPlayer();

                player.reset(); // optional if you want to repeat calling this method
                player.setDataSource(getApplicationContext(), uri);
                player.prepare();
                player.start();
            } catch (IOException e) {
                e.printStackTrace();
            }
 }

可以在此处下载完整的工作示例:Music Player Tutorial