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
}
}
}
}