رفتن به مطلب
انجمن اندروید ایران | آموزش برنامه نویسی اندروید و موبایل
  • android.png.1fab383bc8500cd93127cebc65b1dcab.png

قرار دادن Button در قسمت Notification


پست های پیشنهاد شده

سلام.

منظورم این است که مانند برنامه های پخش موسیقی یا مدیریت دانلود ما یک سرویس داریم که در آن یک Notification میسازیم این Notification یک layout است که در آن دو باتن برای شروع و متوقف کردن کار وجوذ دارد.اما چگونه می توان از به این باتن ها دسترسی پیدا کرد یا به آنها گوش داد؟و اینکه کاربر با لمس کردن layout یک اکتیویتی از برنامه  اجرا شود.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

برای اینکار باید یک اکتیویتی بیسازید وقتی کاربر Notification را انتخاب کرد، ان اکتیویتی اجرا شود.بطور مثال:

[shcode=java]

NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

Intent contentIntent = new Intent(this,QuestionActivity.class);

Notification notification = new Notification(R.drawable.icon, "یاد آوری",System.currentTimeMillis());

notification.setLatestEventInfo(this, english, "",PendingIntent.getActivity(this.getBaseContext(), 0,contentIntent,

PendingIntent.FLAG_CANCEL_CURRENT));

notification.flags = Notification.FLAG_AUTO_CANCEL;

notificationManager.notify(SIMPLE_NOTFICATION_ID,notification);

[/shcode]

لینک ارسال
به اشتراک گذاری در سایت های دیگر

خیلی ممنون آقای سرسیفی حرف شما صحیح است.اما چگونه می توان یک لایوت مثل زیر ساخت که امیج ویو ها یا باتن ها در قسمت نوتیفیکیشن هستند.و نیاز به اجرای یک اکتیویتی نباشد.do.php?img=253

لینک ارسال
به اشتراک گذاری در سایت های دیگر

برای اینکار میتوانید بدین صورت هم کار کنید و برای Notification یک Layout بسازید.

custom_notification.xml

[shcode=xml]

    android:id="@+id/layout"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    android:padding="10dp" >

   

        android:layout_width="wrap_content"

        android:layout_height="fill_parent"

        android:layout_alignParentLeft="true"

        android:layout_marginRight="10dp" />

   

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_toRightOf="@id/image"

        style="Custom Notification Title" />

   

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_toRightOf="@id/image"

        android:layout_below="@id/title"

        style="Custom Notification Text" />

[/shcode]و در کلاس خود از این کد استفاده کنید :

[shcode=java]

public class MainActivity extends Activity {

    @SuppressWarnings("deprecation")

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        int icon = R.drawable.ic_launcher;

        long when = System.currentTimeMillis();

        Notification notification = new Notification(icon, "Custom Notification", when);

        NotificationManager mNotificationManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);

        RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.custom_notification);

        contentView.setImageViewResource(R.id.image, R.drawable.ic_launcher);

        contentView.setTextViewText(R.id.title, "Custom notification");

        contentView.setTextViewText(R.id.text, "This is a custom layout");

        notification.contentView = contentView;

        Intent notificationIntent = new Intent(this, MainActivity.class);

        PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);

        notification.contentIntent = contentIntent;

        notification.flags |= Notification.FLAG_NO_CLEAR; //Do not clear the notification

        notification.defaults |= Notification.DEFAULT_LIGHTS; // LED

        notification.defaults |= Notification.DEFAULT_VIBRATE; //Vibration

        notification.defaults |= Notification.DEFAULT_SOUND; // Sound

        mNotificationManager.notify(1, notification);

    }

[/shcode]

لینک ارسال
به اشتراک گذاری در سایت های دیگر

من یک نوتیفیکیشن  در یک سرویس قرار دادم  و  مانند آنچه که شما گفته اید یک لایوت به نوتیفیکیشن اختصاص دادم.اما برای مثال من میخواهم در این custom_notificationl وقتی کاربر روی ایمیج ویو می زند کاری انجام شود.مثلا عملیات دانلود متوقف شود.اما درnotification.contentview لیسنتر برای ایمیج ویو یا باتن یا هرچه، وجود ندارد.لااقل من پیدا نکردم.در واقع من دنبال راهی برای گوش دادن به امیج ویوها یا باتن ها در قسمت نوتیفیکیشن هستم.امیدوارم منظورم را درست گفته باشم.خیلی ممنون از پاسخ هایتان.اگر در مورد لیستنر راهنمایی کنید ممنون میشوم.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

مثلا شما یک Button دارید به اسم btn_save اول Object را بسازید.

[shcode=java]btn_save=(Button)contentView .findViewById(R.id.btn_save);

[/shcode]

سپس در رویداد کلیک آن عملیات های مورد نظر را بنویسی.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

اما contentview تابع findViewById را ندارد.لا اقل در سرویس نمی شود از آن استفاده کرد.من هم هرچه در نت دنبال جواب گشتم چیزی دستگیرم نشد.را حل دیگری دارید؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر
  • 5 سال بعد...

سلام مشکل شما اینه که اصلا قرار نیست listener بزارید فقط کافیه style نافیکیشن رو تغییر بدید

Notification noti = new NotificationCompat.Builder()
 .setSmallIcon(R.drawable.ic_stat_player)
 .setContentTitle("Track title")
 .setContentText("Artist - Album")
 .setLargeIcon(albumArtBitmap))
 .setStyle(new NotificationCompat.MediaStyle()
     .setMediaSession(mySession))
 .build();

این مثالی بود برای music player

فقط اونجایی که نوشته my session باید از کود زیر استفاده کنید

mediaPlayer.getSessionId

انشالاه کارتون راه بیفته

لینک ارسال
به اشتراک گذاری در سایت های دیگر

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...