Android判断用户是否允许了摄像头权限实例代码
如题,既然是判断用户是否允许了摄像头权限,那么,咱们就忽略是Manifest配置的问题,因为这是开发者的事。
用户在使用APP时,如果首次进入用摄像头的地方,手机会提示是否允许该应用使用摄像头。有些用户小手一抖、或者压根就不想开启摄像头,咔擦,就给你关了,那好了。下回再进入该功能,就会出现APP一片黑,或者崩溃的情况。
作为开发者,正常思路是要提示用户,摄像头权限被你关了,赶紧去手动开启,不然,就别想用该功能了!那,咱们该怎么实现这个思路呢?
一、判断摄像头权限
Android API没提供判断摄像头权限是否被关闭的方法,但是,我们依然有办法,直接上代码:
public static booleanisCameraUseable() { boolean canUse =true; Camera mCamera =null; try{ mCamera = Camera.open(); // setParameters 是针对魅族MX5。MX5通过Camera.open()拿到的Camera对象不为null Camera.Parameters mParameters = mCamera.getParameters(); mCamera.setParameters(mParameters); }catch(Exception e) { canUse =false; } if(mCamera !=null) { mCamera.release(); } return canUse; }
上面方法,放心copy到你的代码里,在使用摄像头之前,调用一下,返回ture说明摄像头权限是开启的。反之,摄像头权限被用户关掉了。
附注:
1、可以看出代码实现思路是通过调用Camera.open(),然后根据是否出现异常来判断权限状态。感兴趣的同学可以看看Android SDK里的android.hardware.Camera这个类,在第490行左右的代码,google就是这么干的。
Camera(intcameraId) { interr = cameraInitNormal(cameraId); if(checkInitErrors(err)) { switch(err) { case EACCESS: throw newRuntimeException("Fail to connect to camera service"); case ENODEV: throw newRuntimeException("Camera initialization failed"); default: // Should never hit this. throw newRuntimeException("Unknown camera error"); } } }
2、由于魅族MX5的ROM改了很多东西,google大哥的方法不能完全直接用,于是又加了上面有注释处的代码,这里不做过多解释。
二、给提示
如果摄像头权限被用户关掉了,处理思路是:弹出个对话框,提示用户去系统设置中,找到摄像头管理权限界面,手动打开摄像头权限。
三、跳转设置界面手动开启权限
跳转设置界面的代码如下:
Intent intent =new Intent(Settings.ACTION_SETTINGS); context.startActivity(intent);
附注:有的人会问,为啥不直接跳到摄像头权限管理界面去呢,换个action不就行了?是的,这种思路没错,但是不同厂家手机打开摄像头权限管理界面的action是不一样的,差别太大,本人试过,整不动。。。感兴趣的同学可以试试哦,验证一下
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
android开发之调用手机的摄像头使用MediaRecorder录像并播放
我们玩玩手机的录像功能吧.做个DEMO. 看看录制过程: 复制代码 代码如下: mediarecorder = new MediaRecorder();// 创建mediarecorder对象 // 设置录制视频源为Camera(相机) mediarecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); // 设置录制完成后视频的封装格式THREE_GPP为3gp.MPEG_4为mp4 mediarecorder.setOutputFo
-
Android实现手机摄像头的自动对焦
如何实现Android相机的自动对焦,而且是连续自动对焦的.当然直接调用系统相机就不用说了,那个很简单的.下面我们主要来看看如如何自己实现一个相机,并且实现自动连续对焦. 代码如下: public class MainActivity extends Activity { private SurfaceView surfaceView; private SurfaceHolder surfaceHolder; private boolean flag = false; private Strin
-
Android调用前后摄像头同时工作实例代码
硬件环境:小米4 Android版本:6.0 咱们先看效果图: 我把代码贴出来: AndroidMainfest.xml文件(需要新增camera权限): <uses-permission android:name="android.permission.CAMERA" /> activity_main.xml文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayo
-
Android开发教程之调用摄像头功能的方法详解
本文实例讲述了Android调用摄像头功能的方法.分享给大家供大家参考,具体如下: 我们要调用摄像头的拍照功能,显然 第一步必须加入调用摄像头硬件的权限,拍完照后我们要将图片保存在SD卡中,必须加入SD卡读写权限,所以第一步,我们应该在Android清单文件中加入以下代码 摄像头权限: <uses-permission android:name="android.permission.CAMERA"/> SD卡读写权限: <uses-permission androi
-
Android实现调用摄像头
应用场景: 在Android开发过程中,有时需要调用手机自身设备的功能,本文侧重摄像头拍照功能的调用. 知识点介绍: 使用权限:调用手机自身设备功能(摄像头拍照功能),应该确保已经在AndroidManifest.xml中正确声明了对摄像头的使用及其它相关的feature 1. 摄像头相关权限设置 <!--摄像头权限 --> <uses-permission android:name="android.permission.CAMERA" /> <!--存
-
Android中判断是否有前置摄像头、后置摄像头的方法
通常我们进行摄像头操作,如扫描二维码需要判断是否有后置摄像头(Rear camera),比如Nexus 7 一代就没有后置摄像头,这样在尝试使用的时候,我们需要进行判断进行一些提示或者处理. 以下代码为一系列的方法,用来判断是否有前置摄像头(Front Camera),后置摄像头. 复制代码 代码如下: private static boolean checkCameraFacing(final int facing) { if (getSdkVersion() < Build.VERS
-
Android 开发随手笔记之使用摄像头拍照
在Android中,使用摄像头拍照一般有两种方法, 一种是调用系统自带的Camera,另一种是自己写一个摄像的界面. 我们要添加如下权限: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.CAMERA"/> 1.调用系统Camera 调用系统
-
Android编程实现摄像头临摹效果的方法
本文实例讲述了Android编程实现摄像头临摹效果的方法.分享给大家供大家参考,具体如下: 这篇文章结合本人的开发实例,介绍如何实现摄像头临摹效果,即将摄像头拍摄的画面作为临摹的物体投射到画纸上,用户可以在画纸上继续作画,效果如图1. 主要可以分成四步,第一步在AndroidManifest.xml文件里添加对摄像机的使用许可. <uses-permissionandroid:name="android.permission.CAMERA"/> 第二步在布局文件里使用fra
-
Android判断用户是否允许了摄像头权限实例代码
如题,既然是判断用户是否允许了摄像头权限,那么,咱们就忽略是Manifest配置的问题,因为这是开发者的事. 用户在使用APP时,如果首次进入用摄像头的地方,手机会提示是否允许该应用使用摄像头.有些用户小手一抖.或者压根就不想开启摄像头,咔擦,就给你关了,那好了.下回再进入该功能,就会出现APP一片黑,或者崩溃的情况. 作为开发者,正常思路是要提示用户,摄像头权限被你关了,赶紧去手动开启,不然,就别想用该功能了!那,咱们该怎么实现这个思路呢? 一.判断摄像头权限 Android API没提供判断
-
Android判断当前栈顶Activity的包名代码示例
有时候,我们想做一个功能需求的时候,在网上找相关资料,总是找不到想要的,所以我就想到了用博客来记录和整理自己发现的新东西,话不多说,直接撸代码~ //判断当前是不是桌面 public static Boolean isHome(Context context) { String topPackageName = getTopActivityName(context); //此处做了判断如果得到的是null的话就返回一个true return topPackageName == null ? tr
-
Android 判断所有字段是否已经输入的实例
Android 遍历控件 Overview 在我们登录或者注册提交什么数据的时候我们需要填写我们的个人信息,所以我们需要判断我们的字段时候都输入了. Android 如何遍历我们界面中的控件 按照国际惯例,我们看一下源代码: package com.android.gesture.study_01_08; import androidx.appcompat.app.AppCompatActivity; import androidx.constraintlayout.widget.Constra
-
android获取附近蓝牙设备并计算距离的实例代码
需要用到本地蓝牙适配器 // 获取本地蓝牙适配器 mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); 判断是否支持蓝牙,并确认打开该功能. // 判断手机是否支持蓝牙 if (mBluetoothAdapter == null) { Toast.makeText(this, "设备不支持蓝牙", Toast.LENGTH_SHORT).show(); finish(); } // 判断是否打开蓝牙 if (!mBlueto
-
Android界面上拉下拉的回弹效果实例代码
废话不多说,具体代码如下所示: public class MyScrollView extends ScrollView { private View childView; public MyScrollView(Context context) { super(context); } public MyScrollView(Context context, AttributeSet attrs) { super(context, attrs); } public MyScrollView(Co
-
Android仿微信右滑返回功能的实例代码
先上效果图,如下: 先分析一下功能的主要技术点,右滑即手势判断,当滑到一直距离时才执行返回,并且手指按下的位置是在屏幕的最左边(这个也是有一定范围的), 这些可以实现onTouchEvent来实现. 接着就是返回时,有滑动效果,很显然这个是Acitivty切换动画实现的.好啦,分析完了就开干.下面上代码: @Override public boolean onTouchEvent(MotionEvent event) { switch (event.getAction()){ case Mot
-
Android 模拟新闻APP显示界面滑动优化实例代码
内容: 1.滑动优化(滑动时不加载图片,停止才加载) 2.第一次进入时手动加载 代码如下: 1.界面布局 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:
-
Android加载loading对话框的功能及实例代码(不退出沉浸式效果)
一.自定义Dialog 在沉浸式效果下,当界面弹出对话框时,对话框将获取到焦点,这将导致界面退出沉浸式效果,那么是不是能通过屏蔽对话框获取焦点来达到不退出沉浸式的目的呢.说干就干,我们先来看一下改善后的效果图. 普通对话框弹出效果 LoadingDialog弹出效果 自定义LoadingDialog public class LoadingDialog extends Dialog { public LoadingDialog(Context context) { super(context);
-
Android利用ZXing扫描二维码的实例代码解析
相关阅读: Android开发框架之自定义ZXing二维码扫描界面并解决取景框拉伸问题 此项目源码地址:请点击这里 看一下zxing的项目结构,我这里直接拿过来用的 看一下扫码的activity: package com.fanyafeng.barcode.activity; import android.content.Intent; import android.graphics.Bitmap; import android.net.Uri; import android.os.Bundle
-
Android仿微信单击拍照长按录像功能实例代码
此文章是看郭神公众号发的一篇,仅作学习. 在modlue gradle中添加 compile 'cjt.library.wheel:camera:0.0.7' 在project gradle中添加 compile 'cjt.library.wheel:camera:0.0.7' 添加的地方是 allprojects { repositories { jcenter() /*在此处添加*/ } } 使用起来很方便,只需在xml布局中 <com.cjt2325.cameralibrary.JCame
随机推荐
- 对Python的Django框架中的项目进行单元测试的方法
- Nginx基础入门之gzip配置指南
- PHP不使用递归的无限级分类简单实例
- 献给php初学者(入门学习经验谈)
- JavaScript学习小结之使用canvas画“哆啦A梦”时钟
- Python 专题四 文件基础知识
- Sql Server 分组统计并合计总数及WITH ROLLUP应用
- ubuntu上在androidstudio中启动emulator闪退的解决方法
- sql to sqlalchemy 转换的小例子
- Linux服务器基本应用
- Android开发 OpenGL ES绘制3D 图形实例详解
- 第十四节--命名空间
- Docker SSH连接docker容器的示例代码
- 加载 vue 远程代码的组件实例详解
- java 分行读取实例
- Mybatis工具类JdbcTypeInterceptor运行时自动添加jdbcType属性
- Android gradle插件打印时间戳的方法详解
- SpringBoot中Shiro缓存使用Redis、Ehcache的方法
- 使用go gin来操作cookie的讲解
- python list格式数据excel导出方法