在Android手机界面的最上方有一条显示时间、信号强度和电池状态等信息的区域,这就是Android的状态栏。当系统有一些信息要通知手机用户时,例如,收到新短信,电子邮件或未接来电时,系统通常会把信息显示在状态栏中,有的仅显示小图标,有的则显示图标及文字提醒,用手指按住状态栏往下拉,还可以展开状态栏,查看所有系统发出的信息。

在程序中,要如何把提示信息放入状态栏,又要如何显示小图标呢?Android API为了管理通知信息(Notification),定义了NotificationManager,只要调用它的Notify方法,即可将信息显示在状态栏。

先准备几张用于显示的图片,然后在界面上放一个Spinner,通过点击不同的选项,更换相应的图标。布局文件很简单:

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <Spinner android:id="@+id/mySpinnner" android:layout_width="fill_parent" android:layout_height="wrap_content"></Spinner> </RelativeLayout>

NotificationManager nm; protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); SetContentView(Resource.Layout.Main); try { nm = this.GetSystemService(Service.NotificationService) as NotificationManager; Spinner mySpinner = FindViewById<Spinner>(Resource.Id.mySpinnner); ArrayAdapter<string> adapter = new ArrayAdapter<string>(this, Android.Resource.Layout.SimpleSpinnerItem, new string[] { "显示图标1", "显示图标2", "显示图标3", "显示图标4", "关闭显示" }); mySpinner.Adapter = adapter; mySpinner.ItemSelected += (sender, e) => { switch (e.Position) { case 0: Notify(Resource.Drawable.btn1, "通知1"); break; case 1: Notify(Resource.Drawable.btn2, "通知2"); break; case 2: Notify(Resource.Drawable.btn3, "通知3"); break; case 3: Notify(Resource.Drawable.btn4, "通知4"); break; case 4: nm.Cancel(0); break; } }; } catch (System.Exception ex) { MessageBox.ShowErrorMessage(this, ex); } } private void Notify(int iconId, string text) { Activity2 act2 = new Activity2(); Intent notifyIntent = new Intent(this, act2.Class); notifyIntent.SetFlags(ActivityFlags.NewTask); PendingIntent appIntent = PendingIntent.GetActivity(this, 0, notifyIntent, 0); Notification n = new Notification { Icon = iconId, TickerText = new Java.Lang.String(text), Defaults = NotificationDefaults.Sound, }; n.SetLatestEventInfo(this, "通知", text, appIntent); nm.Notify(0, n); }

在将状态栏拉下来单击通知的时候打开Activity2,在Activity2中,显示一个Toast。

[Activity(Label = "My Activity")] public class Activity2 : Activity { protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); SetContentView(Resource.Layout.Activity2); Toast.MakeText(this, "由通知区域点击打开的", ToastLength.Short).Show(); } }

运行效果:

发出Notification时,有三个地方可以显示文字,第一个是Notification被添加到状态栏时,跟着图标跑出的文字,在程序中以n.TickerText来设置;其余两个地方则是在Notification列表中显示的信息标题与信息内容,实在调用SetLatestEventInfo()方法是所设置的。如果在状态栏中不显示文字,只显示图片的话,只要不设置TickerText就可以了。

如果想要在通知显示的时候手机震动的话,我们就要使用Vibrator对象了。设置震动事件中,必须要知道命令其振动的时间长短、震动事件的周期等,而要在Android里设置的数值,都是以毫秒为计算的,所以在做设置的时候要注意下,如果设置的时间太小,会感觉不出来。

Vibrator v = this.Application.GetSystemService(Service.VibratorService) as Vibrator; v.Vibrate(new long[] { 100, 10, 100, 1000 }, 0);

Vibrate方法的第一个参数是一个long数组,表示震动的频率,大家可以改变数组的长度及值来试试效果。第二个参数repeat,当等于0时,震动会一直持续,若等于-1,震动就会出现一轮,震动完毕就不会再有动作。

要使手机震动,必须要在AndroidManifest.xml中加入VIBRATE权限。

<uses-permission android:name="android.permission.VIBRATE" />

记得在模拟器上是模拟不出震动的哦~~拷到手机里震一下吧~~

MonoDroid学习笔记(十二)—— 您有一条新短信息,请注意查收。状态栏提醒相关推荐

  1. 吴恩达《机器学习》学习笔记十二——机器学习系统

    吴恩达<机器学习>学习笔记十二--机器学习系统 一.设计机器学习系统的思想 1.快速实现+绘制学习曲线--寻找重点优化的方向 2.误差分析 3.数值估计 二.偏斜类问题(类别不均衡) 三. ...

  2. ROS学习笔记十二:使用roswtf

    ROS学习笔记十二:使用roswtf 在使用ROS过程中,roswtf工具可以为我们提供ROS系统是否正常工作的检查作用. 注意:在进行下列操作之前,请确保roscore没有运行. 检查ROS是否安装 ...

  3. Python语言入门这一篇就够了-学习笔记(十二万字)

    Python语言入门这一篇就够了-学习笔记(十二万字) 友情提示:先关注收藏,再查看,12万字保姆级 Python语言从入门到精通教程. 文章目录 Python语言入门这一篇就够了-学习笔记(十二万字 ...

  4. Polyworks脚本开发学习笔记(十二)-输出和读取文本文件

    Polyworks脚本开发学习笔记(十二)-输出和读取文本文件 Polyworks作为一个测量工具,将测量的数据方便的导出到文本文件则是一项必须的功能.在DATA_FILE这个命令下提供了很多子命令用 ...

  5. OpenCV学习笔记(十二)——图像分割与提取

    在图像处理的过程中,经常需要从图像中将前景对象作为目标图像分割或者提取出来.例如,在视频监控中,观测到的是固定背景下的视频内容,而我们对背景本身并无兴趣,感兴趣的是背景中出现的车辆.行人或者其他对象. ...

  6. 【现代机器人学】学习笔记十二:轮式移动机器人

    目录 轮式机器人类型 全向轮式机器人 建模 单个全向轮是怎么运动的 多个全向轮是如何带动底盘运动的 运动规划和反馈控制 非完整约束轮式移动机器人 建模 独轮车 差速驱动机器人 车型机器人 非完整移动机 ...

  7. 【theano-windows】学习笔记十二——卷积神经网络

    前言 按照进度, 学习theano中的卷积操作 国际惯例, 来一波参考网址 Convolutional Neural Networks (LeNet) 卷积神经网络如何应用在彩色图像上? 卷积小知识 ...

  8. (C/C++学习笔记) 十二. 指针

    十二. 指针 ● 基本概念 变量的地址就是指针,存放指针的变量就是指针变量(因而又叫作地址变量 address variable); 这个地址编号本身就是一个无符号的整数,在32位系统下为4字节(8位 ...

  9. Vue.js 学习笔记 十二 Vue发起Ajax请求

    首先需要导入vue-resource.js,可以自己下载引入,也可以通过Nuget下载,它依赖于Vue.js. 全局使用方式: Vue.http.get(url,[options]).then(suc ...

  10. Programming Computer Vision with Python (学习笔记十二)

    ORB(Oriented FAST and Rotated BRIEF)可用来替代SIFT(或SURF),它对图像更具有抗噪特性,是一种特征检测高效算法,其速度满足实时要求,可用于增强图像匹配应用. ...

最新文章

  1. 计算机教师40辞职能做什么,干了二十多年老师,四十多岁了,嫌累想辞职,还能有更好的出路吗...
  2. mysql sql 1到10_(1.10)SQL优化——mysql 常见SQL优化
  3. python【力扣LeetCode算法题库】409-最长回文串(数学 计数器)
  4. Swift中的一致性哈希算法(补充)
  5. python杨辉三角_干货|杨辉三角与二项式定理
  6. 分布式的客户端-服务器结构_MMORPG游戏服务器技术选型参考
  7. 【二分法】- leetcode
  8. 遍历二叉树中“访问”和“遍历”的不同
  9. 自动化测试,从入门到跑路1
  10. 计算机辅助翻译课怎么学的,计算机辅助翻译原理与实践
  11. Centos6.7 64位安装配置kvm虚拟化
  12. 使用C语言进行面向对象的开发--GObject入门[4]
  13. Azure 基础:Blob Storage
  14. Xshell入门使用教程
  15. weblogic 12c 打补丁
  16. Jmeter使用及压测
  17. unity读取Texture文件并转为Sprit
  18. 中国地理知识大全 中国地理知识集锦
  19. 【Linux 内核 内存管理】物理分配页 ⑦ ( __alloc_pages_slowpath 慢速路径调用函数源码分析 | 判断页阶数 | 读取 mems_allowed | 分配标志位转换 )
  20. 小宝贝流鼻血,治疗方法

热门文章

  1. Dijkstra算法实现(java)
  2. linux生成core文件路径,core文件生成和路径设置
  3. 2021年个人盘点总结-希望2022年不要躺平
  4. 在VS上安装Maya Plugin Wizard错误及解决方法
  5. SMT 的基本流程?SMT的工艺流程?SMT的设备操作?
  6. vue-echarts-v3——浙江省地图下钻(eg:浙江省-嘉兴市-嘉善县)
  7. python 小于等于号不支持int string_为什么这个Python String的大小会在失败的int转换中发生变化...
  8. php 有道翻译api,PHP微信开发之有道翻译
  9. web前端开发文件命名基本规范
  10. cmd下简单的目录操作