Android 新消息提示(闪光灯,震动,声音)

        好久没有写记录了,最近一个项目要求后台推送一条任务,前端需要有相应的提示响应,最好是有闪光灯、震动并且加铃声。一直没有做过,然后再很多大神博客左看看右看看,然后总结了一下并生成一个工具类,不足之处请指教!废话不多说,直接上代码!

本文是6.0及以上

一、权限声明

<uses-permission android:name="android.permission.VIBRATE" /> <!-- 震动权限 -->
<uses-permission android:name="android.permission.CAMERA" /> <!-- 摄像头权限 -->
<uses-permission android:name="android.permission.FLASHLIGHT" /> <!-- 摄像头权限 -->

 二、闪光灯开启和关闭

/*** 打开闪光灯 */
    private void open() {
        if (isLOLLIPOP()) {
            try {
                manager.setTorchMode("0", true);
            } catch (CameraAccessException e) {
                e.printStackTrace();
            }
        }
    }

/*** 关闭闪光灯 */
    public void close() {
        if (isLOLLIPOP()) {
            try {
                manager.setTorchMode("0", false);
            } catch (CameraAccessException e) {
                e.printStackTrace();
            }
        }
    }

/**
     * 判断Android系统版本是否 >= LOLLIPOP(API21)
     *
     * @return boolean
     */
    private boolean isLOLLIPOP() {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            return true;
        } else {
            return false;
        }
    }

  manager.setTorchMode("0", true);

第一个参数“0”表示后置摄像头,1表示前置。

第二个参数“true”表示打开

三、震动提示开启和关闭

/**
     * 开始震动
     */
    public void playVibrate() {
        vibrator = (Vibrator) mContext.getSystemService(Service.VIBRATOR_SERVICE);
        // 暂停500毫秒,振动0.3秒,暂停150毫秒,振动300秒(可自行调节震幅)
        long[] vibrationPattern = new long[]{500, 300, 150, 300};
        // 第一个参数为开关开关的时间,第二个参数是重复次数,振动需要添加权限
        vibrator.vibrate(vibrationPattern, 0);//-1表示震动一次,0表示重复震动
    }

    /**
     * 关闭震动
     */
    public void closeVibrate() {
        vibrator.cancel();
    }

四、声音提示开启和关闭

/**
     * 播放通知声音
     */
    public void playRingTone() {
        Uri uri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);
        ringtone = RingtoneManager.getRingtone(mContext, uri);
        ringtone.play();
    }

    /**
     * 关闭通知声音
     */
    private void closeRingTone() {
        ringtone.stop();
    }
RingtoneManager是一个铃声管理器结合Ringtone来使用(可百度了解):
管理来电铃声(TYPE_RINGTONE)、提示音(TYPE_NOTIFICATION)、闹钟铃声(TYPE_ALARM)等。

五、闪光灯不停闪光

private void hanler() {
        runnable = new Runnable() {
            @RequiresApi(api = Build.VERSION_CODES.M)
            @Override
            public void run() {
                open();
                try {
                    Thread.sleep(100);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                close();
                try {
                    Thread.sleep(100);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                mHandler.postDelayed(this, 200);
                //这里可以控制提示状态的执行次数
            }
        };
    }

以上这些直接用就可以了,但是有一个细节需要注意:

每次在调用闪光灯方法的时候,切记每次调用都要重新初始化,否则会报错,错误意思大概就是已有打开摄像头的异常需要释放

目前就这样了,可以直接使用,如果需要资源到这里下载已封装好的Util类

END

猜你喜欢

转载自blog.csdn.net/zach229/article/details/106210917