Android + iOS 手电筒示例
Android 和 iOS 控制手电筒的示例。
引言
这些是简单的示例,展示如何在 iOS 和 Android 中控制手电筒。
背景
我开发了一个跨平台框架,名为 CloudBox。在 alpha 版本中,我为了验证 CloudBox,所以想开发一个简单的应用程序。手电筒示例是使用 CloudBox 开发的第一个应用程序。
但是 CloudBox 还没有准备好开放,所以这些示例是普通的 Android 和 iOS 示例。
使用代码
在 Android 中,我实现了一个名为 CloudLed
的类来控制摄像头。
public class CloudLed {
boolean m_isOn;
Camera m_Camera;
public boolean getIsOn() { return m_isOn; }
public CloudLed()
{
m_isOn = false;
}
public void turnOn()
{
if(!m_isOn)
{
m_isOn = true;
try
{
m_Camera = Camera.open();
Camera.Parameters mParameters;
mParameters = m_Camera.getParameters();
mParameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
m_Camera.setParameters(mParameters);
}catch(Exception ex){}
}
}
public void turnOff()
{
if(m_isOn)
{
m_isOn = false;
try
{
Camera.Parameters mParameters;
mParameters = m_Camera.getParameters();
mParameters.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
m_Camera.setParameters(mParameters);
m_Camera.release();
}catch(Exception ex){}
}
}
}
Camera
类用于设置图像捕获设置、启动/停止预览、拍摄照片以及检索用于编码视频的帧。该类是 Camera
服务的客户端,该服务管理实际的摄像头硬件。
要访问设备摄像头,必须在 Android Manifest 中声明 CAMERA
权限。此外,请确保包含 <uses-feature> manifest 元素以声明应用程序使用的摄像头功能。例如,如果使用摄像头和自动对焦功能,您的 Manifest 应包含以下内容
<uses-permission android:name="android.permission.CAMERA" />
在 Android 开发中,调用 Camera.open()
获取实例,然后从实例获取参数并修改它们。
Camera.Parameters.FLASH_MODE_TORCH
参数可以轻松地将闪光 LED 设置为手电筒模式。
请记住在程序 onPause
时调用 release()
以释放摄像头。
该示例已经在 Samsung Galaxy S2 上进行了测试。
#import <AVFoundation/AVFoundation.h>
AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
if ([device hasTorch]) {
[device lockForConfiguration:nil];
[device setTorchMode: AVCaptureTorchModeOn];
[device unlockForConfiguration];
}
在 iOS 中,控制手电筒也很容易。
[AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]
将返回用于捕获给定媒体类型数据的默认设备。
在示例中,调用 hasTorch
来检查设备是否支持手电筒。
在控制手电筒之前,我们必须调用 lockForConfiguration
以尝试获取对捕获设备的锁定。
并调用 unlockForConfiguration
以释放设备上的锁定。
[device setTorchMode: AVCaptureTorchModeOff];
使用代码关闭。
历史
- V1.0,2012 年 1 月 31 日 - 新文章。