lssjzmn安卓手电筒源码_第1页
lssjzmn安卓手电筒源码_第2页
lssjzmn安卓手电筒源码_第3页
lssjzmn安卓手电筒源码_第4页
lssjzmn安卓手电筒源码_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论