lssjzmn安卓手电筒源码.docx

上传人:b****4 文档编号:4103092 上传时间:2023-05-06 格式:DOCX 页数:19 大小:18.99KB
下载 相关 举报
lssjzmn安卓手电筒源码.docx_第1页
第1页 / 共19页
lssjzmn安卓手电筒源码.docx_第2页
第2页 / 共19页
lssjzmn安卓手电筒源码.docx_第3页
第3页 / 共19页
lssjzmn安卓手电筒源码.docx_第4页
第4页 / 共19页
lssjzmn安卓手电筒源码.docx_第5页
第5页 / 共19页
lssjzmn安卓手电筒源码.docx_第6页
第6页 / 共19页
lssjzmn安卓手电筒源码.docx_第7页
第7页 / 共19页
lssjzmn安卓手电筒源码.docx_第8页
第8页 / 共19页
lssjzmn安卓手电筒源码.docx_第9页
第9页 / 共19页
lssjzmn安卓手电筒源码.docx_第10页
第10页 / 共19页
lssjzmn安卓手电筒源码.docx_第11页
第11页 / 共19页
lssjzmn安卓手电筒源码.docx_第12页
第12页 / 共19页
lssjzmn安卓手电筒源码.docx_第13页
第13页 / 共19页
lssjzmn安卓手电筒源码.docx_第14页
第14页 / 共19页
lssjzmn安卓手电筒源码.docx_第15页
第15页 / 共19页
lssjzmn安卓手电筒源码.docx_第16页
第16页 / 共19页
lssjzmn安卓手电筒源码.docx_第17页
第17页 / 共19页
lssjzmn安卓手电筒源码.docx_第18页
第18页 / 共19页
lssjzmn安卓手电筒源码.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

lssjzmn安卓手电筒源码.docx

《lssjzmn安卓手电筒源码.docx》由会员分享,可在线阅读,更多相关《lssjzmn安卓手电筒源码.docx(19页珍藏版)》请在冰点文库上搜索。

lssjzmn安卓手电筒源码.docx

lssjzmn安卓手电筒源码

注意:

1.不带图标资源,可以自己画一个

2.编译平台为Eclipse最低安卓版本为v4.0

3.工程源码下载地址:

第一部分:

java源码(共两个.java)

MainActivity.java

packagecom.lssjzmn.zm_flash;

importjava.util.Timer;

importjava.util.TimerTask;

importandroid.graphics.Color;

importandroid.hardware.Camera;

importandroid.hardware.Camera.Parameters;

importandroid.hardware.Sensor;

importandroid.hardware.SensorEvent;

importandroid.hardware.SensorEventListener;

importandroid.hardware.SensorManager;

importandroid.os.Bundle;

importandroid.os.Vibrator;

importandroid.view.KeyEvent;

importandroid.view.View;

importandroid.view.Window;

importandroid.widget.Button;

importandroid.widget.ImageButton;

importandroid.widget.ImageView;

importandroid.widget.RelativeLayout;

importandroid.widget.TextView;

importandroid.widget.Toast;

importandroid.app.Activity;

importandroid.app.AlertDialog;

importandroid.app.Service;

importandroid.content.DialogInterface;

importandroid.content.Intent;

importandroid.content.IntentFilter;

importandroid.content.pm.FeatureInfo;

importandroid.content.pm.PackageManager;

publicclassMainActivityextendsActivityimplementsSensorEventListener{

privateCameramCamera;

privateParametersparam;

privateImageViewmImageViewbg;

privateTextViewmTextView1;

privateTextViewmTextView2;

privateTextViewmTextView3;

privateSensorManagermSensorManager=null;

privateSensormSensor=null;

privateTimermTimer;

privateTimerTaskmTimerTask;

privateVibratormVibrator;

privateAlertDialogmdialog;

privatestaticBooleanisFlashOn=false;

privateBooleanisFalshExists=false;

privateBooleanisSosOn=false;

privateBooleanisTimerOff=false;

privateBooleanisVibratorable=false;

privateintlux,mi=0;

privateintremain=2,counter=2;

privatelongmExitTime=0;

privatelongmFlashPeriod=600;

@Override

protectedvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

requestWindowFeature(Window.FEATURE_NO_TITLE);

setContentView(R.layout.activity_main);

HomeKeyExithomeKeyExitReceiver=newHomeKeyExit();//生成注册广播接收

registerReceiver(homeKeyExitReceiver,newIntentFilter(

Intent.ACTION_CLOSE_SYSTEM_DIALOGS));

checkflash();

mCamera=Camera.open();

param=mCamera.getParameters();

mVibrator=(Vibrator)getApplication().getSystemService(

Service.VIBRATOR_SERVICE);

mSensorManager=(SensorManager)getApplication().getSystemService(

Service.SENSOR_SERVICE);

mSensor=mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);

mSensorManager.registerListener(this,mSensor,

SensorManager.SENSOR_DELAY_GAME);

//创建对话框

AlertDialog.Builderbuilder=newAlertDialog.Builder(this);

builder.setTitle("选择闪烁速度");

//创建选项数组

String[]options={"快","中(默认)","慢"};

builder.setItems(options,dialogListener);//设置选项

builder.setNegativeButton("确定",null);

mdialog=builder.create();//创建对话框

mTextView1=(TextView)findViewById(R.id.textView);

mTextView2=(TextView)findViewById(R.id.speeddisp);

mTextView2.setText("当前闪烁速度:

默认");

mTextView3=(TextView)findViewById(R.id.isvibratoring);

mTextView3.setText("非振动模式");

mImageViewbg=(ImageView)findViewById(R.id.backgrd);

ImageButtonbtnon=(ImageButton)findViewById(R.id.on);

btnon.setOnClickListener(//匿名内层类

newView.OnClickListener(){

@Override

publicvoidonClick(Viewv){

if(isSosOn==true){

mTimer.cancel();

isSosOn=false;

isTimerOff=true;

}

flashOn(mCamera,param);

}

});

ImageButtonbtnoff=(ImageButton)findViewById(R.id.off);

btnoff.setOnClickListener(//匿名内层类

newView.OnClickListener(){

@Override

publicvoidonClick(Viewv){

if(isSosOn==true){

mTimer.cancel();

isSosOn=false;

isTimerOff=true;

}

if(isFlashOn==true){

flashOff(mCamera,param);

}else

return;

}

});

ImageButtonbtnvib=(ImageButton)findViewById(R.id.vibrator);

btnvib.setOnClickListener(//匿名内层类

newView.OnClickListener(){

@Override

publicvoidonClick(Viewv){

remain=counter%2;

if(remain==1){

isVibratorable=false;

counter+=1;

mTextView3.setText("非振动模式");

}else{

isVibratorable=true;

counter+=1;

mTextView3.setText("光敏感振动模式");

}

}

});

mTimer=newTimer();

mTimerTask=newsosTimerTask();

ImageButtonbtnsos=(ImageButton)findViewById(R.id.bntsos);

btnsos.setOnClickListener(//匿名内层类

newView.OnClickListener(){

@Override

publicvoidonClick(Viewv){

if(isTimerOff==true){

mTimer=newTimer();

mTimerTask=newsosTimerTask();

isTimerOff=false;

}

if(isSosOn==false){

isSosOn=true;

isFlashOn=true;

try{

flashOff(mCamera,param);

mTimer.schedule(mTimerTask,0,mFlashPeriod);

switch((int)mFlashPeriod){

case300:

mTextView2.setText("当前闪烁速度:

快");

break;

case600:

mTextView2.setText("当前闪烁速度:

默认");

break;

case1000:

mTextView2.setText("当前闪烁速度:

慢");

break;

}

}catch(Exceptione){

Toast.makeText(MainActivity.this,"闪烁未成功!

",

Toast.LENGTH_LONG).show();

}

}

}

});

}

//对话框选项的监听对象

DialogInterface.OnClickListenerdialogListener=newDialogInterface.OnClickListener(){

publicvoidonClick(DialogInterfacedialog,intspeed){

switch(speed){

case0:

mFlashPeriod=500;//快

mTextView2.setText("当前闪烁速度:

快");

break;

case1:

mFlashPeriod=700;//中(默认)

mTextView2.setText("当前闪烁速度:

默认");

break;

case2:

mFlashPeriod=1000;//慢

mTextView2.setText("当前闪烁速度:

慢");

break;

}

}

};

publicvoidaboutApp(){

AlertDialog.Builderbuilder=newAlertDialog.Builder(this);

builder.setTitle("关于手电筒")

.setMessage("名称:

ZM_Flash\n作者:

lssjzmn\n时间:

2014/4/4")

.setPositiveButton("我知道了",

newDialogInterface.OnClickListener(){

publicvoidonClick(

DialogInterfacedialoginterface,inti){

//Donothing

}

}).show();

}

publicvoidcheckflash(){

PackageManagerpm=this.getPackageManager();

FeatureInfo[]features=pm.getSystemAvailableFeatures();

for(FeatureInfof:

features){

if(PackageManager.FEATURE_CAMERA_FLASH.equals(f.name)){

isFalshExists=true;

return;

}

}

if(!

isFalshExists==true){

AlertDialog.Builderbuilder=newAlertDialog.Builder(this);

builder.setTitle("提醒")

.setMessage("没有找到可用的闪光灯设备\n确认并退出程序")

.setPositiveButton("确认",

newDialogInterface.OnClickListener(){

publicvoidonClick(

DialogInterfacedialoginterface,inti){

finish();

System.exit(0);

}

}).show();

}else{

return;

}

}

publicvoidflashOff(CameramCamera,Parametersparam){

mImageViewbg.setBackground(getResources().getDrawable(

R.drawable.flashoff));

param.setFlashMode(Parameters.FLASH_MODE_OFF);

mCamera.setParameters(param);

mCamera.stopPreview();

isFlashOn=false;

}

publicvoidflashOn(CameramCamera,Parametersparam){

mImageViewbg.setBackground(getResources().getDrawable(

R.drawable.flashon));

param.setFlashMode(Parameters.FLASH_MODE_TORCH);//只用FLASH_MODE_TORCH

//mImageViewbg.setBackgroundColor(Color.parseColor("#333333"));

mCamera.setParameters(param);

mCamera.startPreview();

isFlashOn=true;

}

@Override

publicbooleanonKeyDown(intkeyCode,KeyEventevent){

switch(keyCode){

caseKeyEvent.KEYCODE_BACK:

if((System.currentTimeMillis()-mExitTime)>2000){

Toast.makeText(this,"再按一次退出手电筒",Toast.LENGTH_SHORT).show();

mExitTime=System.currentTimeMillis();

}else{

finish();

System.exit(0);

}

returntrue;

default:

break;

}

returnsuper.onKeyDown(keyCode,event);

}

@Override

protectedvoidonDestroy(){

super.onDestroy();

if(mCamera!

=null){

mCamera.release();

mCamera=null;

}

mTimer.cancel();

}

@Override

publicvoidonAccuracyChanged(Sensorarg0,intarg1){

}

@Override

publicvoidonSensorChanged(SensorEventevent){

lux=(int)event.values[0];

mTextView1.setText("光照度Lux="+lux+"/10000");

if(isVibratorable==true)

vibrator();

}

publicvoidvibrator(){

if(lux<=20)

mVibrator.vibrate(newlong[]{300,500},-1);

}

publicvoidspeed(Viewv){

if(isFlashOn)

flashOff(mCamera,param);

mdialog.show();

}

publicvoidexit(Viewv){

finish();

System.exit(0);

}

publicvoidabout(Viewv){

aboutApp();

}

classsosTimerTaskextendsTimerTask{

@Override

publicvoidrun(){

MainActivity.this.runOnUiThread(newRunnable(){

@Override

publicvoidrun(){

flashOn(mCamera,param);

for(inti=0;i<1000;i++){//useless

mi+=i;

}

flashOff(mCamera,param);

}

});

}

}

}

HomeKeyExit.java

packagecom.lssjzmn.zm_flash;

importandroid.content.BroadcastReceiver;

importandroid.content.Context;

importandroid.content.Intent;

classHomeKeyExitextendsBroadcastReceiver{

staticfinalStringSYSTEM_REASON="reason";

staticfinalStringSYSTEM_HOME_KEY="homekey";//homekey

staticfinalStringSYSTEM_RECENT_APPS="recentapps";//longhomekey

@Override

publicvoidonReceive(Contextcontext,Intentintent){

Stringaction=intent.getAction();

if(action.equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)){

Stringreason=intent.getStringExtra(SYSTEM_REASON);

if(reason!

=null){

if(reason.equals(SYSTEM_HOME_KEY)){

//homekey

System.exit(0);

}elseif(reason.equals(SYSTEM_RECENT_APPS))

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2