У меня есть собственный аудиофайл, помещенный в папку raw внутри папки resource.I хочу установить его как оповещение звуковой оповещения. как я должен идти
Как играть в mp3 файл в необработанной папке в качестве уведомления об уведомлении в андроиде
Ответ 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();
}
Ответ 5
Вы можете добавить звук, используя
notification.sound = Uri.parse( "Файл:///sdcard/notification/ringer.mp3" );
перейти http://developer.android.com/guide/topics/ui/notifiers/notifications.html
Ответ 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();