Android初级开发(八)——手机多媒体—通知的使用

来源:互联网 发布:淘宝买手机信用卡分期 编辑:程序博客网 时间:2024/05/22 12:55

一、通知的效果
这里写图片描述
这里写图片描述
这里写图片描述

实现的功能:点击通知按钮发送一条通知,打开状态栏看到通知信息,点击通知跳转到通知的页面。

二、实现步骤


首先是发送通知的步骤:
1)第一步需要一个NotificationManager来对通知进行管理
2)第二步使用NotificationCompat类的构造器来创建Notification对象
3)第三步,调用NotificationManager的notify()方法让通知显示出来

其中通知的一些属性设置如下:

  1. setContentTitle(“这是通知的标题”) //用于指定通知的标题内容
  2. setContentText(“这是通知的内容”) //用于指定通知的正文内容
  3. setWhen(System.currentTimeMillis()) //用于指定通知被创建的时间,以毫秒为单位
  4. setSmallIcon(R.mipmap.ic_launcher) //用于设置通知的小图标
  5. setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher)) //用于设置通知的大图标
  6. setContentIntent(PendingIntent对象) //设置点击跳转
  7. setAutoCancel(true) //当点击了这个通知的时候,通知自动消失 也可以用manager.cancel(通知的id)取消
  8. setSound(Uri) //在通知发出的时候播放一段音频
  9. setVibrate(new long[]{0,1000,1000,1000}) //当通知到来时让手机震动,注意要加权限声明
  10. setLights(Color.GREEN,1000,1000) //设置LED灯闪烁,三个参数分别指定灯的颜色、灯亮时长、灯暗去的时长
  11. setDefaults(NotificationCompat.DEFAULT_ALL) //通知的默认效果
  12. setPriority(NotificationCompat.PRIORITY_MAX) //设置通知的优先级

点击通知进行跳转的实现:

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

//PendingIntent可以理解为延迟执行的Intent
//第一个参数是上下文
//第二个参数是响应码,一般不用不到
//第三个参数是Intent对象,用来构建出PendingIntent的意图
//第四个参数用来确定PendingIntent的行为,四个值可选
// FLAG_ONE_SHOT:获取的PendingIntent只能使用一次
// FLAG_NO_CREATE:若描述的Intent不存在则返回null值
// FLAG_CANCEL_CURRENT:若描述的PendingIntent已存在,则在产生新的Intent之前会取消掉当前的
// FLAG_UPDATE_CURRENT:最经常使用,因为描述的Intent有更新的时候,这个flag也会去更新你的描述

三、源码
1、主界面
布局 activity_main.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="match_parent"        android:layout_height="200dp"        android:text="通知的使用"        android:textSize="25dp"        android:gravity="center"        android:textColor="#000"/>    <Button        android:id="@+id/btn_sedNotice"        android:layout_width="match_parent"        android:layout_height="80dp"        android:text="发送通知"        android:textSize="20dp"        android:layout_marginTop="20dp"/></LinearLayout>

MainActivity.java

public class MainActivity extends AppCompatActivity {    private Button btn_sedNotice;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();    }    private void initView() {        btn_sedNotice = (Button) findViewById(R.id.btn_sedNotice);        btn_sedNotice.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                //设置通知的点击跳转事件                Intent intent = new Intent(MainActivity.this,NotificationActivity.class);                //PendingIntent可以理解为延迟执行的Intent                //第一个参数是上下文                //第二个参数是响应码,一般不用不到                //第三个参数是Intent对象,用来构建出PendingIntent的意图                //第四个参数用来确定PendingIntent的行为,四个值可选                // FLAG_ONE_SHOT:获取的PendingIntent只能使用一次                // FLAG_NO_CREATE:若描述的Intent不存在则返回null值                // FLAG_CANCEL_CURRENT:若描述的PendingIntent已存在,则在产生新的Intent之前会取消掉当前的                // FLAG_UPDATE_CURRENT:最经常使用,因为描述的Intent有更新的时候,这个flag也会去更新你的描述                PendingIntent pi = PendingIntent.getActivity(MainActivity.this,0,intent,0);                //创建通知的步骤:                //第一步需要一个NotificationManager来对通知进行管理                //getSystemService()方法接受一个字符串用于确定获取系统的哪个服务                NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);                //第二步使用NotificationCompat类的构造器来创建Notification对象                Notification notification = new NotificationCompat.Builder(MainActivity.this)                        .setContentTitle("这是通知的标题")   //用于指定通知的标题内容                        .setContentText("这是通知的内容")    //用于指定通知的正文内容                        .setWhen(System.currentTimeMillis())   //用于指定通知被创建的时间,以毫秒为单位                        .setSmallIcon(R.mipmap.ic_launcher)   //用于设置通知的小图标                        .setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher)) //用于设置通知的大图标                        .setContentIntent(pi)  //设置点击跳转                        .setAutoCancel(true)  //当点击了这个通知的时候,通知自动消失 也可以用manager.cancel(通知的id)取消                        //.setSound(Uri)   在通知发出的时候播放一段音频                        .setVibrate(new long[]{0,1000,1000,1000})  //当通知到来时让手机震动                        //vibrate要传入一个长整型数组,以毫秒为单位,第一个数表示手机静止的时长,第二个数表示手机震动的时长,                        //第三个数又是手机震动的时长,以此类推。上面的数据表示手机立即振动1s,然后静止1s,然后又振动1s                        .setLights(Color.GREEN,1000,1000)  //设置LED灯闪烁,三个参数分别指定灯的颜色、灯亮时长、灯暗去的时长                        //setDefaults(NotificationCompat.DEFAULT_ALL)  通知的默认效果                        .setPriority(NotificationCompat.PRIORITY_MAX)                        //设置通知的重要程度,有五个常量值可选                        //PRIORITY_DEFAULT  表示默认重要程度,和不设置效果一样                        //PRIORITY_MIN    表示最低的重要程度                        //PRIORITY_LOW    表示较低的重要程度                        //PRIORITY_HIGH   表示较高的重要程度                        //PRIORITY_MAX   表示最高的重要程度                        .build();                //第三步,调用NotificationManager的notify()方法让通知显示出来                //notify()方法接收两个参数,第一个参数id用于区分每个通知,第二个参数是Notification对象                manager.notify(1,notification);            }        });    }}

2、通知页面
布局activity_notification.xml

<?xml version="1.0" encoding="utf-8"?><RelativeLayout    xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent">    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_centerInParent="true"        android:textSize="25sp"        android:text="这是通知页面"        android:textColor="#000"/></RelativeLayout>

NotifivationActivity.java

public class NotificationActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_notification);    }}

3、权限声明
手机震动的权限声明

<uses-permission android:name="android.permission.VIBRATE"/>
阅读全文
1 0