版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、注意:1. 不带图标资源,可以自己画一个2. 编译平台为Eclipse 最低安卓版本为v4.03. 工程源码下载地址:第一部分:java源码(共两个.java)MainActivity.javapackage com.lssjzmn.zm_flash;import java.util.Timer;import java.util.TimerTask;import android.graphics.Color;import android.hardware.Camera;import android.hardware.Camera.Parameters;import android.hardwa
2、re.Sensor;import android.hardware.SensorEvent;import android.hardware.SensorEventListener;import android.hardware.SensorManager;import android.os.Bundle;import android.os.Vibrator;import android.view.KeyEvent;import android.view.View;import android.view.Window;import android.widget.Button;import and
3、roid.widget.ImageButton;import android.widget.ImageView;import android.widget.RelativeLayout;import android.widget.TextView;import android.widget.Toast;import android.app.Activity;import android.app.AlertDialog;import android.app.Service;import android.content.DialogInterface;import android.content.
4、Intent;import android.content.IntentFilter;import android.content.pm.FeatureInfo;import android.content.pm.PackageManager;public class MainActivity extends Activity implements SensorEventListener private Camera mCamera;private Parameters param;private ImageView mImageViewbg;private TextView mTextVie
5、w1;private TextView mTextView2;private TextView mTextView3;private SensorManager mSensorManager = null;private Sensor mSensor = null;private Timer mTimer;private TimerTask mTimerTask;private Vibrator mVibrator;private AlertDialog mdialog;private static Boolean isFlashOn = false;private Boolean isFal
6、shExists = false;private Boolean isSosOn = false;private Boolean isTimerOff = false;private Boolean isVibratorable = false;private int lux, mi = 0;private int remain = 2, counter = 2;private long mExitTime = 0;private long mFlashPeriod = 600;Overrideprotected void onCreate(Bundle savedInstanceState)
7、 super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.activity_main);HomeKeyExit homeKeyExitReceiver = new HomeKeyExit(); / 生成注册广播接收registerReceiver(homeKeyExitReceiver, new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);checkflash();mCamera = Ca
8、mera.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.regist
9、erListener(this, mSensor,SensorManager.SENSOR_DELAY_GAME);/ 创建对话框AlertDialog.Builder builder = new AlertDialog.Builder(this);builder.setTitle("选择闪烁速度");/ 创建选项数组String options = "快", "中(默认)", "慢" ;builder.setItems(options, dialogListener); / 设置选项builder.setNega
10、tiveButton("确定", 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("非振动
11、模式");mImageViewbg = (ImageView) findViewById(R.id.backgrd);ImageButton btnon = (ImageButton) findViewById(R.id.on);btnon.setOnClickListener( / 匿名内层类new View.OnClickListener() Overridepublic void onClick(View v) if (isSosOn = true) mTimer.cancel();isSosOn = false;isTimerOff = true;flashOn(mCamer
12、a, param););ImageButton btnoff = (ImageButton) findViewById(R.id.off);btnoff.setOnClickListener( / 匿名内层类new View.OnClickListener() Overridepublic void onClick(View v) if (isSosOn = true) mTimer.cancel();isSosOn = false;isTimerOff = true;if (isFlashOn = true) flashOff(mCamera, param); elsereturn;);Im
13、ageButton btnvib = (ImageButton) findViewById(R.id.vibrator);btnvib.setOnClickListener( / 匿名内层类new View.OnClickListener() Overridepublic void onClick(View v) remain = counter % 2;if (remain = 1) isVibratorable = false;counter += 1;mTextView3.setText("非振动模式"); else isVibratorable = true;cou
14、nter += 1;mTextView3.setText("光敏感振动模式"););mTimer = new Timer();mTimerTask = new sosTimerTask();ImageButton btnsos = (ImageButton) findViewById(R.id.bntsos);btnsos.setOnClickListener( / 匿名内层类new View.OnClickListener() Overridepublic void onClick(View v) if (isTimerOff = true) mTimer = new T
15、imer();mTimerTask = new sosTimerTask();isTimerOff = false;if (isSosOn = false) isSosOn = true;isFlashOn = true;try flashOff(mCamera, param);mTimer.schedule(mTimerTask, 0, mFlashPeriod);switch (int) mFlashPeriod) case 300:mTextView2.setText("当前闪烁速度:快");break;case 600:mTextView2.setText(&quo
16、t;当前闪烁速度:默认");break;case 1000:mTextView2.setText("当前闪烁速度:慢");break; catch (Exception e) Toast.makeText(MainActivity.this, "闪烁未成功!",Toast.LENGTH_LONG).show(););/ 对话框选项的监听对象DialogInterface.OnClickListener dialogListener = new DialogInterface.OnClickListener() public void onCli
17、ck(DialogInterface dialog, int speed) switch (speed) case 0:mFlashPeriod = 500;/ 快mTextView2.setText("当前闪烁速度:快");break;case 1:mFlashPeriod = 700;/ 中(默认)mTextView2.setText("当前闪烁速度:默认");break;case 2:mFlashPeriod = 1000;/ 慢mTextView2.setText("当前闪烁速度:慢");break;public void a
18、boutApp() AlertDialog.Builder builder = new AlertDialog.Builder(this);builder.setTitle("关于手电筒").setMessage("名称:ZM_Flashn作者:lssjzmnn时间:2014/4/4").setPositiveButton("我知道了",new DialogInterface.OnClickListener() public void onClick(DialogInterface dialoginterface, int i) /
19、Do nothing).show();public void checkflash() PackageManager pm = this.getPackageManager();FeatureInfo features = pm.getSystemAvailableFeatures();for (FeatureInfo f : features) if (PackageManager.FEATURE_CAMERA_FLASH.equals() isFalshExists = true;return;if (!isFalshExists = true) AlertDialog.Bui
20、lder builder = new AlertDialog.Builder(this);builder.setTitle("提醒").setMessage("没有找到可用的闪光灯设备n确认并退出程序").setPositiveButton("确认",new DialogInterface.OnClickListener() public void onClick(DialogInterface dialoginterface, int i) finish();System.exit(0);).show(); else return;
21、public void flashOff(Camera mCamera, Parameters param) mImageViewbg.setBackground(getResources().getDrawable(R.drawable.flashoff);param.setFlashMode(Parameters.FLASH_MODE_OFF);mCamera.setParameters(param);mCamera.stopPreview();isFlashOn = false;public void flashOn(Camera mCamera, Parameters param) m
22、ImageViewbg.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;Overridepublic boo
23、lean 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();System.exit(0);return true;defau
24、lt:break;return super.onKeyDown(keyCode, event);Overrideprotected void onDestroy() super.onDestroy();if (mCamera != null) mCamera.release();mCamera = null;mTimer.cancel();Overridepublic void onAccuracyChanged(Sensor arg0, int arg1) Overridepublic void onSensorChanged(SensorEvent event) lux = (int) e
25、vent.values0;mTextView1.setText("光照度Lux= " + lux + "/10000");if (isVibratorable = true)vibrator();public void vibrator() if (lux <= 20)mVibrator.vibrate(new long 300, 500 , -1);public void speed(View v) if (isFlashOn)flashOff(mCamera, param);mdialog.show();public void exit(Vie
26、w v) finish();System.exit(0);public void about(View v) aboutApp();class sosTimerTask extends TimerTask Overridepublic void run() MainActivity.this.runOnUiThread(new Runnable() Overridepublic void run() flashOn(mCamera, param);for (int i = 0; i < 1000; i+) / uselessmi += i;flashOff(mCamera, param)
27、;);HomeKeyExit.javapackage com.lssjzmn.zm_flash;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;class HomeKeyExit extends BroadcastReceiver static final String SYSTEM_REASON = "reason" static final String SYSTEM_HOME_KEY = "homekey
28、"/home key static final String SYSTEM_RECENT_APPS = "recentapps"/long home key Override public void onReceive(Context context, Intent intent) String action = intent.getAction(); if (action.equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS) String reason = intent.getStringExtra(SYSTEM_REASON);
29、 if (reason != null) if (reason.equals(SYSTEM_HOME_KEY) / home key System.exit(0); else if (reason.equals(SYSTEM_RECENT_APPS) / long home key 第二部分:界面 activity_main.xml文件<RelativeLayout xmlns:android=" xmlns:tools=" android:layout_width="match_parent" android:layout_height=&quo
30、t;match_parent" tools:context=".MainActivity" android:background="#000000" android:id="+id/about" android:onClick="about"> <ImageView android:id="+id/backgrd" android:layout_width="600dp" android:layout_height="fill_parent&q
31、uot; android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" /> <ImageButton android:id="+id/on" android:layout_width="wrap_content" android:layout_height="wrap_content" and
32、roid:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:layout_marginBottom="62dp" android:layout_marginLeft="42dp" android:src="drawable/on" style="?android:attr/borderlessButtonStyle"/> <ImageButton androi
33、d:id="+id/off" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="+id/on" android:layout_alignParentRight="true" android:layout_marginRight="42dp" android:src="drawable/off" style=
34、"?android:attr/borderlessButtonStyle"/> <ImageButton android:id="+id/exit" android:layout_width="50dp" android:layout_height="50dp" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:src="drawable/
35、exit" android:onClick="exit" style="?android:attr/borderlessButtonStyle"/> <TextView android:id="+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" andro
36、id:textColor="#ffffff"/> <ImageButton android:id="+id/bntsos" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="+id/exit" android:layout_alignParentRight="true" android:src="andr
37、oid:drawable/ic_lock_silent_mode_off" style="?android:attr/borderlessButtonStyle" /> <ImageButton android:id="+id/vibrator" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="+id/bntsos" an
38、droid:layout_alignLeft="+id/off" android:layout_marginLeft="22dp" android:onClick="vibrator" android:src="android:drawable/ic_menu_always_landscape_portrait" style="?android:attr/borderlessButtonStyle"/> <ImageButton android:id="+id/flashs
39、peed" style="?android:attr/borderlessButtonStyle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignTop="+id/vibrator" android:layout_marginLeft="26dp" android:layout_toRightOf="+id/on" androi
40、d:onClick="speed" android:src="android:drawable/ic_menu_manage" /> <TextView android:id="+id/speeddisp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="+id/off" android:layout_alignPa
41、rentBottom="true" android:textColor="#ffffff" /> <TextView android:id="+id/isvibratoring" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="+id/exit" android:layout_marginBottom="13dp" android:layout_marginLeft="21dp" android:layout_toRightOf="+id/exit" android:textColor="#ffffff&
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年厦门市大同小学公开招聘非在编专技教师备考题库及一套完整答案详解
- 2026年关于招聘急需专业兼职教师的备考题库及完整答案详解1套
- 2026年南京航空航天大学备考题库化处劳务派遣岗位招聘完整参考答案详解
- 2026年天津医科大学总医院导诊员岗位(北方辅医外包项目)招聘备考题库及答案详解一套
- 2026年吴中区公开招聘森林消防队员备考题库及一套完整答案详解
- 2026年天津医科大学总医院导诊员岗位(北方辅医外包项目)招聘备考题库及一套完整答案详解
- 2026年中国冶金地质总局三局招聘备考题库完整答案详解
- 2025年江苏宜公投蓝藻资源开发有限公司公开招聘劳务派遣人员备考题库及答案详解一套
- 2026年乐清市人力资源和社会保障局关于公开招聘协管员的备考题库带答案详解
- 2026年宏大爆破工程集团有限责任公司招聘备考题库含答案详解
- 2026梦工场招商银行太原分行寒假实习生招聘考试题库附答案解析
- 2026年仟益水务(重庆)有限公司招聘备考题库及一套答案详解
- 上海市杨浦区2026届初三一模化学试题(含答案)
- 2024年苏教版小学二年级上册数学期末测试试卷(含答案)
- 晚期肝癌综合治疗方案培训
- 2025浙江杭州钱塘新区建设投资集团有限公司招聘5人参考笔试题库及答案解析
- 黑龙江省佳木斯市一中2026届高二上数学期末监测模拟试题含解析
- 物流开票合同范本
- 安全事故论文3000字
- 2026年普通高中学业水平合格性考试思想政治(必修1+必修2)模块综合测评试卷(含答案解析)
- DB50-T 1502-2023 黄连林下种植技术规程
评论
0/150
提交评论