1

アラームが鳴ったときに音楽を再生する目覚まし時計アプリがあります。初めての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();  
        }
    });     
}  
4

0 に答える 0