代码之家  ›  专栏  ›  技术社区  ›  Kyle Banerjee

播放默认铃声

  •  8
  • Kyle Banerjee  · 技术社区  · 15 年前

    我一直试图使用SoundPool来播放默认铃声,但没有成功。在下面的代码中

    String ringtone = Settings.System.DEFAULT_RINGTONE_URI.getPath();
    SoundPool ringPhone = new SoundPool(2, AudioManager.STREAM_RING, 1);
    int soundID = ringPhone.load(Settings.System.DEFAULT_RINGTONE_URI.getPath(), 1);
    int soundID = ringPhone.load(ringtone, 1);
    ringPhone.play(soundID, 0.99f, 0.99f, 1, 0, 1);
    

    我收到消息“加载内容/系统/铃声示例0时出错,未就绪”。用硬路径将URI替换为SD卡上现有的MP3文件产生类似的结果。

    我做错什么了?谢谢,

    凯尔

    1 回复  |  直到 15 年前
        1
  •  25
  •   Dave MacLean    13 年前

    你可能不想在这种类型的音频播放中使用声音池。SoundPool通常用于播放非常小的音频片段,存储为本地文件,甚至比大多数铃声都小。你应该考虑用MediaPlayer代替。以下几点应该很管用:

    MediaPlayer player = MediaPlayer.create(this,
        Settings.System.DEFAULT_RINGTONE_URI);
    player.start();
    

    尽管您没有权限从应用程序访问该铃声,但您可能会收到一个FileNotFoundException。