AddAction при уведомлении о создании нового экземпляра сервиса

"Я новичок в Android, я пытаюсь сделать небольшое приложение, которое просто позволяет пользователю выбирать песню из плейлиста и воспроизводить ее в сервисе намерений. Но я хочу показать проигрыватель, песню или любой другой тип уведомлений. Я почти закончил со всем этим, но у меня возникла проблема с паузой воспроизведения, следующим, предыдущим и всеми действиями, добавленными в уведомлении. То, что я хочу, - когда пользователь нажимает на значок паузы воспроизведения в уведомлении, песня должна прекратить работу, которая выполняется в службе Intent, но при использовании ожидающего намерения для AddAction(), каждый раз, когда нажимается пауза воспроизведения, появляется новый экземпляр службы. создан, но я хочу пойти в тот же сервис, который уже работает. Подробное решение будет высоко оценено!

`package com.example.ranasarmadrajput.servicestask;

    import android.content.Intent;
    import android.media.AudioManager;
    import android.media.MediaPlayer;
    import android.net.Uri;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Toast;

    public class MainActivity extends AppCompatActivity {

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
        public void selectsong(View view){
            Intent intent= new Intent(android.content.Intent.ACTION_GET_CONTENT);
            String type = "audio/*";
            intent.setType(type);
            startActivityForResult(intent,2);
        }

        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            if (requestCode == 2) {
                if (data != null) {
                    Intent intent = new Intent(this,musicplayer.class);
                    intent.setAction("Play");
                    intent.setData(data.getData());
                    startService(intent);

                }
            }
        }}

И мой класс обслуживания

package com.example.ranasarmadrajput.servicestask;

import android.app.IntentService;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.session.MediaSession;
import android.net.Uri;
import android.support.v4.app.NotificationCompat;
import android.support.v4.app.NotificationCompatBase;
import android.widget.Toast;

/**
 * An {@link IntentService} subclass for handling asynchronous task requests in
 * a service on a separate handler thread.
 * <p>
 * TODO: Customize class - update intent actions, extra parameters and static
 * helper methods.
 */
public class musicplayer extends IntentService {


    public musicplayer() {
        super("musicplayer");
    }


    @Override
    protected void onHandleIntent(Intent intent) {
        if (intent != null) {
            final String action = intent.getAction();
            if (action.equals("Play")) {
                try {
                    Uri u= intent.getData();
                    MediaPlayer mp = new MediaPlayer();
                    mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
                    if (u != null) {
                        mp.setDataSource(getApplicationContext(), u);
                        mp.prepare();
                        mp.start();
                        mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
                            @Override
                            public void onCompletion(MediaPlayer mp) {
                                mp.release();
                            }
                        });
                    } else {
                        Toast.makeText(this, "Data is null...", Toast.LENGTH_SHORT).show();
                    }
                    Intent in=new Intent(this,musicplayer.class);
                    in.setAction("playpause");
                    PendingIntent pi=PendingIntent.getService(this,0,in,0);
                    NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
                            .setContentTitle("title")
                            .setContentText("text")
                            .setAutoCancel(true)
                            .setSmallIcon(R.drawable.icon)
                            .addAction(R.drawable.icon,"sss",pi);

                    Notification notification = builder.build();
                    NotificationManager manager = (NotificationManager)
                            getSystemService(Context.NOTIFICATION_SERVICE);
                    manager.notify(22, notification);
                } catch (Exception exception) {
                    exception.printStackTrace();
                    Toast.makeText(this, "Error", Toast.LENGTH_SHORT).show();
                }
            }
            else if(action.equals("playpause")){
//here i would stop the media player

            }
        }
    }

}

0 ответов