id.button1);
mTbtnFlashlight = (ToggleButton)findViewById(R.id.button2);
parameters = mCamera.getParameters();
mTbtnLight.setSelected(false);
mTbtnFlashlight.setSelected(false);
mTbtnLight.setOnCheckedChangeListener(mChangeListener);
mTbtnFlashlight.setOnCheckedChangeListener(mFlashListener);
}
/**
* 打开手电
* @author jetsen-ZhongHeliang 2014年1月21日 下午6:03:01
*/
private void openLight()
{
parameters.setFlashMode(Parameters.FLASH_MODE_TORCH);
mCamera.setParameters(parameters);
mCamera.startPreview();
}
/**
* 关闭手电
* @author jetsen-ZhongHeliang 2014年1月21日 下午6:03:22
*/
private void closeLight()
{
parameters.setFlashMode(Parameters.FLASH_MODE_OFF);
mCamera.setParameters(parameters);
}
boolean isStart = false;
int i = 0;
class FlightThread extends Thread
{
@Override
public void run()
{
while (true)
{
while (isStart)
{
if (i++ %2 == 0)
{
mHandler.obtainMessage(OPEN_LIGHT).sendToTarget();
}
else
{
mHandler.obtainMessage(CLOSE_LIGHT).sendToTarget();
}
try
{
Thread.sleep(200);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
}
}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
switch (keyCode)
{
case KeyEvent.KEYCODE_BACK:
// 这里穿插一个很简单的双击退出的功能,有点意思
if ((System.currentTimeMillis() - mExitTime) > 2000)
{
Toast.makeText(this, "再按一次退出", Toast.LENGTH_SHORT).show();
mExitTime = System.currentTimeMillis();
}
else
{
finish();
}
return true;
default:
break;
}
return super.onKeyDown(keyCode, event);
}
@Override
protected void onDestroy()
{
mCamera.release();
flightThread.interrupt();
super.onDestroy();
}
}
三、最后,不要忘了加权限,在AndroidManifest.xml文件中添加如下权限
完成上面三个步骤就可以实现一个毫无广告的自己DIY的手电功能,背景啊应用名字啊随便自己换。
附源码一枚,说明如下:
本软件适用带有闪光灯的手机。
是通过调用手机的闪光灯来实现照明的效果。
软件功能单一,除了照明没有其他的功能,占用内存小,遵照简洁、实用、极端单一的原则。
不过得需要安装在手机上调用闪光灯才能看出效果,模拟器是看不出来的
具体下载目录在 /2014年资料/2月/10日/Android手电筒+闪光灯基本源码