本章主要介绍了通知、短信、调用摄像头和相册、播放多媒体文件等内容。  

(一)通知的用法

  1、通知的基本用法

  见如下代码(详细操作步骤在代码注释中):

  (1)先创建一个布局文件,其中只有一个名为“发送通知”的Button,当点击这个按钮的时候发送一条通知:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" > <Button
android:id="@+id/sent_notice_btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="发送通知" /> </LinearLayout>

  (2)MainActivity:

 import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button; public class MainActivity extends Activity implements OnClickListener { private Button sendNoticeBtn; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); Button sendNoticeBtn = (Button) findViewById(R.id.sent_notice_btn);
sendNoticeBtn.setOnClickListener(this);
} @Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.sent_notice_btn:
// 1.通过getSystemService方法创建NotificationManager实例
NotificationManager mgr = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); // 2.创建Notification实例,它是在屏幕上方一闪而过的那种通知信息
// 第一个参数表示图标,第二个参数表示通知内容,第三个参数用于指定通知被创建的时间,当下拉状态时,这个时间会显示在对应的通知上
Notification notification = new Notification(
R.drawable.ic_launcher, "您有一条通知",
System.currentTimeMillis()); // 3.对下拉状态栏后显示的通知的布局进行设定
// 第一个参数表示context上下文,第二个参数表示通知的标题,第三个参数表示通知的内容,第四个参数表示点击通知后的行为,这里先传入null
notification.setLatestEventInfo(this, "这是通知标题", "这是通知内容", null); // 4.使用NotificationManager的notify方法让通知显示出来
// 第一个参数:通知的id,具有唯一性;第二个参数:Notification对象
mgr.notify(1, notification);
break; default:
break;
}
}
}

  2、为通知加上点击跳转功能(使用PendingIntent)

  (1)在以上代码的基础上,再创建另一个xml文件,作为点击通知后跳转到的页面:

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" > <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="这是通知跳转的页面" /> </LinearLayout>

  (2)创建活动NotificationActivity,在其中调用NotificationManager的cancel方法让状态栏的通知消失:

 import android.app.Activity;
import android.app.NotificationManager;
import android.os.Bundle; public class NotificationActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_notification); // 用于让状态栏上的通知消失,这里的1就是在MainActivity中创建通知时为通知设置的id
NotificationManager mgr = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
mgr.cancel(1);
}
}

  (3)修改MainActivity活动的按钮点击事件:

   @Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.sent_notice_btn:
// 1.通过getSystemService方法创建NotificationManager实例
NotificationManager mgr = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); // 2.创建Notification实例,它是在屏幕上方一闪而过的那种通知信息
// 第一个参数表示图标,第二个参数表示通知内容,第三个参数用于指定通知被创建的时间,当下拉状态时,这个时间会显示在对应的通知上
Notification notification = new Notification(
R.drawable.ic_launcher, "您有一条通知",
System.currentTimeMillis()); // 3.对下拉状态栏后显示的通知的布局和点击行为进行设定
// 第一个参数表示context上下文,第二个参数表示通知的标题,第三个参数表示通知的内容,第四个参数表示点击通知后的行为,这里先传入null // 3.1 创建Intent,用于在点击通知时跳转到NotificationActivity页面:
Intent intent = new Intent(MainActivity.this,
NotificationActivity.class);
// 3.2 创建PendingIntent
PendingIntent pi = PendingIntent.getActivity(MainActivity.this, 0,
intent, PendingIntent.FLAG_CANCEL_CURRENT); notification.setLatestEventInfo(this, "这是通知标题", "这是通知内容", pi); // 4.使用NotificationManager的notify方法让通知显示出来
// 第一个参数:通知的id,具有唯一性;第二个参数:Notification对象
mgr.notify(1, notification);
break; default:
break;
}
}

  (4)最后注册NotificationActivity活动。

  3、通知的高级技巧

  (1)在发送通知的时候同时播放一段音频:只用在发送通知按钮的点击事件中加入如下代码:

        ...
       // +.在发送通知的时候播放一段音频,这里的路径是手机默认来电铃声
Uri soundUri = Uri.fromFile(new File(
"/system/media/audio/ringtones/Basic_tone.ogg"));
notification.sound = soundUri; // 4.使用NotificationManager的notify方法让通知显示出来
// 第一个参数:通知的id,具有唯一性;第二个参数:Notification对象
mgr.notify(1, notification);
        ...

   Tips:用R.E管理器进入/system/media/audio,里面有四个文件夹,分别是alarms(闹钟铃声),notifications(通知即短信铃声),ringtones(来电铃声),ui(一些应用程序操作的效果声音比如拍照等)。

  (2)发送通知时让手机振动:

        ...
       // +.发送通知时让手机振动:
// 说明:这个数组下标为0的值表示手机静止的时长(毫秒),下标为1的表示振动的时长,下标为2的表示静止的时长,...以此类推
// 让手机振动需要申请权限:<uses-permission
// android:name="android.permission.VIBRATE" />
long[] vibrates = { 0, 1000, 1000, 1000 };
notification.vibrate = vibrates; // 4.使用NotificationManager的notify方法让通知显示出来
// 第一个参数:通知的id,具有唯一性;第二个参数:Notification对象
mgr.notify(1, notification);
       ...

  (3)控制LED灯亮

             ...
// +.发送通知的时候让LED灯亮
notification.ledARGB = Color.GREEN; // 控制亮灯的颜色,一般可以选红绿蓝三种颜色
notification.ledOnMS = 1000; // 灯亮的时长(毫秒)
notification.ledOffMS = 2000; // 灯暗去的时长,在手机在锁屏状态且用户查看通知之前,灯会交替亮、暗下去
notification.flags = Notification.FLAG_SHOW_LIGHTS; // 指定通知的行为,这里是亮灯
// 4.使用NotificationManager的notify方法让通知显示出来
// 第一个参数:通知的id,具有唯一性;第二个参数:Notification对象
mgr.notify(1, notification);
...

  (4)通知的铃声、振动、灯光的设置使用系统默认值:

             // +.铃声、振动、通知的设置使用系统默认值
notification.defaults = Notification.DEFAULT_ALL;

随机推荐

  1. BootstrapValidator 解决多属性被同时校验问题《转》

    问题描述:在使用bootstrapValidator插件校验表单属性,当表单属性过多需要每行并列多个属性 ,会出现校验第一个属性,发现整行被校验的效果 ,这不是我们工作想要的效果.如图: 问题分析:因 ...

  2. 在python中Flask配置服务

    from flask import Flask, request from data_util import UtilsLTPTranslate import json model = UtilsLT ...

  3. SHELL $RANDOM产生的随机数范围是0到32767

    1.使用系统的 $RANDOM 变量 fdipzone@ubuntu:~$ echo $RANDOM 17617 fdipzone@ubuntu:~$ echo $RANDOM 17617 $RAND ...

  4. c++标准库之thread

    class thread是对线程的抽象.以下分别介绍thread是如何表示线程的大部分特征的. 执行体 线程的执行体由一个可执行(callable)对象来表示.这个执行体可以在thread创建的时候指 ...

  5. Spring MVC内部资源视图解析器

    InternalResourceViewResolver用于将提供的URI解析为实际URI.下面的示例演示如何在Spring Web MVC框架中使用SpringResultViewResolver. ...

  6. Struts2 异常处理

    Struts提供了一个更简单的方式来处理未捕获的异常,并将用户重定向到一个专门的错误页面.您可以轻松地Struts配置到不同的异常有不同的错误页面. Struts的异常处理所使用的“exception ...

  7. SharePoint2013导入Excel到列表

    using Microsoft.SharePoint; using System; using System.Collections.Generic; using System.ComponentMo ...

  8. week 5: ;Lasso regression & coordinate descent

    笔记. 岭回归, 计算回归系数时使( RSS(w)+λ||w||2) 最小 岭回归的结果会是所有的特征的weight都较小,但大多数又不完全为零. 而实际情况中,有的特征的确与输出值相关程度很高,we ...

  9. PHP设置时区的方法

    第一种方法:修改php.ini文件   即:date.timezone = '修改的时区名称'   对全局有效 第二种方法:date_default_timezone_set()动态设置时区,只是当前 ...

  10. 41、Android中当数据库需要更新时我们该怎么办?

    转载  http://blog.csdn.net/jiangwei0910410003/article/details/39670813