65.9K
CodeProject 正在变化。 阅读更多。
Home

Android + iOS 手电筒示例

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.91/5 (10投票s)

2012 年 1 月 31 日

CPOL

2分钟阅读

viewsIcon

38248

downloadIcon

1781

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 日 - 新文章。
© . All rights reserved.