Android MediaPlayer - играть мелодию один раз

Я пытаюсь воспроизвести рингтон устройства один раз с классом MediaPlayer (мне нужно использовать MediaPlayer, поскольку я использую рингтоны вместе с другими источниками звука в моем приложении). Поэтому я пытаюсь выполнить следующее, чтобы воспроизвести случайную мелодию звонка, но не могу остановить ее зацикливание, это продолжает играть. Можно ли воспроизводить рингтон только один раз с MediaPlayer.

Спасибо

try {
    RingtoneManager mRing = new RingtoneManager(RingtoneActivity.this);
    int mNumberOfRingtones = mRing.getCursor().getCount();
    Uri mRingToneUri = mRing.getRingtoneUri((int) (Math.random() * mNumberOfRingtones));
    mMediaPlayer = new MediaPlayer();
    mMediaPlayer.setDataSource(RingtoneActivity.this, mRingToneUri);
    mMediaPlayer.prepare();
    mMediaPlayer.setLooping(false);
    mMediaPlayer.start();

} catch (Exception ignore) {
}

ОБНОВИТЬ:

Я только что опубликовал новыйвопрос связан с этим, так как я смог найти конкретную причину проблемы в моем случае.

Ответы на вопрос(2)

использовать уведомления

   NotificationManager nManager = 
           (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);    
   NotificationCompat.Builder notifBuilder = 
           new NotificationCompat.Builder(context);
   notifBuilder.setSound(sound);
   notification = notifBuilder.build();

   nManager.notify(SOME_INT_CONSTANT, notification);
 dorjeduck04 дек. 2013 г., 03:38
спасибо - извините, у меня нет сейчас настройки для Android, чтобы протестировать ее (в пути ...)

так как это решает вашу проблему :)

mediaPlayer.setOnSeekCompleteListener(new MediaPlayer.OnSeekCompleteListener() {
                    @Override
                    public void onSeekComplete(MediaPlayer mediaPlayer) {
                        mediaPlayer.stop();
                    }
                });

http://developer.android.com/reference/android/media/MediaPlayer.html

Помните о выпуске ().

            mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
                @Override
                public void onCompletion(MediaPlayer mediaPlayer) {
                    mediaPlayer.release();
                }
            });

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

        AudioManager audioManager = (AudioManager)getSystemService(AUDIO_SERVICE);
        int volume = audioManager.getStreamVolume(AudioManager.STREAM_NOTIFICATION);
        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(view.getContext());
        Uri notificationSoundUri = Uri.parse(prefs.getString("notification_sound", "DEFAULT_SOUND"));

        MediaPlayer mediaPlayer = new MediaPlayer();
        try {
            mediaPlayer.setDataSource(view.getContext(), notificationSoundUri);
        } catch (Exception e1) {
            e1.printStackTrace();
            mediaPlayer.release();
            return;
        }
        mediaPlayer.setAudioStreamType(AudioManager.STREAM_NOTIFICATION);
        mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
            @Override
            public void onCompletion(MediaPlayer mediaPlayer) {
                mediaPlayer.release();
            }
        });
        try {
            mediaPlayer.prepare();
        } catch (Exception e1) {
            e1.printStackTrace();
            mediaPlayer.release();
            return;
        }
        mediaPlayer.setOnSeekCompleteListener(new MediaPlayer.OnSeekCompleteListener() {

            @Override
            public void onSeekComplete(MediaPlayer mediaPlayer) {
                // TODO Auto-generated method stub
                mediaPlayer.stop();
                mediaPlayer.start();
            }
        });
        mediaPlayer.setVolume(volume, volume);
        mediaPlayer.start();

Ваш ответ на вопрос