My android radio app automatically close when I click back button

Viewed 48

I am trying to run my Android radio app in the background. So when I click the back button after a little time it has been forced to stop. Automatically calls the onDestroy() method. How do I fix this problem?

This is the main activity class onBackPressed() button code.

 @Override
    public void onBackPressed(){
        System.out.println("onBackPressed");
        serviceIntent.addCategory(Intent.CATEGORY_HOME);
        serviceIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(serviceIntent);
        moveTaskToBack(true); 
       //activity.moveTaskToBack(true);
    }

This is the console log

> I/System.out: onPrepared I/System.out: onBackPressed I/System.out:
> onDestroy I/System.out: onDestroy1 I/System.out: onDestroy2
> V/MediaPlayer: resetDrmState:  mDrmInfo=null
> mDrmProvisioningThread=null mPrepareDrmInProgress=false
> mActiveDrmScheme=false V/MediaPlayer: cleanDrmObj: mDrmObj=null
> mDrmSessionId=null W/MediaPlayer: mediaplayer went away with unhandled
> events

MainActivity

package com.jiat.yesradio;

import androidx.appcompat.app.AppCompatActivity;


import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;


public class MainActivity extends AppCompatActivity implements MusicStoppedListener {

    private ImageView imagePlayPause;
    String stream = "https://radio.lankayes.lk/8002/stream";
    boolean musicPlaying = false;
    Intent serviceIntent;


    @Override
    protected void onCreate(Bundle savedInstanceState) {

        System.out.println("onCreate MainA");


        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        imagePlayPause = (ImageView) findViewById(R.id.imagePlayPause);
        imagePlayPause.setImageResource(R.drawable.play_icon);
        serviceIntent = new Intent(this, MyPlayService.class);
//        serviceIntent = new Intent(this, SimpleMyPlayService.class);

        ApplicationClass.context = (Context) MainActivity.this;

        imagePlayPause.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                System.out.println("onClick");

                if (!musicPlaying) {
                    System.out.println("onClick_inside_music_player");
                    startService(serviceIntent);
                    playAudio();
                    imagePlayPause.setImageResource(R.drawable.pause_icon);
                    musicPlaying = true;

                }
                else {
                    stopPlayService();
                    stopService(serviceIntent);
                    imagePlayPause.setImageResource(R.drawable.play_icon);
                    musicPlaying = false;
                }
            }
        });
    }

    @Override
    public void onBackPressed(){
        System.out.println("onBackPressed");
      /*  serviceIntent.addCategory(Intent.CATEGORY_HOME);
        serviceIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(serviceIntent);*/
        moveTaskToBack(true); //activity.moveTaskToBack(true);
    }

    private void stopPlayService() {

        System.out.println("stopPlayService");

        try {
            stopService(serviceIntent);
        } catch (SecurityException e) {
            Toast.makeText(this, "Error:" + e.getMessage(), Toast.LENGTH_SHORT).show();
        }
    }

    private void playAudio() {

        System.out.println("playAudio");

        serviceIntent.putExtra("AudioLink", stream);
//        serviceIntent.putExtra("SimpleAudioLink", stream);
        try {
            startService(serviceIntent);
        } catch (SecurityException e) {
            Toast.makeText(this, "Error:" + e.getMessage(), Toast.LENGTH_SHORT).show();
        }
    }


    @Override
    public void onMusicStopped() {

        System.out.println("onMusicStopped");

        imagePlayPause.setImageResource(R.drawable.play_icon);
        musicPlaying = false;
    }



}

MyPlayService class.

package com.jiat.yesradio;

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

public class MyPlayService extends Service implements MediaPlayer.OnCompletionListener, MediaPlayer.OnPreparedListener,
        MediaPlayer.OnErrorListener, MediaPlayer.OnSeekCompleteListener, MediaPlayer.OnInfoListener,
        MediaPlayer.OnBufferingUpdateListener {

    private MediaPlayer mediaPlayer;
    String link;
    private MusicStoppedListener musicStoppedListener;
    Context context;



    public MyPlayService() {
    }

    @Override
    public IBinder onBind(Intent intent) {
        // TODO: Return the communication channel to the service.

        System.out.println("onBind");

        throw new UnsupportedOperationException("Not yet implemented");
    }

    @Override
    public void onCreate() {
        super.onCreate();

        System.out.println("onCreate");

        mediaPlayer = new MediaPlayer();

        mediaPlayer.setOnCompletionListener(this);
        mediaPlayer.setOnPreparedListener(this);
        mediaPlayer.setOnErrorListener(this);
        mediaPlayer.setOnSeekCompleteListener(this);
        mediaPlayer.setOnInfoListener(this);
        mediaPlayer.setOnBufferingUpdateListener(this);
        mediaPlayer.setLooping(true);
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {

        System.out.println("onStartCommand");

        link = intent.getStringExtra("AudioLink");
        mediaPlayer.reset();
        musicStoppedListener = (MusicStoppedListener) ApplicationClass.context;

        if (!mediaPlayer.isPlaying()) {
            try {
                mediaPlayer.setDataSource(link);
                mediaPlayer.prepareAsync();

            } catch (Exception e) {
                Toast.makeText(this, "Error:" + e.getMessage(), Toast.LENGTH_SHORT).show();
            }
        }

        return START_STICKY;
    }

    @Override
    public void onDestroy() {
        super.onDestroy();

        System.out.println("onDestroy");

        if (mediaPlayer != null) {
            System.out.println("onDestroy1");
            if (mediaPlayer.isPlaying()) {
                System.out.println("onDestroy2");
                mediaPlayer.stop();
            }
            mediaPlayer.release();
        }

    }

    @Override
    public void onBufferingUpdate(MediaPlayer mediaPlayer, int i) {
        System.out.println("onBufferingUpdate");
    }

    @Override
    public void onCompletion(MediaPlayer mediaPlayer) {

       /* if (mediaPlayer.isPlaying()) {
            mediaPlayer.stop();
        }

        musicStoppedListener.onMusicStopped();
        stopSelf();*/

        System.out.println("onCompletion");

    }

    @Override
    public boolean onError(MediaPlayer mediaPlayer, int what, int i1) {

        System.out.println("onError");

        switch (what) {
            case MediaPlayer.MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK:
                Toast.makeText(this, "MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK", Toast.LENGTH_SHORT).show();
                break;
            case MediaPlayer.MEDIA_ERROR_SERVER_DIED:
                Toast.makeText(this, "MEDIA_ERROR_SERVER_DIED", Toast.LENGTH_SHORT).show();
                break;
            case MediaPlayer.MEDIA_ERROR_UNKNOWN:
                Toast.makeText(this, "MEDIA_ERROR_UNKNOWN", Toast.LENGTH_SHORT).show();
                break;
        }

        return false;
    }

    @Override
    public boolean onInfo(MediaPlayer mediaPlayer, int i, int i1) {

        System.out.println("onInfo");

        return false;
    }

    @Override
    public void onPrepared(MediaPlayer mediaPlayer) {

        System.out.println("onPrepared");

        if (!mediaPlayer.isPlaying()) {
            mediaPlayer.start();
        }

    }

    @Override
    public void onSeekComplete(MediaPlayer mediaPlayer) {
        System.out.println("onSeekComplete");
    }

}
0 Answers
Related