android 手电筒开发
来源:互联网 发布:手机淘宝免费开店流程 编辑:程序博客网 时间:2024/05/16 09:57
这是我的第一篇博文,希望大家喜欢和支持,看了别人很多博文以后 ,感觉那些技术大牛的博文都写的非常好,才开始决定自己也好写一写,让自己对已经掌握的东西系统的分析一遍,提高自己的表达能力。
把源码贴给大家看吧,有什么问题,大家就说啊 ,我也不知道怎么说。谢谢大家支持。
先手先讲一下为什么要开发这个手电筒功能,因为网上很多手电筒功能 都会有自动推送消息 和自动联网的功能 ,对使用手机的消费者不好。公司才临时决定开发一个这样的功能,也是我第一个用于量产的功能。
我在做开发之前,在网上看了很多资料,下载了一些源码供自己使用。看了网上的手电筒都实现了些什么功能。然后把网上的手电筒功能反编译出来 得到要使用到的图片资源。
我在网上找资料主要是让自己知道怎么打开闪光灯功能 和 背光亮度的调节 还有怎么实现上下左右的滑动 。
最后自己选择了用发送消息打开闪关灯的办法:
通过上下滑动来控制手电筒的开和关 ,是通过实现 OnGestureListener 接口的 onScroll 方法。通过实现 OnTouchListener 接口的 onTouch 方法来建立 GestureDetector 对象同FlashLightActivity 的联系。
- package net.seete.android.FlashLight;
- import android.R.string;
- import android.app.Activity;
- import android.content.ContentResolver;
- import android.hardware.Camera;
- import android.hardware.Camera.Parameters;
- import android.os.Bundle;
- import android.os.Handler;
- import android.provider.Settings;
- import android.util.Log;
- import android.view.GestureDetector;
- import android.view.GestureDetector.OnGestureListener;
- import android.view.MotionEvent;
- import android.view.View;
- import android.view.View.OnTouchListener;
- import android.view.Window;
- import android.view.WindowManager;
- import android.widget.ImageView;
- public class FlashLightActivity extends Activity implements OnTouchListener,OnGestureListener{
- /** Called when the activity is first created. */
- private static final String TAG = "FlashLightActivity";
- private static final boolean DEBUG = false;
- private static final int MAXIMUM_BACKLIGHT = 255;
- private int curBrightnessValue;
- private GestureDetector mGestureDetector;
- private Camera camera;
- private int isOpen = 0;
- private String flashState = null; // 代表没有闪光灯
- private ImageView flashLightBG;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- if (DEBUG){
- Log.d(TAG,"onCreate");
- }
- camera = Camera.open();
- Parameters params = camera.getParameters();
- flashState=params.getFlashMode();
- if (flashState == null){
- getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
- }
- setContentView(R.layout.main);
- if (DEBUG){
- Log.d(TAG,"onCreate="+params.getFlashMode());
- }
- if (flashState != null){
- mGestureDetector = new GestureDetector(this);
- flashLightBG = (ImageView)findViewById(R.id.background);
- flashLightBG.setOnTouchListener(this);
- flashLightBG.setLongClickable(true);
- }else{
- curBrightnessValue = getScreenBrightness(this);
- stopAutoBrightness(this);
- flashLightBG = (ImageView)findViewById(R.id.background);
- }
- }
- @Override
- public void onBackPressed() {
- // TODO Auto-generated method stub
- if (DEBUG){
- Log.d(TAG,"onBackPressed");
- }
- if (camera != null) {
- camera.release();
- camera = null;
- }
- super.onBackPressed();
- }
- @Override
- protected void onPause() {
- // TODO Auto-generated method stub
- if (DEBUG){
- Log.d(TAG,"onPause->curBrightnessValue="+curBrightnessValue);
- }
- if (flashState != null){
- flashLightBG.setImageResource(R.drawable.bg_off);
- }else{
- Log.d(TAG,"onPause->curBrightnessValue="+curBrightnessValue);
- mHandler.removeMessages(isOpen);
- setBrightness(this, curBrightnessValue);
- }
- if (camera != null) {
- if (isOpen==0){
- closeFlashLight();
- isOpen=0;
- }
- }
- super.onPause();
- }
- @Override
- protected void onStop() {
- // TODO Auto-generated method stub
- if (DEBUG){
- Log.d(TAG,"onStop");
- }
- if (camera != null) {
- camera.release();
- camera = null;
- }
- finish();
- super.onStop();
- }
- @Override
- protected void onResume() {
- // TODO Auto-generated method stub
- //flashLightBG.setImageResource(R.drawable.bg_on);
- if (DEBUG){
- Log.d(TAG,"onResume->isOpen="+isOpen);
- }
- if (flashState != null){
- mHandler.sendEmptyMessage(isOpen);
- }else{
- mHandler.sendEmptyMessageDelayed(isOpen, 2000);
- }
- super.onResume();
- }
- public boolean onDown(MotionEvent e) {
- // TODO Auto-generated method stub
- if (DEBUG){
- Log.d(TAG,"onDown");
- }
- return false;
- }
- public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
- float velocityY) {
- if (DEBUG){
- Log.d(TAG,"onFling");
- }
- // TODO Auto-generated method stub
- return false;
- }
- public void onLongPress(MotionEvent e) {
- if (DEBUG){
- Log.d(TAG,"onLongPress");
- }
- // TODO Auto-generated method stub
- }
- public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
- float distanceY) {
- // TODO Auto-generated method stub
- if (DEBUG){
- Log.d(TAG,"onScroll");
- }
- float y1 = e1.getY(), y2 = e2.getY();
- if (y1 -y2 > 20) {
- if (isOpen==1) {
- //向上滑动发送打开闪光灯消息
- mHandler.sendEmptyMessage(0);
- }
- Log.d(TAG, "To UP" + "(" + y1
- + "," + y2 + ")");
- return (true);
- } else if (y1 - y2 < -20) {
- if (isOpen==0) {
- //向下滑动发送关闭闪光灯消息
- mHandler.sendEmptyMessage(1);
- }
- Log.d(TAG, "To Down" + "(" + y1
- + "," + y2 + ")");
- return (true);
- }
- return false;
- }
- public void onShowPress(MotionEvent e) {
- // TODO Auto-generated method stub
- if (DEBUG){
- Log.d(TAG,"onShowPress");
- }
- }
- public boolean onSingleTapUp(MotionEvent e) {
- // TODO Auto-generated method stub
- if (DEBUG){
- Log.d(TAG,"onSingleTapUp");
- }
- return false;
- }
- Handler mHandler = new Handler() {
- public void handleMessage(android.os.Message msg) {
- if (DEBUG){
- Log.d(TAG,"handleMessage");
- }
- switch (msg.what) {
- case 0:
- openFlashLight();
- isOpen = 0;
- break;
- case 1:
- closeFlashLight();
- isOpen = 1;
- break;
- }
- };
- };
- public void openFlashLight(){
- if (flashState != null){
- //用于显示手电筒开时的背景
- flashLightBG.setImageResource(R.drawable.bg_on);
- }else{
- //当没有闪光灯时,用背光做光源,并且把背光调到最亮
- setBrightness(this, MAXIMUM_BACKLIGHT);
- }
- Parameters params = camera.getParameters();
- params.setFlashMode(Parameters.FLASH_MODE_TORCH); // 持续的亮灯,FLASH_MODE_ON
- camera.setParameters(params);
- }
- public void closeFlashLight(){
- if (flashState != null){
- //用于显示手电筒关时的背景
- flashLightBG.setImageResource(R.drawable.bg_off);
- }
- Parameters params_2 = camera.getParameters();
- params_2.setFlashMode(Parameters.FLASH_MODE_OFF);
- camera.setParameters(params_2);
- }
- /** * 设置亮度 */
- public static void setBrightness(Activity activity, int brightness) {
- // Settings.System.putInt(activity.getContentResolver(),
- // Settings.System.SCREEN_BRIGHTNESS_MODE,
- // Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
- WindowManager.LayoutParams lp = activity.getWindow().getAttributes();
- lp.screenBrightness = Float.valueOf(brightness) * (1f / 255f);
- activity.getWindow().setAttributes(lp);
- }
- /** * 停止自动亮度调节 */
- public static void stopAutoBrightness(Activity activity)
- {
- Settings.System.putInt(activity.getContentResolver(),
- Settings.System.SCREEN_BRIGHTNESS_MODE,
- Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
- }
- /** * 获取屏幕的亮度 */
- public static int getScreenBrightness(Activity activity)
- {
- int nowBrightnessValue = 0;
- ContentResolver resolver = activity.getContentResolver();
- try {
- nowBrightnessValue = android.provider.Settings.System.getInt(
- resolver, Settings.System.SCREEN_BRIGHTNESS); }
- catch (Exception e) {
- e.printStackTrace();
- }
- return nowBrightnessValue;
- }
- public boolean onTouch(View v, MotionEvent event) {
- // TODO Auto-generated method stub
- Log.d(TAG,"onTouch");
- return mGestureDetector.onTouchEvent(event);
- }
- }
再给大家附上 整个源码的 网址:http://download.csdn.net/detail/azhuoazhuo/4789564 点击打开链接
0 0
- android 手电筒开发
- Android手电筒开发
- Android手电筒开发
- Android 开发 打开手电筒
- android平台手电筒开发源代码
- Android开发----------- 手电筒改进版本
- Android开发 手电筒封装类
- android平台手电筒开发源代码
- android平台手电筒开发源代码
- 手电筒开发
- 基于Android平台开发的手电筒Light
- android手电筒
- Android手电筒
- Android手电筒
- android 手电筒
- android手电筒
- android手电筒
- android 手电筒
- linux下解压命令
- C++ string实现
- 小妹的美好时代
- 2013秋13级预备队集训练习4 --C - The Land of Justice
- 10个迷惑新手的Cocoa,Objective-c开发难点和问题
- android 手电筒开发
- 数据结构开发日志
- windows下qt creator中加入qwt插件
- hdu1788 Chinese remainder theorem again
- kafka安装
- Spring学习(0)——Spring架构师对Spring的介绍
- 2013秋13级预备队集训练习4 --D - How Many Points of Intersection?
- CentOS下每天自动备份mysql数据库
- sicily 1500.Prime Gap