Как играть в mp3 файл в необработанной папке в качестве уведомления об уведомлении в андроиде

У меня есть собственный аудиофайл, помещенный в папку raw внутри папки resource.I хочу установить его как оповещение звуковой оповещения. как я должен идти

Ответ 1

Пожалуйста, используйте нижеприведенный код, когда вы получаете уведомление в BroadcastReceiver, а затем вызывайте активность в этом классе активности, используемом ниже кода, поэтому воспроизводите звуковой файл.

mMediaPlayer = new MediaPlayer();
mMediaPlayer = MediaPlayer.create(this, R.raw.sound1);
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mMediaPlayer.setLooping(true);
mMediaPlayer.start();

Счастливое кодирование.

Ответ 2

Это часто достигается с помощью MediaPlayer, но это не идеальное решение, потому что оно выполняется немного независимо от уведомлений и поэтому будет вести себя непредсказуемыми способами при отключении, блокировании и других вещах. Для обеспечения согласованности и совместимости звук должен воспроизводиться с использованием аудио-механизма самих уведомлений. Это можно сделать, установив соответствующий URI по строкам:

NotificationCompat.Builder builder = new NotificationCompat.Builder(
    this).setSmallIcon(R.drawable.ic_myicon)
    .setContentTitle(title).setAutoCancel(true);
Uri alarmSound = Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE
                    + "://" + getPackageName() + "/raw/mymp3");
builder.setSound(alarmSound);
...
builder.setContentIntent(pendingIntent);
NotificationManager manager = (NotificationManager)
    getSystemService(Context.NOTIFICATION_SERVICE);
manager.notify(1, builder.build());

Ключевая часть:

Uri alarmSound = Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE
                    + "://" + getPackageName() + "/raw/mymp3");

mp3 файл сохраняется в папке/res/raw.

Ответ 3

попробуйте этот код

notification.sound =Uri.parse("android.resource://" + getPackageName() + "Name OF audio store in raw folder");

Ответ 4

Обратитесь к коду

 Uri alert = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM); 
 mMediaPlayer = new MediaPlayer();
 mMediaPlayer.setDataSource(this, alert);
 final AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
 if (audioManager.getStreamVolume(AudioManager.STREAM_ALARM) != 0) {
            player.setAudioStreamType(AudioManager.STREAM_ALARM);
            player.setLooping(true);
            player.prepare();
            player.start();
  }

Ответ 6

Вы можете воспроизводить звук из необработанной папки ниже, это java файл, просто скопируйте этот код, реализуйте его и используйте именно эту функцию класса, он будет воспроизводить звук с громкой музыкой и с вибрацией........

если вы хотите также вибрировать, вы должны добавить разрешение

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

Создайте файл BeepManager.java и скопируйте пасту ниже кода

import java.io.IOException;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.res.AssetFileDescriptor;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.os.Vibrator;
import android.preference.PreferenceManager;
import android.util.Log;

final class BeepManager {

 private static final String TAG = BeepManager.class.getSimpleName();
 private static final float BEEP_VOLUME = 0.10f;
 private static final long VIBRATE_DURATION = 200L;
 private final Activity activity;
 private MediaPlayer mediaPlayer;
 private boolean playBeep;
 private boolean vibrate;

BeepManager(Activity activity) {
 this.activity = activity;
 this.mediaPlayer = null;
 updatePrefs();
}

void updatePrefs() {
 SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(activity);
 playBeep = shouldBeep(prefs, activity);
 vibrate = prefs.getBoolean(PreferencesActivity.KEY_VIBRATE, false);
 if (playBeep && mediaPlayer == null) {
  // The volume on STREAM_SYSTEM is not adjustable, and users found it too loud,
  // so we now play on the music stream.
   activity.setVolumeControlStream(AudioManager.STREAM_MUSIC);
   mediaPlayer = buildMediaPlayer(activity);
 }
}

void playBeepSoundAndVibrate() {
 if (playBeep && mediaPlayer != null) {
     mediaPlayer.start();
  }
  if (vibrate) {
   Vibrator vibrator = (Vibrator) activity.getSystemService(Context.VIBRATOR_SERVICE);
   vibrator.vibrate(VIBRATE_DURATION);
  }
}

 private static boolean shouldBeep(SharedPreferences prefs, Context activity) {
   boolean shouldPlayBeep = prefs.getBoolean(PreferencesActivity.KEY_PLAY_BEEP, true);
  if (shouldPlayBeep) {
    // See if sound settings overrides this
    AudioManager audioService = (AudioManager) activity.getSystemService(Context.AUDIO_SERVICE);
    if (audioService.getRingerMode() != AudioManager.RINGER_MODE_NORMAL) {
       shouldPlayBeep = false;
    }
  }
  return shouldPlayBeep;
}

private static MediaPlayer buildMediaPlayer(Context activity) {
  MediaPlayer mediaPlayer = new MediaPlayer();
  mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
  // When the beep has finished playing, rewind to queue up another one.
  mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
   @Override
   public void onCompletion(MediaPlayer player) {
     player.seekTo(0);
   }
 });

 AssetFileDescriptor file = activity.getResources().openRawResourceFd(R.raw.beep);
 try {
  mediaPlayer.setDataSource(file.getFileDescriptor(), file.getStartOffset(), file.getLength());
  file.close();
  mediaPlayer.setVolume(BEEP_VOLUME, BEEP_VOLUME);
  mediaPlayer.prepare();
 } catch (IOException ioe) {
  Log.w(TAG, ioe);
  mediaPlayer = null;
 }
 return mediaPlayer;
}
}

Теперь просто используйте следующую функцию, которую вы можете воспроизводить звук............

 BeepManager beepManager = new BeepManager(this);
 beepManager.updatePrefs();



 beepManager.playBeepSoundAndVibrate();