Android怎样绕开Camera打开手电筒5308锁屏的LED

产品型号:GL-K57产品尺寸:φ45×182mm产品净重:198.4g电池:1×1V”详细描述:
一.产品特点:
1、采用美国最新的CREE
LED,亮度高达180流明,寿命长达100000小时
2、驱动:智能数字电路控制,线性输出:标称工作电流180流明,寿命长达100000小时
3、外壳材料:T6061航空铝合金,CNC数控加工中心制作
4、连续照明时间超过3小时以上
5、外观处理:军规三极硬化处理、耐磨、耐腐、受用、手感极佳、防滑到位
6、外壳颜色:哑黑(其它颜色可定做)
7、防水等级(IP×6):O型的密封防水圈,让产品更好地防水,暴雨中正常使用
8、聚光系统:凹凸透镜,聚光效果更佳
9、开关:采用最新按键开关,更方便功能转换(强光,弱光,爆闪,关闭)
10、打标:激光雷射LOGO
二.驱动电路:智能数字电路控制,恒流输出,标称工作电流:750mA,标称工作电压3.7V,三档调光电路
(1)强光档:电流750mA,亮度180LM,以100%的功率,恒定发光
较远距离的夜间功黑暗处照明,灯头发热量较大
(2)弱光档:电流350mA,亮度100LM,以30%的功率,恒定发光
一般夜间和黑暗照明
(3)爆光档:电流750mA,亮度180LM,以100%的功率,2Hz的频率闪动工作
引起注意其他战术用途 灯头发热量较大
三.功能模式(三档功能循环)
一档:100%高度
二档:30%微亮
三档:100%暴闪
四档:关闭
使用领域:户外、登山、巡逻、灾难环境、搜救等。
没有更多推荐了,简单的手电筒程序(基于Camera类实现)
控制手机闪关灯按照思路大概有下面三种方法
使用camera类控制闪光灯方法setFlashMode 进行操作
通过JNI控制现有驱动节点(使用与三星手机,其他手机不确认)
重新编写驱动代码,提供通用的控制节点,供上层应用调用实现
上图为效果图(后来才发现原来灯泡和手电筒是不一样的东西,囧), 使用ToggleButton类型button显得生动一点。
下面是“Read The Fucking Source Code”
package com.saberhao.
import android.hardware.C
import android.hardware.Camera.P
import android.os.B
import android.app.A
import android.view.M
import android.widget.CompoundB
import android.widget.ImageV
import android.widget.ToggleB
import android.widget.CompoundButton.OnCheckedChangeL
public class BulbSwitch extends Activity {
private Camera mCameraD
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_bulb_switch);
if(mCameraDevices == null)
//获取camera实例
mCameraDevices = Camera.open();
mCameraDevices.startPreview();
tb = (ToggleButton)findViewById(R.id.BulbButton);
tb.setOnCheckedChangeListener
//listen to the button
new OnCheckedChangeListener()
public void onCheckedChanged(CompoundButton buttonView,boolean isChecked)
setBulbState(isChecked);
protected void onDestroy() {
super.onDestroy();
if(mCameraDevices == null)
// release the camera class
mCameraDevices.stopPreview();
mCameraDevices.release();
mCameraDevices =
protected void setBulbState(boolean isChecked) {
// TODO Auto-generated method stub
ImageView iv=(ImageView)findViewById(R.id.ImageView);
iv.setImageResource((isChecked)?R.drawable.bulb_on:R.drawable.bulb_off);
Parameters mParameters = mCameraDevices.getParameters();
if(isChecked)
// flash on
mParameters.setFlashMode(Parameters.FLASH_MODE_TORCH);
// flash off
mParameters.setFlashMode(Parameters.FLASH_MODE_OFF);
mCameraDevices.setParameters(mParameters);
ToggleButton tb=(ToggleButton)findViewById(R.id.BulbButton);
tb.setChecked(isChecked);
public boolean onCreateOptionsMenu(Menu menu) {
// I this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.bulb_switch, menu);
源代码 请点击下载
代码逻辑很简单,就是通过调用camera的方法setFlashMode来进行开关flash,但是过程中发现有 FC, log如下
重现路径是:第一次打开应用,操作正常,如果按back key退出,再进入,就会有FC,如果是在内存管理中直接删除,在进入,就没问题
通过上面分析 ,问题就非常明显了,没有完全退出导致了问题的发生,故又重写onDestroy的方法解决问题
没有更多推荐了,求助,android 如何开启相机LED闪光灯
[问题点数:40分]
本版专家分:0
结帖率 85.71%
CSDN今日推荐
本版专家分:18869
本版专家分:0
结帖率 85.71%
本版专家分:0
结帖率 85.71%
本版专家分:1745
本版专家分:0
结帖率 85.71%
本版专家分:20587
2010年12月 移动平台大版内专家分月排行榜第一
2011年2月 移动平台大版内专家分月排行榜第三2011年1月 移动平台大版内专家分月排行榜第三2010年10月 移动平台大版内专家分月排行榜第三
本版专家分:20587
2010年12月 移动平台大版内专家分月排行榜第一
2011年2月 移动平台大版内专家分月排行榜第三2011年1月 移动平台大版内专家分月排行榜第三2010年10月 移动平台大版内专家分月排行榜第三
本版专家分:0
结帖率 85.71%
本版专家分:10
本版专家分:0
本版专家分:5
本版专家分:1077
本版专家分:2794
本版专家分:18869
本版专家分:0
本版专家分:10
结帖率 53.33%
本版专家分:228
本版专家分:0
本版专家分:5
本版专家分:5
本版专家分:0
本版专家分:1199
匿名用户不能发表回复!|& & & &Android原生系统没有提供手电筒的API,很多手电筒的apk都是通过打开camera然后调用Flash来打开LED。
& & & &这种传统的做法有很多弊端,首先通过camera打开手电筒,会增加因为camera出粗而导致手电筒异常的风险;其次,因为要先打开camera,然后打开Flash,因此会额外增加很多功耗。
& & & &因此理想的解决方法是,在HAL层和JNI层封装出手电筒的接口,上层应用直接调用手电筒的API打开LED。
在Android的HAL层和JNI层添加手电筒的接口,包含以下一些步骤:
1. 在HAL层添加Light的接口
& & &a. 定义手电筒LED的文件节点路径:
& & & & &char const * const TORCH_FILE&&= "/sys/class/leds/led:flash_torch/brightness";
& & &b. 定义控制手电筒LED的接口:
& & & & &static int&set_light_torch(struct light_device_t* dev,&struct light_state_t const* state) & & & & &{ & & & & & & &int err = 0; & & & & & & &pthread_mutex_lock(&g_lock); & & & & & & &err = write_int(TORCH_FILE, state-&color & 0xFF); & & & & & & &pthread_mutex_unlock(&g_lock); & & & & & & & & & & & & }
& & & c. 定义手电筒对应的Light ID:
& & & & & 在Lights.h中添加&#define LIGHT_ID_TORCH & & & & &"torch"
& & & d. 在open_lights函数里面添加如下代码:
& & & & & &else if (0 == strcmp(LIGHT_ID_TORCH, name)) & & & & & & & & & set_light = set_light_
2. 在JNI层添加相应的接口
& & &a. 在com_android_server_LightsService.cpp文件的init_native( )函数中添加手电筒的Light结构体:
& & & & &devices-&lights[LIGHT_INDEX_TORCH]&&= get_device(module, LIGHT_ID_TORCH);
& & &b. 在Light类型的enum变量中添加手电筒的类型索引
& & & & &&LIGHT_INDEX_TORCH = 8,
& & &c. 在LightService.java文件中添加手电筒Light的Id
& & & & &public static final int LIGHT_ID_TORCH = 8;
3. 在Java服务层添加LightServices的接口
& & &a. 在PowerManagerService.java文件中添加相应的接口,具体如下:
& & & & &在PowerManagerService的类定义中增加手电筒Light的对象
& & & & & & & & &private LightsService.Light mTorchL
& & & & &在systemReady( )接口中创建手电筒Light的实例
& & & & & & & & &mTorchLight = mLightsService.getLight(LightsService.LIGHT_ID_TORCH);
& & & & &在PowerManagerService的类定义中添加调用手电筒Light的接口
& & & & & & & & &@Override // Binder call & & & & & & & & &public void setTorchLight(int brightness) { & & & & & & & & & & & &mContext.enforceCallingOrSelfPermission(android.Manifest.permission.DEVICE_POWER, null); & & & & & & & & & & & &final long ident = Binder.clearCallingIdentity(); & & & & & & & & & & & &try { & & & & & & & & & & & & & &setTorchLightBrightness(brightness); & & & & & & & & & & & &} finally { & & & & & & & & & & & &Binder.restoreCallingIdentity(ident); & & & & & & & & & & & &} & & & & & & & & &}
& & & & & & & & &public void setTorchLightBrightness(int brightness) { & & & & & & & & & & &LightsService.L & & & & & & & & & & &synchronized (mLock) { & & & & & & & & & & & & &if (!mSystemReady) { & & & & & & & & & & & & & & & & & & & & & & & & & & & &} & & & & & & & & & & & & &light = mTorchL & & & & & & & & & & &} & & & & & & & & & & &// Control light outside of lock. & & & & & & & & & & &light.setBrightness(brightness); & & & & & & & & &}
& & & &b. 在PowerManager.java文件里面定义供应用层调用的手电筒API:
& & & & & &&public void setTorchBrightness(int brightness) { & & & & & & & & try { & & & & & & & & & & mService.setTorchLight(brightness); & & & & & & & & } catch (RemoteException e) { & & & & & & & & } & & & & & & }
& & & &c. 在IPowerManager.aidl文件中添加手电筒的接口:
& & & & & &void setTorchLight(int brightness);
& & & &d. 在BridgePowerManager.java文件中添加接口:
& & & & & &@Override & & & & & &public void setTorchLight(int arg0) throws RemoteException { & & & & & &// pass for now.& & & & & & &}
& & & &至此,从HAL到JNI的所有接口都已经添加完毕,应用层可以通过LightService来获取手电筒的Light对象,然后对手电筒进行操作。
相关标签/搜索& 相关文章 &
MB526上的手电筒软件
本文参考至:链接地址,一个下载链接 网上看过N多个文章,但均不适用于MB526,上面的资源刚好符合,系统是2.3.6的,不保障适用于所有系统,其他手机很多都是利用相机来实现手电筒功能的,但MB526就是不可以,只能用这种方式了。 class DroidLED
private Object svc = null;
private Method getFlashlightEnabled = null;
private Method setFlashlightEnabled = null
Android 手电筒源码
最近由于公司需要,做了一个手电筒,其实手电筒原理很简单,就是调用照相机的闪光灯,控制闪光灯的开关,就可以实现手电筒的效果, 强调一下,代码中一定要注意在结束的时候对闪光灯进行释放,否则就会导致使用照相机的时候出现——无法连接到相机 这个问题 手电筒APK下载地址:点击打开下载链接 手电筒项目源码下载:点击打开下载链接 主要代码如下: package com.techainsh.
import java.util.L
Android_控制闪光灯
= m_Camera.getParameters();
mParameters.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
m_Camera.setParameters(mParameters);
m_Camera.release();
} catch(Exception ex){}
在Android中,要开启摄像头只需透过Camera.Open就可以简单开启,开启后取得Camera.Parameters就可以设定参数 我们所需要的手电筒功能,只需要将其设为FLASH_MODE_TROCH即可关闭时只要设置为FLASH_MODE_OFF后将其release就可以了 当应用程序终止时不要忘记调用release() 来终止程序
系统开关,wifi、手电筒等的开关
= pmClass.getDeclaredField("mService");
field.setAccessible(true);
// 实例化mService
Object iPM = field.get(mPowerManager);
// 得到PowerManagerService对应的Class对象
Class&?& iPMClass = Class.forName
Android 通过反射 打开闪光灯
} catch (Exception re) {
re.printStackTrace();
Log.w(TAG, "Unexpected error while finding class " + name, re);
return null;
* 通过设置Camera打开闪光灯
Android如何打开闪光灯
(ClassNotFoundException cnfe) {
return null;
} catch (Exception re) {
re.printStackTrace();
Log.w(TAG, "Unexpected error while finding class " + name, re);
return null;
* 通过设置Camera打开闪光灯
* @param mCamera
Android手电筒兼容各个手机与版本
lp.screenBrightness = Float.valueOf(255) * (1f / 255f);
getWindow().setAttributes(lp);
* 关闭手电筒
public void Closeshoudian()
if (camera != null)
//关闭闪光灯
[Android] 如何制作手电筒程序
继iphone的手电筒开发完成后,接下来我便著手开始Android如何制作手电筒的程序 我的跨平台引擎框架CloudBox已建立好iphone版的程序,但却对于Android上如何操控闪光灯一无所知 因此我做了个小范例示范如何用Android来控制闪光灯 此代码在Samsung Galaxy S2测试可运作 public class CloudLed {
boolean m_isOn;
Camera m_C
public boolean getIsOn
Android_控制闪光灯
Android控制闪光灯 最近想做一个手电筒,在网上搜到一点资料 首先闪光灯可以用android.hardware.camera来控制 1. 在Manifest.xml文件中添加权限&uses-permission android:name="android.permission.CAMERA" /& 2. 打开闪光灯 [html]
http://www.aiuxian.com/article/p-722315.html http://www.aiuxian.com/article
Android flash light
在做手电筒的实验室中,程序在开启时就会打开,在退出程序时会先关掉手电,这些都是在Activity的生命周期的毁掉方法中实现的。 在start中获得手电,(.open),在resume中打开(turnon),在pause中关闭(turnoff),在stop中释放camera(release)。(stop之前一定会调用pause) 附加几个链接 如何制作手机电筒 我建立了一个CloudLed类,将Camera再做一次封装,只处理闪光灯相关部份的代码 在Android中,要开启摄像头只需透过
Android 打开关闭闪光灯(里程碑2.1)
myFlashLight.enable(false);
} 封装的方法: package com.android.
import java.lang.reflect.M
import android.os.IB
public class MyFlashLight {
private Object svc = null;
pstm) throws Exception;
} public interface ResultSetCallback{
* @param rs
* @throws Exception
Object doInResultSet(ResultSet rs) throws Exception;
class JdbcTemplate {
* 执行数据库查询操作,不考虑数据库事务问题.
public abstract void before(Object[] args);
//目标对象的接口
package com.czp.
public interface TestItf {
void say(String name)throws Exception;
//目标对象
package com.czp.
public class TestItfImpl implements TestItf {
public void
利用反射解决有些手机无法使用手电筒的问题
本次项目,遇到索尼手机无法使用手电筒的问题,但是HTC等用官方的方法可以搞定,经过调查发现,谷歌这小子把API隐藏了,于是乎想起了搞web时使用的反射,但是android的不能直接反射出private的常量和方法,因为andorid貌似把Class.java这个东西重新搞了,其实JDK里面是有这个方法的,需要 Class clazz=Class.forName("android.os.IHardwareService");
clazz.getClass
基于反射机制的服务代理调用
is not exist.");
Object rs = null;
//调用返回数据
rs = method.invoke(bean,params);
} catch (Exception e) {
logger.error("proxy invoke IllegalArgumentException:"+e.getMessage());
e.printStackTrace();
throw new Exception
Android 打开关闭闪光灯(里程碑2.1)
android.os.IB
public class MyFlashLight {
private Object svc = null;
private Method getFlashlightEnabled = null;
private Method setFlashlightEnabled = null;
@SuppressWarnings("unchecked")
()throws UnderFlowE
public Object get(); } //自定义异常 class OverFlowException extends Exception{
public OverFlowException(){
System.out.println("this is an exception");
} } class UnderFlowException extends Exception{
public UnderFlowException
Android怎样绕开Camera打开手电筒的LED
Android原生系统没有提供手电筒的API,很多手电筒的apk都是通过打开camera然后调用Flash来打开LED。
这种传统的做法有很多弊端,首先通过camera打开手电筒,会增加因为camera出粗而导致手电筒异常的风险;其次,因为要先打开camera,然后打开Flash,因此会额外增加很多功耗。
因此理想的解决方法是,在HAL层和JNI层封装出手电筒的接口,上层应用直接调用手电筒的API打开LED。 在Android的HAL层和JNI层添加
(object instance, object[] inputs, out object[] outputs) { PreInvoke(instance, inputs); object returnedValue = null; object[] outputParams = new object[] { }; Exception exception = null; try { returnedValue = m_OldInvoker.Invoke(instance, inputs, out
server: any command(SNMP, TL1, RPC, etc.) service provider
*/ public interface CMDRequest {
* @param requestData
* set the request data from CMD client
void setRequestData(Object requestData) throws Exception
& 2012 - 2016 & aiuxian.com &All Rights Reserved. &
/*爱悠闲图+*/
var cpro_id = "u1888441";

我要回帖

更多关于 苹果4s怎样打开手电筒 的文章

 

随机推荐