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();
}

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

(0)

相关推荐

  • android通过led实现手电筒功能

    本文实例为大家分享了android通过led实现手电筒功能的具体代码,供大家参考,具体内容如下 第一步 添加权限: <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.FLASHLIGHT" /> <uses-feature android:name="and

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

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

  • Android 通用型手电筒代码

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

  • Android实现简单手电筒功能

    本文实例为大家分享了Android实现简单手电筒功能的具体代码,供大家参考,具体内容如下 XML: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-a

  • 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 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 开启闪光灯做手电筒的详解

    复制代码 代码如下: 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 studio编写简单的手电筒APP

    很不错的手电筒APP,分享给大家,希望大家喜欢. 1. Java代码     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实现手电筒电源键关闭功能

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

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

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

随机推荐