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

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

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

二、实现步骤


首先是发送通知的步骤:
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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值