Android开启闪光灯的几种办法
2012-03-21 16:36
387 查看
1、用IHardwareService直接控制
Android1.5以前是直接提供这个接口的,之后呢,需要我们自己来做一下。
在你的项目中新建一个包android.os,新建一个IHardwareService.aidl文件,内容如下:
[java]
view plaincopy
<span style="font-size:18px;">package android.os;
/** {@hide} */
interface IHardwareService
{
// obsolete flashlight support
boolean getFlashlightEnabled();
void setFlashlightEnabled(boolean on);
}</span>
然后在你的程序中引入
[java]
view plaincopy
import android.os.IHardwareService;
/**
* 设置闪光灯的开启和关闭
* @param isEnable
* @author linc
* @date 2012-3-18
*/
private void setFlashlightEnabled(boolean isEnable)
{
try
{
Method method = Class.forName("android.os.ServiceManager").getMethod("getService", String.class);
IBinder binder = (IBinder) method.invoke(null, new Object[] { "hardware" });
IHardwareService localhardwareservice = IHardwareService.Stub.asInterface(binder);
localhardwareservice.setFlashlightEnabled(isEnable);
}
catch (Exception e)
{
e.printStackTrace();
}
}
这样就可以开启闪光灯了。要使用的权限:
[html]
view plaincopy
<span style="font-size:18px;"> <uses-permission android:name="android.permission.FLASHLIGHT" />
<uses-permission android:name="android.permission.HARDWARE_TEST" /> </span>
2、用照相机来控制闪光灯
这是思维的另一个方向。Camera自带丰富的接口与Parameters,我们只管拿来使用就好了。
[java]
view plaincopy
<span style="font-size:18px;"> private Camera camera = null;
private Parameters parameters = null;
//直接开启
camera = Camera.open();
parameters = camera.getParameters();
parameters.setFlashMode(Parameters.FLASH_MODE_TORCH);//开启
camera.setParameters(parameters);
//直接关闭
parameters.setFlashMode(Parameters.FLASH_MODE_OFF);//关闭
camera.setParameters(parameters);
camera.release();</span>
如果这样遇到问题的话,可以尝试用camera的preview方法:
[java]
view plaincopy
private void OpenLightOn() {
if ( null == m_Camera )
{
m_Camera = Camera.open();
}
Camera.Parameters parameters = m_Camera.getParameters();
parameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
m_Camera.setParameters( parameters );
m_Camera.autoFocus( new Camera.AutoFocusCallback (){
public void onAutoFocus(boolean success, Camera camera) {
}
});
m_Camera.startPreview();
}
private void CloseLightOff() {
if ( m_Camera != null )
{
m_Camera.stopPreview();
m_Camera.release();
m_Camera = null;
}
}
Android1.5以前是直接提供这个接口的,之后呢,需要我们自己来做一下。
在你的项目中新建一个包android.os,新建一个IHardwareService.aidl文件,内容如下:
[java]
view plaincopy
<span style="font-size:18px;">package android.os;
/** {@hide} */
interface IHardwareService
{
// obsolete flashlight support
boolean getFlashlightEnabled();
void setFlashlightEnabled(boolean on);
}</span>
然后在你的程序中引入
[java]
view plaincopy
import android.os.IHardwareService;
/**
* 设置闪光灯的开启和关闭
* @param isEnable
* @author linc
* @date 2012-3-18
*/
private void setFlashlightEnabled(boolean isEnable)
{
try
{
Method method = Class.forName("android.os.ServiceManager").getMethod("getService", String.class);
IBinder binder = (IBinder) method.invoke(null, new Object[] { "hardware" });
IHardwareService localhardwareservice = IHardwareService.Stub.asInterface(binder);
localhardwareservice.setFlashlightEnabled(isEnable);
}
catch (Exception e)
{
e.printStackTrace();
}
}
这样就可以开启闪光灯了。要使用的权限:
[html]
view plaincopy
<span style="font-size:18px;"> <uses-permission android:name="android.permission.FLASHLIGHT" />
<uses-permission android:name="android.permission.HARDWARE_TEST" /> </span>
2、用照相机来控制闪光灯
这是思维的另一个方向。Camera自带丰富的接口与Parameters,我们只管拿来使用就好了。
[java]
view plaincopy
<span style="font-size:18px;"> private Camera camera = null;
private Parameters parameters = null;
//直接开启
camera = Camera.open();
parameters = camera.getParameters();
parameters.setFlashMode(Parameters.FLASH_MODE_TORCH);//开启
camera.setParameters(parameters);
//直接关闭
parameters.setFlashMode(Parameters.FLASH_MODE_OFF);//关闭
camera.setParameters(parameters);
camera.release();</span>
如果这样遇到问题的话,可以尝试用camera的preview方法:
[java]
view plaincopy
private void OpenLightOn() {
if ( null == m_Camera )
{
m_Camera = Camera.open();
}
Camera.Parameters parameters = m_Camera.getParameters();
parameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
m_Camera.setParameters( parameters );
m_Camera.autoFocus( new Camera.AutoFocusCallback (){
public void onAutoFocus(boolean success, Camera camera) {
}
});
m_Camera.startPreview();
}
private void CloseLightOff() {
if ( m_Camera != null )
{
m_Camera.stopPreview();
m_Camera.release();
m_Camera = null;
}
}
相关文章推荐
- Android开启闪光灯的几种办法
- Android开启闪光灯的几种办法
- Android开启闪光灯的几种办法
- Android开启闪光灯的几种办法
- Android开启闪光灯的几种办法
- Android 开启闪光灯做手电筒 源码
- 在android中画圆形图片的几种办法
- android开启线程的几种方式
- Android开启闪光灯的方法 Android打开手电筒功能
- Android出现“Conversion to Dalvik format failed with error 1”的几种情况及解决办法
- android图片显示的几种办法
- android项目出现红色感叹号、调用API出错的几种解决办法
- Android开发 开启闪光灯 关键代码
- 开启android设备的闪光灯作为手电筒
- android listView的开启滑块及最小页数解决办法
- android 关于屏幕截屏的几种办法
- Android开启和关闭闪光灯
- 在android中画圆形图片的几种办法
- Android之开启闪光灯
- Android 拍照是开启(调用)闪光灯