0
クリックしたときに同じサービスにブロードキャストが送信され、boradcast受信側のクラスで再生中の曲を停止したいという通知を追加します。しかし、私は受信者が受信する放送を得ることができません。詳細な解決策が高く評価されます。保留中の意図でブロードキャストが通知なしで動作しない
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);
Intent i = getIntent();
if(i.getAction().equals("playpause")){
Toast.makeText(this,"sss",Toast.LENGTH_LONG).show();
}
}
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.BroadcastReceiver;
import android.content.Intent;
import android.content.Context;
import android.content.IntentFilter;
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 {
MediaPlayer mp;
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();
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,ReceiverClassName.class);
in.setAction("playpause");
PendingIntent pi=PendingIntent.getBroadcast(this,0,in,0);
NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
.setContentTitle("title")
.setContentText("text")
.setAutoCancel(true)
.setSmallIcon(R.mipmap.ic_launcher)
.addAction(R.mipmap.ic_launcher,"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();
}
/*IntentFilter filter = new IntentFilter();
filter.addAction("playpause");
registerReceiver(new ReceiverClassName(), filter);*/
}
}
}
public class ReceiverClassName extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String Action = intent.getAction();
if(Action.equals("playpause")){
mp.stop();
}
}
}
}