自定义消息通知、手机震动、提示音

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013184970/article/details/79819721
Android中自定义消息通知、获取手机震动、提示音,在此做下记录
package com.wjy.project.railway.activity;

import android.annotation.TargetApi;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.Ringtone;
import android.media.RingtoneManager;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Vibrator;
import android.view.View;
import android.widget.Button;

import com.wjy.project.railway.R;
import com.wjy.project.railway.base.BaseActivity;

/**
 * Created by ASUS on 2018/3/24.
 */

public class MessageActivity extends BaseActivity implements View.OnClickListener {

    private NotificationManager manager;
    private Button btn_According, btn_delete;
    private int Notification_ID;
    private String messageContent = "我是通知内容";

    @Override
    protected void onCreate(Bundle arg0) {
        super.onCreate(arg0);
        setContentView(R.layout.activity_message);
        manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
        initView();
    }

    private void initView() {
        btn_According = (Button) findViewById(R.id.btn_According);
        btn_According.setOnClickListener(this);
        btn_delete = (Button) findViewById(R.id.btn_delete);
        btn_delete.setOnClickListener(this);
    }

    @TargetApi(Build.VERSION_CODES.KITKAT_WATCH)
    private void showNotification() {
        Notification.Builder builder = new Notification.Builder(this);
        builder.setSmallIcon(R.mipmap.com_icon_loading);//设置图标
        builder.setTicker("通知来啦");//手机状态栏的提示
        builder.setContentTitle("我是通知标题");//设置标题
        builder.setContentText(messageContent);//设置通知内容
        builder.setWhen(System.currentTimeMillis());//设置通知时间
        Intent intent = new Intent(this, ContentActivity.class);
        intent.putExtra("messageContent", messageContent);
        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0);
        builder.setContentIntent(pendingIntent);//点击后的意图
        builder.setDefaults(Notification.DEFAULT_LIGHTS);//设置指示灯
        builder.setDefaults(Notification.DEFAULT_SOUND);//设置提示声音
        builder.setDefaults(Notification.DEFAULT_VIBRATE);//设置震动
        Notification notification = builder.build();//4.1以上,以下要用getNotification()
//        notification.flags=Notification.FLAG_AUTO_CANCEL;//打开应用程序后图标消失
        // 通知的默认参数 DEFAULT_SOUND, DEFAULT_VIBRATE, DEFAULT_LIGHTS.
        //如果要全部采用默认值, 用 DEFAULT_ALL.
        //此处采用默认声音
        notification.defaults |= Notification.DEFAULT_SOUND;
        notification.defaults |= Notification.DEFAULT_VIBRATE;
        notification.defaults |= Notification.DEFAULT_LIGHTS;
        //让声音、振动无限循环,直到用户响应
        notification.flags |= Notification.FLAG_INSISTENT;
        notification.flags |= Notification.FLAG_SHOW_LIGHTS;
        notification.flags |= Notification.FLAG_GROUP_SUMMARY;
        //通知被点击后,自动消失
        notification.flags |= Notification.FLAG_AUTO_CANCEL;
        manager.notify(Notification_ID, notification);
    }

    //提示音
    private static void startAlarm(Context context) {
        Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
        if (notification == null) return;
        Ringtone r = RingtoneManager.getRingtone(context, notification);
        r.play();
    }

    //开始震动
    private void vibratorTime() {
        Vibrator vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);
        vibrator.vibrate(10000);//震动指定时间   数据类型long,单位为毫秒,
    }

    //开始震动
    private void startVibrator() {
        Vibrator vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);
        long[] pattern = {100, 400, 100, 400}; // 停止 开启 停止 开启
        //第二个参数表示使用pattern第几个参数作为震动时间重复震动,如果是-1就震动一次   0一直震动
        vibrator.vibrate(pattern, 0);
    }

    //停止震动
//    private void stopVibrator() {
//        vibrator.cancel();
//    }

    private void systemMode() {
        //获取声音管理器
        AudioManager audio = (AudioManager) this.getSystemService(Context.AUDIO_SERVICE);
        switch (audio.getRingerMode()) {//获取系统设置的铃声模式
            case AudioManager.RINGER_MODE_SILENT://静音模式   震动
                Vibrator vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);
                vibrator.vibrate(1000);
                break;
            case AudioManager.RINGER_MODE_NORMAL://声音模式   系统提示音
                MediaPlayer mp = new MediaPlayer();
                try {
                    mp.setDataSource(this, RingtoneManager
                            .getDefaultUri(RingtoneManager.TYPE_NOTIFICATION));
                    mp.prepare();
                    mp.start();
                } catch (Exception e) {
                    e.printStackTrace();
                }
        }
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btn_According:
//                showNotification();
//                startAlarm(this);
//                startVibrator();
                vibratorTime();
//                systemMode();
                break;
            case R.id.btn_delete:
                manager.cancel(Notification_ID);
                break;
        }
    }
}

猜你喜欢

转载自blog.csdn.net/u013184970/article/details/79819721
今日推荐