`
1140566087
  • 浏览: 560134 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
博客专栏
2c4ae07c-10c2-3bb0-a106-d91fe0a10f37
c/c++ 入门笔记
浏览量:18563
3161ba8d-c410-3ef9-871c-3e48524c5263
Android 学习笔记
浏览量:314489
Group-logo
J2ME 基础学习课程集
浏览量:18795
A98a97d4-eb03-3faf-af96-c7c28f709feb
Spring 学习过程记录...
浏览量:17592
社区版块
存档分类
最新评论

Android 之 通知Notification

阅读更多
Notification 和 NotificationManager 的基本用法

1. 用途:用来设置通知;
2. 说明:NotificationManager 为后台运行的服务 , 用来发送通知;Notification 类表示一个持久性的通知
3. 状态栏和状态条的区别:
a) 状态条:手机屏幕最上方的一个条形状的区域;状态条有很多的信息量,例如:usb连接图标,手机信号图标,电池电量图标,时间图标等等
b) 状态栏:手机从状态条滑下来的可以伸缩的view;  状态栏中一般有两类:
i. 正在进行的程序;
ii. 通知事件
4. 一般Notification 传送的信息:
a) 一个状态条图标
b) 在拉伸状态栏中显示带有大标题,小标题,图标的信息,并且有处理该点击事件;比如调用该程序的入口类;
c) 闪光、led 或者震动;
5. 创建Notification 的步骤:
a) 获取NotificationManager对象:NotificationManager  nm = getSystemService(Service.NOTIFICATION_SERVICE);
b) 设置属性:内容,图标,标题,相应的处理动作;
c) 通过nm.notify(); 方法来执行一个notification快讯;
d) 通过nm.cance(); 方法取消一个快讯;
6. Notification 类中的常量、字段、方法介绍:
a) DEFAULT_ALL  使用所有默认值,声音、震动、闪屏等
b) DEFAULT_LIGHTS  使用默认灯光提示;
c) DEFAULT_SOUNDS   使用默认提示音
d) DEFAULT_VIBRATE 使用默认手机震动
e) 提示:这些效果常量可以叠加;
7. 相关权限:
a) 手机震动:<uses-permission android:name=”android.permission.VIBRATE”/>
8. 实现:见代码…..

package com.example.notification;

import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore.Audio;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {

	private Button send, cancel;
	private Notification notification; // 通知
	private NotificationManager notificationManager; // 通知系统服务

	/**
	 * 获取布局文件中控件的对象
	 */
	public void init() {
		Log.i("msg", "init()...调用");
		send = (Button) findViewById(R.id.send);
		cancel = (Button) findViewById(R.id.cancel);
	}

	// 程序入口
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		init(); // 初始化

		// 设置监听
		send.setOnClickListener(listener);
		cancel.setOnClickListener(listener);

	}

	/**
	 * 发出通知 --
	 */
	public void sendNotification() {
		// 获取对象
		notificationManager = (NotificationManager) this
				.getSystemService(Service.NOTIFICATION_SERVICE);
		notification = new Notification();
		notification.icon = R.drawable.ic_launcher; // 设置图标,公用图标
		notification.tickerText = "状态条标题,提示标题";
		notification.when = System.currentTimeMillis(); // 当前时间 ,通知时间
		
		// 提示音
		notification.defaults = Notification.DEFAULT_SOUND;
		notification.sound = Uri.parse("file:///sdcard/notification/ringer.mp3"); // 播放指定位置音乐
		notification.sound = Uri.withAppendedPath(Audio.Media.INTERNAL_CONTENT_URI, "6"); // 系统音乐
		
		// 手机震动 -- 权限: <uses-permission android:name="android.permission.VIBRATE"/>
		notification.defaults = Notification.DEFAULT_VIBRATE;
		long[] vibrate = {0,100,200,300};
		notification.vibrate = vibrate;
		
		// LED 灯闪烁
		notification.defaults = Notification.DEFAULT_LIGHTS;
		notification.ledARGB=0xff00ff00;
		notification.ledOffMS = 1000;
		notification.ledOnMS = 300; // 闪光时间,毫秒
	
		/*
		 * 设置Flag的值:说明
		 * FLAG_AUTO_CANCEL : 通知能被状态按钮清除掉
		 * FLAG_NO_CLEAR : 点击清除按钮,不清除
		 * FLAG_ONGOING_EVENT:  该通知放置在正在运行组中
		 * FLAG_INSISTENT : 是否一直进行,比如播放音乐,直到用户响应
		 */
		notification.flags = Notification.FLAG_ONGOING_EVENT;
		


		Intent intent = new Intent(MainActivity.this, MainActivity.class);
		PendingIntent pi = PendingIntent.getActivity(this, 0, intent,
				PendingIntent.FLAG_UPDATE_CURRENT);

		/*
		 * 功能:显示在拉伸状态栏中的Notification属性,点击后将发送PendingIntent对象 
		 * 1:上下文环境
		 * 2:状态栏中的大标题
		 * 3:状态栏中的小标题;
		 * 4:点击后发送的PendingIntent对象
		 */
		notification.setLatestEventInfo(this, "状态栏标题", "状态栏内容", pi);
		notificationManager.notify(1, notification);
	}

	/**
	 * 取消通知
	 */
	public void cancelNotification() {
		notificationManager.cancel(1);
	}

	// 按钮点击监听器
	private OnClickListener listener = new View.OnClickListener() {

		public void onClick(View v) {

			if (v.getId() == R.id.send) { // 发出通知
				sendNotification();
				return;
			}
			if (v.getId() == R.id.cancel) { // 取消通知
				cancelNotification();
				return;
			}

		}
	};
}


下面是布局文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/send"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="发送通知" />

    <Button
        android:id="@+id/cancel"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="取消通知" />


</LinearLayout>
分享到:
评论

相关推荐

    Android实现Notification的通知栏常驻.zip

    本教程将详细介绍如何在Android中实现一个常驻通知栏的Notification,以确保即使在用户关闭应用后,该通知仍然可见。 一、Notification的基本结构 1. **Notification channels**: 从Android O(8.0)开始,每个...

    Android 通知(notification)简单实用Demo,包含点击功能

    这个"Notification_Test"压缩包中的代码应该包含了以上步骤的实现,你可以下载并运行来深入理解Android通知的工作原理。通过实践,你将能够熟练地在自己的应用中集成通知功能,提供更好的用户体验。同时,还可以...

    Android 之 Notification 通知消息

    本文将深入探讨`Android 之 Notification 通知消息`的相关知识点,包括Notification的基本使用、设计原则、通知渠道以及自定义样式。 一、Notification基本使用 Notification主要由三个核心组件构成:Notification....

    Android 8.0通知栏(Notification)适配

    这几天做一个小软件在API28(Android 9.0)的模拟器上测试时,发现通知栏无效,经过一番查询,了解到:API26(Android 8.0)以后,引入了**通知渠道(Notification Channels)**这么一个东西来帮助用户管理通知。...

    Android 通知栏Notification的全面整合学习(各种姿势都有,供您选择)

    本资源包针对Android通知栏的使用进行了全面整合,涵盖了各种应用场景和实现方式,是Android开发者深入理解与实践Notification功能的理想资料。 首先,我们来探讨Android通知的基本结构。一个通知通常包括以下组件...

    Android发送通知Notification

    总结一下,发送Android通知的基本流程包括获取`NotificationManager`、创建`Notification`、设置详细信息以及发送通知。为了提高用户体验,开发者还应考虑通知的可定制性,如声音、振动和渠道设置,以及遵循Android...

    Android应用源码之notification.zip

    本压缩包"Android应用源码之notification.zip"很可能是包含了Android系统源码中关于Notification组件的相关文件,便于开发者深入理解Notification的工作原理和实现机制。 1. **Notification结构和工作流程** - ...

    Android自定义通知栏Notification

    在Android开发中,自定义通知栏Notification是一种提升用户体验的重要手段。...这个项目不仅提供了基本的自定义通知功能,也可能包含了一些进阶技巧和优化措施,对深入理解Android通知系统非常有帮助。

    android消息通知栏Notification

    在Android系统中,`Notification`是开发者用于向用户展示非交互式信息的重要工具,它通常出现在状态栏中,用户可以通过下拉通知栏查看并交互。`Notification`可以在应用不处于前台运行时,依然向用户传达重要的消息...

    Android notification+Service实时更新

    本项目"Android notification+Service实时更新"就是利用这些组件来构建一个功能,即在后台进行文件下载并实时更新用户通知栏的状态,当下载失败时允许用户重新尝试,下载成功后可自动安装。 首先,我们来看`...

    notification-Android带按钮自定义通知栏

    在Android开发中,通知栏(Notification)是向用户传达应用后台事件或信息的重要途径。一个标准的通知通常包含标题、文本内容以及可选的附加操作。然而,为了提供更丰富的交互体验,开发者有时需要创建自定义通知,...

    安卓Android源码——notification1.rar

    在安卓(Android)系统中,通知(Notification)是应用程序与用户交互的重要方式,即使应用在后台运行,也能向用户展示信息。"安卓Android源码——notification1.rar"这个压缩包很可能包含了Android系统中关于通知...

    Android三种Notification(通知)方式

    本文将详细介绍Android中的三种Notification实现方式:基本通知、扩展通知和通知渠道。 一、基本通知 基本通知是最简单的通知形式,适用于传递简短的信息。创建一个基本通知主要涉及以下步骤: 1. 创建...

    Android 通知栏Notification的全面整合学习(完整项目源码)附配套博文

    这个是通知栏框架(Notificaiton)的全面学习,里面把大概所有的情况都列了出来,通过一个DEMO让你了解它的大致所有使用过程。 可以通过以下博文进行配套了解(有效果图): ...

    Android应用源码之实现Notification的通知栏常驻-IT计算机-毕业设计.zip

    在标题"Android应用源码之实现Notification的通知栏常驻"中,主要关注的是如何使Notification即使在用户离开应用后仍然保留在通知栏,提供持续的可见性。这通常涉及到Android的Notification持久性和优先级设置。 ...

    Android通知Notification汇总

    notification是一种出现在任务栏的提示,特别是在4.0以后notification改进了不少,本文内容都是基于4.0及4.1以后总结来的,详细介绍各种布局的Notification样式,实现音乐播放器、邮件通知等复杂的例子详细代码。

    使用android push notification service 实现即时通知

    在Android平台上,实现即时通知通常会借助Google的云消息推送服务(Google Cloud Messaging,简称GCM),但在iOS系统中,对应的则是Apple Push Notification service(APNs)。然而,这里提到的"android apns"可能是...

    android之手机通知栏Notification的使用

    在Android系统中,通知栏(Notification)是一种向用户传达应用信息的重要方式,它可以在任何时候提醒用户,即使应用在后台运行或者被关闭。本教程将详细讲解如何在Android应用中使用Notification,以创建有效的手机...

Global site tag (gtag.js) - Google Analytics