Android 7.0 手电筒控制实现

在AndroidN(7.0)前你对手电筒的控制也许是这样的:

Camera camera = Camera.open();
if(open){
  Parameters mParameters = camera.getParameters();
  mParameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
  camera.setParameters(mParameters);
} else {
  Parameters mParameters = camera.getParameters();
  mParameters.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
  camera.setParameters(mParameters);
}
camera.release();

但在Android N(7.0)及以后,也许你就发现不灵了,那你就需要这样做了:

在Android(M)6.0 后,Android引入了新的API,对闪光灯的控制通过CameraManager处理;首先简单的对两个类进行说明:

(1)CameraManager.java:

可通过CameraManager manager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);获得,通过此类与相机设备进行通信。

(2)CameraCharacteristics.java:

给定指定的相机设备ID,通过此类查询相关硬件信息。

手电筒操作

try {
  //获取CameraManager
  CameraManager mCameraManager = (CameraManager) MyApplication.getContext().getSystemService(Context.CAMERA_SERVICE);
  //获取当前手机所有摄像头设备ID
  String[] ids = mCameraManager.getCameraIdList();
  for (String id : ids) {
    CameraCharacteristics c = mCameraManager.getCameraCharacteristics(id);
    //查询该摄像头组件是否包含闪光灯
    Boolean flashAvailable = c.get(CameraCharacteristics.FLASH_INFO_AVAILABLE);
    /*
    * 获取相机面对的方向
    * CameraCharacteristics.LENS_FACING_FRONT 前置摄像头
    * CameraCharacteristics.LENS_FACING_BACK 后只摄像头
    * CameraCharacteristics.LENS_FACING_EXTERNAL 外部的摄像头
    */
    Integer lensFacing = c.get(CameraCharacteristics.LENS_FACING);
    if (flashAvailable != null && flashAvailable
        && lensFacing != null && lensFacing == CameraCharacteristics.LENS_FACING_BACK) {
      //打开或关闭手电筒
      mCameraManager.setTorchMode(id, OPEN? true:false);
    }
  }

} catch (CameraAccessException e) {
  e.printStackTrace();
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

时间: 2019-09-23

Android开启闪光灯的方法 Android打开手电筒功能

前言 众所周知,安卓的手电筒功能无非是开启手机的闪光灯,既然开启闪光灯就必须要与相机关联. 365bet体育在线官网_365体育投注平台_365在线体育消息 写了个小工具,一个文件搞定. public class FlashUtils { private static FlashUtils utils; private static Camera camera; public static boolean mIsOpen = true; //使用单例模式在这里初始化相机 public static FlashUtils getInstance() { i

Android实现简单手电筒功能

本文实例为大家分享了Android实现简单手电筒功能的具体365bet体育在线官网_365体育投注平台_365在线体育消息,供大家参考,具体内容如下 XML: android通过led实现手电筒功能
本文实例为大家分享了android通过led实现手电筒功能的具体365bet体育在线官网_365体育投注平台_365在线体育消息,供大家参考,具体内容如下 第一步 添加权限: Android studio编写简单的手电筒APP
很不错的手电筒APP,分享给大家,希望大家喜欢. 1. Java365bet体育在线官网_365体育投注平台_365在线体育消息???? package com.example.goo.gfire; import android.app.Activity; import android.hardware.Camera; import android.hardware.Camera.Parameters; import android.os.Bundle; import android.view.View; import android.widget.Bu

Android中编写简单的手电筒小应用的实例教程

主要实现两个步骤: 1.实现打开和关闭闪光灯:而实现操作闪光灯主要通过Camera类 Camera camera = Camera.open(); Parameters mParameters = camera.getParameters(); mParameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);//打开Camera.Parameters.FLASH_MODE_OFF 则为关闭 amera.setParameters(mPar

Android 通用型手电筒365bet体育在线官网_365体育投注平台_365在线体育消息

前几天这边一个小区断电,黑麻麻的,一只猫闯进寝室,把我吓哭,然后就果断写了个手电筒,下次断电,再来,我要吓死它. 我之前看到很多人都是直接调用闪光灯,其实大部分机型都不支持,我这个是用相机功能来实现的,大部分机型都支持. MainActivity.class public class MainActivity extends FragmentActivity { @Override protected void onCreate(Bundle savedInstanceState) { supe

Android手电筒兼容各个手机与版本

在写手电筒APP之前,当然已经参考market上的很多手电筒APP,还有网上如何实现手电筒功能的各种源码.不管是源码还是market上的APP,总结了几点的问题. 1.我下载market上的所有手电筒APP都是通过Camera打开闪光灯的方式来实现的,但是大部分APP在打开Camera时没有进行异常处理工作,也没有任何的提示,如果当其他的程序在使用Camera时,并且返回或点Home后没有释放Camera,这时在启动相应的手电筒APP就会出现崩溃或者手电筒功能已经失效,这种用户体验用户是不能接受

Android 开启闪光灯做手电筒的详解

复制365bet体育在线官网_365体育投注平台_365在线体育消息 365bet体育在线官网_365体育投注平台_365在线体育消息如下: public class HandLightActivity extends Activity implements OnClickListener{private ToggleButton toggleButton;private Camera m_Camera;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCre

Android Camera开发手电筒功能

这是一个简单的运用Android Camera开发手电筒功能,AndroidManifest.xml文件的入口是startapp,这个文件没上传上来,大家可以自己写. flashlight.java package com.android.app; import android.app.Activity; import android.hardware.Camera; import android.hardware.Camera.Parameters; import android.os.Bun

Android实现手电筒电源键关闭功能

在打开手电筒之后 机器休眠 客户要求点击电源键 手电筒需要关闭 frameworks\base\services\core\java\com\android\server\policy\PhoneWindowManager.java @Override public void screenTurnedOn() { synchronized (mLock) { if (mKeyguardDelegate != null) { mKeyguardDelegate.onScreenTurnedOn()

Android仿微信activity滑动关闭效果

Android仿微信activity滑动关闭功能 1.利用具体利用v4包下的slidingPaneLayout实现透明的activity,365bet体育在线官网_365体育投注平台_365在线体育消息如下: BaseActivity: public class BaseSlideCloseActivity extends AppCompatActivity implements SlidingPaneLayout.PanelSlideListener { @Override protected void onCreate(Bundle savedIns

android 添加按(power键)电源键结束通话(挂断电话)

首先我们发现现在我们所用的android智能手机大部分都有当你在打电话时按power键来挂断电话,一般都是在设置中. 我主要是在原生源码中添加这一功能,主要用于学习....先看一张图: ?看到那个按电源键挂断电话吧,那就是我所添加的,本来原生源码中是没有这一栏的..... 大概思路: 首先我先添加这一个checkboxPreference,然后将是否选择这一功能的值(0和1)存到data/data/com.android.providers.settings /databases/setting

Android编程模拟HOME键功能示例

本文实例讲述了Android编程模拟HOME键功能的方法.分享给大家供大家参考,具体如下: 做一个类似于QQ按返回键并不销毁Activity的方法(即不调用Activity.finish(),系统不调用 onDestroy),而是类似于按Home键,让Activity类似于"暂停"(即只调用onPause,onDestroy). 365bet体育在线官网_365体育投注平台_365在线体育消息如下: public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode == Key

Android应用中Back键的监听及处理实例

MainActivity如下: 复制365bet体育在线官网_365体育投注平台_365在线体育消息 365bet体育在线官网_365体育投注平台_365在线体育消息如下: package cn.testnbackpressed; import android.os.Bundle; import android.view.KeyEvent; import android.app.Activity; /** * Demo描述: * 处理Back键按下事件 * * 注意事项: * 以下两种方法勿一起使用 */ public class MainActivity extends Activity { @Override

Android监听Home键和Back键的区别介绍

一:Android 中Home键监听和Back键监听的区别: (1).在Android中,当按下Home键的时候,默认情况下Stop前台的Activity,即Activity设置成停止状态[onStop()],而不是销毁状态[onDestory()].如果再次启动该Activity,不是调用onCreate()方法,而是调用onSavedInstanceState方法.则是从onRestart()开始-onStart()-onResume(). (2).当按下back键则不同,back键默认fi

Android中双击返回键退出应用实例365bet体育在线官网_365体育投注平台_365在线体育消息

Android中双击返回键退出程序 1.在MyAppliction中(继承Application) //运用list来保存们每一个activity是关键 private List mList = new LinkedList(); //为了实现每次使用该类时不创建新的对象而创建的静态对象 private static MyApplication instance; //构造方法 public MyApplication() { } //实例化

Android软键盘的显示隐藏功能实现过程

一.软键盘显示的原理 软件盘的本质是什么?软键盘其实是一个Dialog! InputMethodService为我们的输入法创建了一个Dialog,并且将该Dialog的Window的某些参数(如Gravity)进行了设置,使之能够在底部或者全屏显示.当我们点击输入框时,系统对活动主窗口进行调整,从而为输入法腾出相应的空间,然后将该Dialog显示在底部,或者全屏显示. 二.活动主窗口调整 android定义了一个属性,名字为windowSoftInputMode, 用它可以让程序可以控制活动主

Android 破解视频App去除广告功能详解及解决办法总结

Android 破解视频App去除广告功能 作为一个屌丝程序猿也有追剧的时候,但是当打开视频app的时候,那些超长的广告已经让我这个屌丝无法忍受了,作为一个程序猿看视频还要出现广告那就是打我脸,但是我有没有钱买会员,只能靠着毕生技能去耍耍去除广告了.下面就来介绍一下如何进行视频广告的去除. 一.视频广告播放原理 首先我们需要了解的一个基本知识点那就是广告其实也是一段视频,那么他肯定有请求地址和播放地址.那么我们的思路就来了,如果能够得到这些地址的话,我们就可以去除广告了,为什么呢?因为我们知道所

BootStrap 模态框实现刷新网页并关闭功能

方法与实现 hide.bs.modal,当调用 hide 实例方法时触发. $('#identifier').on('hide.bs.modal', function () { // 执行一些动作... }) hidden.bs.modal,当模态框完全对用户隐藏时触发. $('#identifier').on('hidden.bs.modal', function () { // 执行一些动作... }) 源码示例 $('#confirmRevokeOrder').on('hidden.bs.

jQuery、layer实现弹出层的打开、关闭功能

打开弹出层: 在list页面带入layer.js 在list页面点击时,弹出form弹出层,list.js: $(".add_category,.update").click(function(){ //弹出框 var doMain = $('.domain_name').val(); layer.open({ shade: [0.5, '#000', false], type: 2, area: ['900px', '530px'], fix: false, //不固定 maxmin