【问题标题】:MediaPlayer is null on a Uri from external storageMediaPlayer 在来自外部存储的 Uri 上为空
【发布时间】:2023-04-07 23:13:01
【问题描述】:

我创建了一个闹钟应用。发生警报时,我想在MediaPlayer 中播放音频。 MediaPlayer 已创建并使用默认铃声成功运行,但在从外部存储中选择音频文件的情况下仍保持null

我在清单中提供了以下权限:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

mediaPlayer 的代码设置在BroadcastReciever 类中:

 @Override
    public void onReceive(Context context, Intent intent) {

        try {
            alarm_tone = Uri.parse(intent.getStringExtra("alarm_tone"));
             }catch (Exception ex){
                              alarm_tone = Settings.System.DEFAULT_RINGTONE_URI;
                              }
        Log.d("Uri", "Alarm tone recieved: " + (alarm_tone));     //result: OK

        MediaPlayer mediaPlayer=MediaPlayer.create(context, alarm_tone);

        mediaPlayer.setScreenOnWhilePlaying(true); //gives null pointer exception on this line in case of external Uri,, i.e. mediaPlayer is null in this case
        mediaPlayer.setLooping(true);
        mediaPlayer.start();
    }

以下是我选择音频文件并使用意图将其 Uri 数据 发送到BroadcastReciever 类的活动代码:

btnRingTone.setOnClickListener(new View.OnClickListener() {
              @Override
              public void onClick(View view) {
                  Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI);

                  startActivityForResult(intent, 10);
              }
          });


  @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

        if(resultCode == RESULT_OK && requestCode == 10){
            ringTone=data.getData();
        }
    }
    public void setAlarm(){
    Intent i=new Intent(this, AlarmReciver.class);
    i.putExtra("alarm_tone", ringtone.toString());
    ...
    }

音频文件选择成功。 UriAlarmReciever 类中也成功接收。但是 MediaPlayer 实例不是用它创建的。

【问题讨论】:

    标签: java android broadcastreceiver uri android-mediaplayer


    【解决方案1】:

    你想播放的文件可能不被android支持。 尝试使用其他文件并检查此问题的答案:Android MediaPlayer.Create() returns null

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-05
      • 2022-01-20
      • 2018-01-28
      • 2019-12-27
      • 1970-01-01
      • 2017-07-04
      相关资源
      最近更新 更多