Как воспроизводить потоковое аудио в фоновом режиме на Android?

У меня есть приложение Android, которое воспроизводит потоковое аудио из Интернета, используяMediaPlayer учебный класс.

Как я могу позволить ему продолжать воспроизводить звук в фоновом режиме, когда пользователь нажимает кнопку «Домой» для запуска других приложений?

Во время работы других приложений яМне бы хотелось продолжать проигрывать аудио.

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

Решение Вопроса

Из документов:

Сервис - это компонент приложения, представляющий либо приложениеЖелание выполнять более продолжительную операцию, не взаимодействуя с пользователем, или предоставлять функциональность для использования другими приложениями ».

Вот'Отличное официальное руководство по использованию сервисов для начала работы:http://developer.android.com/guide/components/services.html

Вот'Хороший урок по созданию аудиоплеера:http://www.androidhive.info/2012/03/android-building-audio-player-tutorial/

Вот'Видеоинструкция по созданию потокового музыкального проигрывателя:http://www.youtube.com/watch?v=LKL-efbiIAM

 Winston10 окт. 2012 г., 17:11
Спасибо яПосмотрю на Сервисы!

Ключ определитьService.START_STICKY продолжить игру в фоновом режиме:

   public int onStartCommand(Intent intent, int flags, int startId) {
        myMediaPlayer.start();
        return Service.START_STICKY;
    }

Service.START_STICKY : если эта услугаКогда процесс запущен, система будет остановлена, и система попытается заново создать службу.

Это пример того, как сделать это:

import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.IBinder;
import android.util.Log;
import android.widget.Toast;

/**
 * Created by jorgesys.
 */

/* Add declaration of this service into the AndroidManifest.xml inside application tag*/

public class BackgroundSoundService extends Service {

    private static final String TAG = "BackgroundSoundService";
    MediaPlayer player;

    public IBinder onBind(Intent arg0) {
        Log.i(TAG, "onBind()" );
        return null;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        player = MediaPlayer.create(this, R.raw.jorgesys_song);
        player.setLooping(true); // Set looping
        player.setVolume(100,100);
        Toast.makeText(this, "Service started...", Toast.LENGTH_SHORT).show();
        Log.i(TAG, "onCreate() , service started...");

    }
    public int onStartCommand(Intent intent, int flags, int startId) {
        player.start();
        return Service.START_STICKY;
    }

    public IBinder onUnBind(Intent arg0) {
        Log.i(TAG, "onUnBind()");
        return null;
    }

    public void onStop() {
        Log.i(TAG, "onStop()");
    }
    public void onPause() {
        Log.i(TAG, "onPause()");
    }
    @Override
    public void onDestroy() {
        player.stop();
        player.release();
        Toast.makeText(this, "Service stopped...", Toast.LENGTH_SHORT).show();
        Log.i(TAG, "onCreate() , service stopped...");
    }

    @Override
    public void onLowMemory() {
        Log.i(TAG, "onLowMemory()");
    }
}

Запустить сервис:

Intent myService = new Intent(MainActivity.this, BackgroundSoundService.class);
startService(myService);

Остановить сервис:

Intent myService = new Intent(MainActivity.this, BackgroundSoundService.class);
stopService(myService);

Полный код этого примера.

 RoCk Vangeance04 мая 2018 г., 14:41
Это твоя работа? Пример.
 Elenasys04 мая 2018 г., 16:58
да, я создал образец.
 eawedat30 янв. 2019 г., 20:53
Я не уверен, что этот код все еще работает в настоящее время для фоновых ограничений, так как Oreo, пожалуйста, обратитесь кdeveloper.android.com/about/versions/oreo/background

Потребуется внедрить Сервис для воспроизведения мультимедиа в фоновом режиме без привязки к Активности, которая начала воспроизведение. Посмотри наэтот пример.

 Winston10 окт. 2012 г., 17:11
Спасибо за подсказку по сервисам и за ссылку!

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