アラームが鳴ったときに音楽を再生する目覚まし時計アプリがあります。初めてのAndroidアプリです。アプリ内でボタンを表示したり、音楽を止めたりできます。ただし、通知を有効にしており、ユーザーが通知をクリックしたときに音楽を停止したいと考えています。通知からアプリに戻るのですが、音楽を止められません。表示していたボタンが、通知からアプリに戻っても戻るキーを押さないと表示されません。戻るボタンを押すと、ボタンが表示されます。Media Player の例と通知の例をいくつか確認しましたが、問題があるようには見えません。適切な場所に戻ることができれば、音楽を止める方法を理解しています。通知マネージャーは、チェックできるフラグを返しますか? 私はこれに多くの時間を費やしましたが、良い解決策を思い付くことができません。また、私の通知アイコンは非常に小さいです。どうすれば拡大できますか?
これが私のコードです:
public void setAlarmPlaySong() {
BroadcastReceiver receiver = new BroadcastReceiver() {
@Override public void onReceive( Context context, Intent _ )
{
stopPlaying();
// Set up for playing the song selected
switch(mPos) {
case 0:
// Play song -
mPlayer = MediaPlayer.create(SetAlarmActivity.this, R.raw.calmyourstorm);
mPlayer.start();
break;
case 1:
// Play song -
//mPlayer = MediaPlayer.create(SetAlarmActivity.this, R.raw.gowiththeflow);
//mPlayer.start();
break;
case 2:
// Play song -
mPlayer = MediaPlayer.create(SetAlarmActivity.this, R.raw.freeyourmind);
mPlayer.start();
break;
case 3:
// Play song -
break;
case 4:
// Play song -
break;
} // end switch
context.unregisterReceiver( this ); // this == BroadcastReceiver, not Activity
showStopAlarmButton();
} // end on Receive
};
//
//Intent intent = new Intent(getApplicationContext(), SetAlarmActivity.class);
createNotification();
//Create alarm manager
AlarmManager manager = (AlarmManager)(this.getSystemService( Context.ALARM_SERVICE ));
this.registerReceiver( receiver, new IntentFilter("STOP_MUSIC") );
PendingIntent sender = PendingIntent.getBroadcast( this, 0, new Intent("STOP_MUSIC"), 0 );
//PendingIntent sender = PendingIntent.getBroadcast( this, 0, intent, 0 );
//set the timer as a RTC Wakeup to alarm manager object
manager.set( AlarmManager.RTC_WAKEUP, calSet.getTimeInMillis(), sender );
}
ここに createNotification があります
public void createNotification() {
// Create the notification that will display when the app is
// closed.
Context ctx = getApplicationContext();
// The intent that is triggered if the notification
// is trigger
Intent notificationIntent = new Intent(ctx, MainActivity.class);
PendingIntent contentIntent = PendingIntent.getActivity(ctx,
YOUR_PI_REQ_CODE, notificationIntent,
PendingIntent.FLAG_CANCEL_CURRENT);
NotificationManager nm = (NotificationManager) ctx
.getSystemService(Context.NOTIFICATION_SERVICE);
//Resources res = ctx.getResources();
// Build notification
Notification.Builder builder = new Notification.Builder(ctx);
builder.setContentIntent(contentIntent)
.setSmallIcon(R.drawable.beasleybackground2)
//.setTicker(res.getString(R.string.your_ticker))
//.setWhen(System.currentTimeMillis())
.setAutoCancel(true)
.setContentTitle("Jazz Alarm")
.setContentText("Good Morning!");
//.setContentTitle(res.getString(R.string.your_notif_title))
//.setContentText(res.getString(R.string.your_notif_text));
Notification n = builder.build();
// Hide the notification after its selected
n.flags |= Notification.FLAG_AUTO_CANCEL;
nm.notify(YOUR_NOTIF_ID, n);
} // createNotification
ここに showStopAlarmButton があります
public void showStopAlarmButton() {
final Button alarmOffButton = (Button) findViewById(R.id.btn_alarmOff);
alarmOffButton.setVisibility(View.VISIBLE);
alarmOffButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//When button is clicked stop the alarm and hide the button
//when play is clicked show stop button and hide play button
alarmOffButton.setVisibility(View.GONE);
// Cancel song
stopPlaying();
}
});
}