Android Media Player声音不适用于长期闹钟

时间:2014-07-18 23:04:50

标签: android android-mediaplayer alarmmanager android-alarms android-wake-lock

我使用闹钟管理器制作了一个闹钟应用程序。如果我设置警报不到一两个小时就可以正常工作。但如果我将它设置为更长时间警报管理器正在工作我的布局即将到来,但声音不播放。我使用唤醒锁但仍然没有玩。并且在那个问题之后我使用sharedPreferences来保存我的音乐文件的路径但不再工作。这是我的代码,我希望我能解释我的问题,抱歉我的英文不好

文件选择器

@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();
                }});
    }

我在onCreate,MainActivity中放置'path = preferences.getString(“yol”,null)'

和我的唤醒锁码

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" />

我试图用每个细节来解释我的问题。它在短期内完美运作。 谢谢你!

1 个答案:

答案 0 :(得分:0)

之前我没有对闹钟应用程序进行编程,但在我看来,您应该在Google文档中查看this。也许还有其他一些设置闹钟的方法 - 我猜它可以通过系统服务解决 - 如果有人知道的更好而我错了请告诉我..