簡體   English   中英

如何在屏幕關閉背景可播放選項的情況下播放 android 收音機

[英]How to play android radio with screen off background playable option

如何使用屏幕關閉背景可播放選項播放 android 收音機。 我的應用程序在沒有背景播放選項的情況下工作正常。 但是我想在我的應用程序中提供后台播放選項,即當用戶關閉應用程序時,收音機應該繼續播放,直到用戶停止它。

我還在 xml 文件中使用 android:keepScreenOn="true" 選項禁用屏幕關閉選項,但我想刪除此選項並保持手機屏幕關閉並在后台播放我的應用程序。

這是我的代碼

Button BPlay;
String stream = "http://stream.zeno.fm/hmzuvfwn9k0uv";
MediaPlayer mediaPlayer;

boolean prepared = false;
boolean started = false;

 

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_radio);


 BPlay = (Button) findViewById(R.id.b_play);
    BPlay.setEnabled(false);
    BPlay.setText("Loading.....");

    mediaPlayer = new MediaPlayer();
    mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
    new PlayerTask().execute(stream);




    BPlay.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            if (started){
                started = false;
                mediaPlayer.pause();
                BPlay.setText("PLAY");


            } else {
                started = true;
                mediaPlayer.start();
                BPlay.setText("PAUSE");


            }


        }
    });
}


 class PlayerTask extends AsyncTask<String, Void, Boolean> {
     @Override
     protected Boolean doInBackground(String... strings) {

         try {
             mediaPlayer.setDataSource(strings [0]);
             mediaPlayer.prepare();
             prepared = true;
         } catch (IOException e) {
             e.printStackTrace();
         }

         return prepared;
     }

     @Override
     protected void onPostExecute(Boolean aBoolean) {
         super.onPostExecute(aBoolean);
         BPlay.setEnabled(true);
         BPlay.setText("PLAY");
     }

 }

 @Override
 protected void onPause() {
     super.onPause();
     if (started){
         mediaPlayer.pause();
     }
 }

 @Override
 protected void onResume() {
     super.onResume();

     if (started){
         mediaPlayer.start();
     }
 }

 @Override
 protected void onDestroy() {
     super.onDestroy();
     if (prepared){
         mediaPlayer.release();

     }
 }

}

為了讓您在應用程序處於后台時播放媒體,您需要一個並行運行的MediaSession后台服務。

TLTR,這是來自 Google 的關於如何做到這一點的基本教程

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM