Android 安卓媒体播放器声音不能与长期警报一起工作

Android 安卓媒体播放器声音不能与长期警报一起工作,android,android-mediaplayer,alarmmanager,android-alarms,android-wake-lock,Android,Android Mediaplayer,Alarmmanager,Android Alarms,Android Wake Lock,我用alarm manager制作了一个闹钟应用程序。如果我把闹钟设置在一到两个小时以内,它就会工作。但如果我设置的时间更长,报警管理器就会工作,我的布局就会出现,但声音不会播放。我正在使用唤醒锁,但它仍然没有播放。在那个问题之后,我使用SharedReferences来保存我的音乐文件的路径,但不再工作。这是我的代码,我希望我能解释我的问题,对不起,我的英语不好 文件选择器 @Override protected void onActivityResult(int requestCode, i

我用alarm manager制作了一个闹钟应用程序。如果我把闹钟设置在一到两个小时以内,它就会工作。但如果我设置的时间更长,报警管理器就会工作,我的布局就会出现,但声音不会播放。我正在使用唤醒锁,但它仍然没有播放。在那个问题之后,我使用SharedReferences来保存我的音乐文件的路径,但不再工作。这是我的代码,我希望我能解释我的问题,对不起,我的英语不好

文件选择器

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    switch (requestCode) {
        case REQUEST_CODE:
            // If the file selection was successful
            if (resultCode == RESULT_OK) {
                if (data != null) {
                    // Get the URI of the selected file
                    final Uri uri = data.getData();
                    Log.i(TAG, "Uri = " + uri.toString());
                    try {
                        // Get the file path from the URI
                        path = FileUtils.getPath(this, uri);
                        Toast.makeText(MainActivity.this,
                                "Dosya seçildi: " + path, Toast.LENGTH_LONG).show();
                    } catch (Exception e) {
                        Log.e("DosyaSeçici", "Dosya seçerken bir hata oluştu", e);
                    }
                }
            }
            break;
    }
    if(data == null){
                Toast.makeText(MainActivity.this,
                        "Dosya seçilmedi alarm sesi varsayılan olacak", Toast.LENGTH_LONG).show();
    }
    else{
    super.onActivityResult(requestCode, resultCode, data);
    mp = MediaPlayer.create(this, Uri.parse(path));
    mp.setLooping(true);
    editor.putString("yol", path);
    editor.commit();
    }
}
在我的generateNotification函数中,当出现报警时间时调用此函数

try{
          MainActivity.v.vibrate(1);
          mp = new MediaPlayer();
          if(MainActivity.path != null)
              mp.setDataSource(MainActivity.path);
          else
              mp.setDataSource(context, defaultRingtoneUri);
          mp.prepare();
          mp.start();
          mp.setOnCompletionListener(new OnCompletionListener() 
            {
                @Override
                public void onCompletion(MediaPlayer arg0) 
                {
                    mp.start();
                }});
    }
我将'path=preferences.getStringyol,null'放在onCreate,MainActivity中

还有我的唤醒锁密码

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); 
    WakeLock wakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK
                                     | PowerManager.ACQUIRE_CAUSES_WAKEUP
                                     | PowerManager.ON_AFTER_RELEASE, "MyWakeLock");
    wakeLock.acquire();
许可

<uses-permission android:name="android.permission.WAKE_LOCK" />
我试图用每一个细节来解释我的问题。它在短期内运行良好。
已经谢谢你了

我以前没有编写报警应用程序,但我认为你应该看看谷歌的文档。也许还有其他一些设置警报的方法-我想可以使用系统服务解决-如果有人知道得更好,而我错了,请让我知道

谢谢你的回答,但我已经在使用alarmManager了,它可以工作了,但我也在使用媒体播放器播放声音,这就是问题所在。媒体播放器可能没有使用服务。除了通知之外,alarmManager中没有关于声音的内容。我希望有。