Services to show notification in the Android status bar

var notif = new Notification("My Title", "Some content")
notif.ticker = "Ticker text"
notif.show

# Update the notification
notif.text = "New content!"
notif.ongoing = true # Make it un-dismissable
notif.show

# Hide the notification
notif.cancel

For more information, see: http://developer.android.com/guide/topics/ui/notifiers/notifications.html

Introduced classes

class Notification

android :: Notification

An Android notification, shown at the top of the screen

Redefined classes

redef class Sys

android :: notification $ Sys

The main class of the program.

All class definitions

class Notification

android $ Notification

An Android notification, shown at the top of the screen
redef class Sys

android :: notification $ Sys

The main class of the program.
package_diagram android::notification notification android::native_notification native_notification android::notification->android::native_notification android::assets_and_resources assets_and_resources android::native_notification->android::assets_and_resources ...android::assets_and_resources ... ...android::assets_and_resources->android::assets_and_resources android::ui_test ui_test android::ui_test->android::notification a_star-m a_star-m a_star-m->android::ui_test a_star-m... ... a_star-m...->a_star-m

Ancestors

module abstract_collection

core :: abstract_collection

Abstract collection classes and services.
module abstract_text

core :: abstract_text

Abstract class for manipulation of sequences of characters
module activities

android :: activities

Android Activities wrapper
module app

app :: app

app.nit is a framework to create cross-platform applications
module app_base

app :: app_base

Base of the app.nit framework, defines App
module array

core :: array

This module introduces the standard array structure.
module assets

app :: assets

Portable services to load resources from the assets folder
module assets_and_resources

android :: assets_and_resources

Android Assets and Resources Management
module aware

android :: aware

Android compatibility module
module bitset

core :: bitset

Services to handle BitSet
module bytes

core :: bytes

Services for byte streams and arrays
module circular_array

core :: circular_array

Efficient data structure to access both end of the sequence.
module codec_base

core :: codec_base

Base for codecs to use with streams
module codecs

core :: codecs

Group module for all codec-related manipulations
module collection

core :: collection

This module define several collection classes.
module collections

java :: collections

Basic Java collections
module core

core :: core

Standard classes and methods used by default by Nit programs and libraries.
module dalvik

android :: dalvik

Java related services specific to Android and its Dalvik VM
module environ

core :: environ

Access to the environment variables of the process
module error

core :: error

Standard error-management infrastructure.
module exec

core :: exec

Invocation and management of operating system sub-processes.
module ffi_support

java :: ffi_support

Core supporting services for the FFI with Java
module file

core :: file

File manipulations (create, read, write, etc.)
module fixed_ints

core :: fixed_ints

Basic integers of fixed-precision
module fixed_ints_text

core :: fixed_ints_text

Text services to complement fixed_ints
module flat

core :: flat

All the array-based text representations
module gc

core :: gc

Access to the Nit internal garbage collection mechanism
module hash_collection

core :: hash_collection

Introduce HashMap and HashSet.
module io

java :: io

Services from the java.io package
module iso8859_1

core :: iso8859_1

Codec for ISO8859-1 I/O
module java

java :: java

Supporting services for the FFI with Java and to access Java libraries
module jvm

jvm :: jvm

Java Virtual Machine invocation API and others services from the JNI C API
module kernel

core :: kernel

Most basic classes and methods.
module list

core :: list

This module handle double linked lists
module math

core :: math

Mathematical operations
module native

core :: native

Native structures for text and bytes
module numeric

core :: numeric

Advanced services for Numeric types
module platform

android :: platform

Triggers compilation for the android platform
module protocol

core :: protocol

module queue

core :: queue

Queuing data structures and wrappers
module range

core :: range

Module for range of discrete objects.
module re

core :: re

Regular expression support for all services based on Pattern
module ropes

core :: ropes

Tree-based representation of a String.
module sorter

core :: sorter

This module contains classes used to compare things and sorts arrays.
module stream

core :: stream

Input and output streams of characters
module text

core :: text

All the classes and methods related to the manipulation of text entities
module time

core :: time

Management of time and dates
module union_find

core :: union_find

union–find algorithm using an efficient disjoint-set data structure
module utf8

core :: utf8

Codec for UTF-8 I/O

Parents

module native_notification

android :: native_notification

Native Java classes for notifications

Children

module ui_test

android :: ui_test

Test for app.nit's UI services

Descendants

module a_star-m

a_star-m

# Services to show notification in the Android status bar
#
# ~~~~nitish
# # Create and show a notification
# var notif = new Notification("My Title", "Some content")
# notif.ticker = "Ticker text"
# notif.show
#
# # Update the notification
# notif.text = "New content!"
# notif.ongoing = true # Make it un-dismissable
# notif.show
#
# # Hide the notification
# notif.cancel
# ~~~~
#
# For more information, see:
# http://developer.android.com/guide/topics/ui/notifiers/notifications.html
module notification

import core
private import native_notification

# An Android notification, shown at the top of the screen
class Notification
	# Title of this notification
	var title: nullable Text is writable

	# Text content of this notification
	var text: nullable Text is writable

	# Text to show in the bar as the notification appears
	var ticker: nullable Text = null is writable

	# Name of a resource found in the `res/drawable-*` folders to use for the small icon
	#
	# By default, we use the app's icon, named "icon". A valid icon must be used
	# to display notifications.
	var small_icon: nullable Text = null is writable

	# Number to display on the bottom right part of the notification
	var number: nullable Int = null is writable

	# Is this notification ongoing? Not user dismissable.
	var ongoing: Bool = false is writable

	private var id: nullable Int = null
	private var tag = "app.nit notification"

	# Show the notification
	fun show
	do
		sys.jni_env.push_local_frame(8)

		var context = app.native_activity
		var builder = new NativeNotificationBuilder(context)

		# If no custom icon is specified, use app's
		var small_icon = self.small_icon
		if small_icon == null then small_icon = "icon"
		var small_icon_id = app.resource_manager.other_id(small_icon.to_s, "drawable")
		builder.small_icon = small_icon_id

		# Other options
		if title != null then builder.title = title.to_java_string
		if text != null then builder.text = text.to_java_string
		if ticker != null then builder.ticker = ticker.to_java_string
		builder.ongoing = ongoing

		var notif = builder.create
		var manager = context.notification_manager

		var id = self.id
		if id == null then id = sys.next_notification_id
		manager.notify(tag.to_java_string, id, notif)

		self.id = id

		sys.jni_env.pop_local_frame
	end

	# Was this notification shown with `show`?
	#
	# This does not indicates whether is has been dismissed or not. Only that
	# it was shown at least once.
	private fun was_shown: Bool do return id != null

	# Cancel this notification and hide it if it is currently displayed
	fun cancel
	do
		var id = self.id
		if id != null then
			sys.jni_env.push_local_frame(8)

			var manager = app.native_context.notification_manager
			manager.cancel(tag.to_java_string, id)

			self.id = null

			sys.jni_env.pop_local_frame
		end
	end
end

redef class Sys
	private var next_notification_id_cache = 0

	# Returns a unique ID for new notifications
	private fun next_notification_id: Int
	do
		var id = next_notification_id_cache
		next_notification_id_cache = id + 1
		return id
	end
end
lib/android/notification/notification.nit:17,1--132,3