【问题标题】:Getting Null Pointer Exception in MediaPlayer in Android?在 Android 的 MediaPlayer 中获取空指针异常?
【发布时间】:2013-06-28 09:08:35
【问题描述】:

我正在努力在 MEDIA PLAYER 中实用地播放铃声。在此之前,我已将我所有的 RINGTONES 绝对路径存储在 SQLite DB 中。当我必须播放铃声时,我需要从 DB 中获取路径并将其转换为 URI 并播放铃声,但我在下面代码的第 2 行中得到 NULL POINTER EXCEPTION。

    Uri u = Uri.parse(soundpath);
    player = MediaPlayer.create(this, u);
    Context con  =getApplicationContext();
    player.setWakeMode(con,PowerManager.PARTIAL_WAKE_LOCK);
    player.setVolume(1f, 1f);
    player.start();

在调试时,我将变量 soundpath 的值设为 /content:/media/internal/audio/media/23

请给我建议。

已编辑:用于将所有铃声存储在 HASHMAP 中的代码

 Ringtone ringtone = ringtoneMgr.getRingtone(currentPosition);
                System.out.println(ringtone.getTitle(this));
                File uripath=new File(ringtoneMgr.getRingtoneUri(currentPosition).toString());
   Toast.LENGTH_LONG).show();
                ringtonemap.put(ringtone.getTitle(this), uripath.getAbsolutePath());
                arraylist.add(ringtone.getTitle(this));

【问题讨论】:

  • 那个 uri 看起来不对。应该是content://media/internal/audio/media/23 - 你存储正确吗?
  • 我将 'content:/media/internal/audio/media/23' 作为 URI 并将其转换为绝对路径并将其保存到 hashmap。
  • 即使是错误的 uri 也不应该导致第 2 行出现空指针异常。所以我不确定发生了什么。请发布堆栈跟踪和最好的更多媒体播放器创建代码(它在什么上下文中,等等)?
  • 我认为你是对的,我已经复制粘贴了你指定的 URI,它现在正在工作。
  • 我已经添加了我的答案:)

标签: android media-player uri ringtone


【解决方案1】:

那个 uri 看起来不正确。应该是content://media/internal/audio/media/23 - 你存储正确吗?

确保正确存储它们。如果无法更改它们的存储方式,您始终可以在传递给MediaPlayer之前正确格式化它们

soundpath = soundpath.replaceAll("/content:/", "content://");

【讨论】:

    【解决方案2】:

    我正在将 URI 路径从 String 转换为 File,这不是必需的。 错误出现在路径生成时间。 新代码贴在下面:

    Ringtone ringtone = ringtoneMgr.getRingtone(currentPosition);
                System.out.println(ringtone.getTitle(this));
            String  uri =ringtoneMgr.getRingtoneUri(currentPosition).toString();
    Toast.LENGTH_LONG).show();
                ringtonemap.put(ringtone.getTitle(this),uri);
                arraylist.add(ringtone.getTitle(this));
    

    在我不得不播放铃声的时候:

    player = MediaPlayer.create(this, Uri.parse(soundpath));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-16
      相关资源
      最近更新 更多