水平这么烂真是惭愧。。

这年头,想找一个没有广告,体积小巧的手电筒都不容易(好吧我知道大部分手机已经自己带了)

除了闪光灯以外,屏幕也可以用作手电筒(适合于那些没有闪光灯的平板或山寨机。。),即把背景设置为白色,把亮度调到最高。

运行效果如下(点击横线上方任意部分开启、关闭前置,点击横线下方任意部分开启、关闭后置):

如果不在意如何实现,可以直接——App下载

后置篇


打开闪光灯需要以下权限:
<uses-permission android:name="android.permission.CAMERA"></uses-permission>

变量声明:

    private Camera mCamera;private Camera.Parameters mParameters;
开启代码如下:
判空是因为有可能被其他程序占用了摄像头导致无法开启 ,如果mCamera为空则会导致程序崩溃
                    mCamera=Camera.open();if (mCamera==null) break;<span style="white-space:pre">    </span>mParameters= mCamera.getParameters();mParameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);mCamera.setParameters(mParameters);mCamera.startPreview();
关闭代码如下(camera是硬件设备,要及时释放占用):
 if (mCamera==null) break;mParameters.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);mCamera.setParameters(mParameters);mCamera.release();


前置篇:


变量声明:
 private int savedCurrentBrightness;private static final int BRIGHTNESS_MAX=255;

获取屏幕亮度:
public static int getScreenBrightness(Activity activity) {int currentBrightnessValue = 0;ContentResolver resolver = activity.getContentResolver();try {currentBrightnessValue = android.provider.Settings.System.getInt(resolver, Settings.System.SCREEN_BRIGHTNESS);} catch (Exception e) {e.printStackTrace();}return currentBrightnessValue;}

设置屏幕亮度:
public static void setBrightness(Activity activity, int brightness,int color) {WindowManager.LayoutParams lp = activity.getWindow().getAttributes();lp.screenBrightness = Float.valueOf(brightness) * (1f / 255f);activity.getWindow().setAttributes(lp);activity.getWindow().setBackgroundDrawable(activity.getResources().getDrawable(color));}

将亮度调到最高:

savedCurrentBrightness=getScreenBrightness(this);setBrightness(this,BRIGHTNESS_MAX,R.color.colorWhite);
恢复到原来的亮度:

setBrightness(this,savedCurrentBrightness,R.color.colorBlack);


UI篇:

因为功能比较简单,所以将上半部分和下半部分分开作为两个功能

在开启程序时,去掉标题栏,设定全屏,并把背景颜色该为黑色(开关前置时也会调整背景颜色)
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);this.getWindow().setBackgroundDrawable(getResources().getDrawable(R.color.colorBlack));this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

设定屏幕常亮
WindowManager.LayoutParams params = getWindow().getAttributes();params.flags |= WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;getWindow().setAttributes(params);

锁定屏幕朝向(这句话要放在 setContentView();之前)

this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);



布局代码:
    <TextViewandroid:id="@+id/title"android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center"android:layout_marginTop="36dp"android:text="@string/app_name"android:textAppearance="?android:attr/textAppearanceLarge"android:textColor="@color/colorWhite"android:textSize="40sp" /><Buttonandroid:layout_width="match_parent"android:layout_height="match_parent"android:id="@+id/front_control"android:layout_weight="1"android:layout_gravity="top"android:background="@android:color/transparent"/><ImageViewandroid:layout_width="fill_parent"android:layout_height="3dp"android:background="#ffffff" /><Buttonandroid:layout_width="match_parent"android:layout_height="match_parent"android:id="@+id/back_control"android:layout_weight="1"android:layout_gravity="bottom"android:background="@android:color/transparent"/><TextViewandroid:id="@+id/author"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginBottom="42dp"android:gravity="right"android:textColor="@color/colorWhite"android:text="@string/author" />

附录:

由于开启闪光灯后,如果退出当前活动(按返回键)闪光灯依然亮着,下次回到当前活动时,只能先开启闪光灯再关闭,因此可以写如下代码
@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {if(keyCode == KeyEvent.KEYCODE_BACK){if (mCamera!=null){mCamera.release();}}finish();return super.onKeyDown(keyCode, event);}

开启程序后,按返回键退出程序,按home键保持闪光灯亮,此时可以锁屏




App:http://fir.im/p82x
源代码:http://download.csdn.net/detail/martin20150405/9552360

[安卓开发] Android 自己做双向手电筒 源代码相关推荐

  1. 安卓开发-Android系统起源

    /*** 传说中的"G"*/ Generation 代 移动通信技术 1G:"大哥大",电台广播信号,不安全,易被窃取 2G:"GSM.CDMA&qu ...

  2. 安卓开发-Android Studio界面介绍

    Android Studio界面介绍 简介:本篇主要介绍studio内部界面的一些使用,对像我一样初学安卓的小白来说很是迷惑,很多甚至点也不敢点,这里就总结一下方便以后使用,希望大家也能多多指错~ 1 ...

  3. 培训安卓开发!现在做Android开发有前途吗?Android校招面试指南

    一个朋友是前阿里人,37岁,离职后就职美团.以前投一个面一个,今年想跳槽,但没想到投十个能有两个面试机会就不错了,最后索性又回了阿里做架构. 他在面试的时候,碰见比自己大的面试官,态度和善,一般面试都 ...

  4. 安卓开发 Android Studio安装教程

    文章目录 一.下载Android Studio 1.Android Studio下载地址 2.Android Studio下载步骤 二.安装Android Studio 1.进入安装向导 2.选择安装 ...

  5. 安卓开发Android studio运行出现ERROR: Installed Build Tools revision 32.0.0 is corrupted.的解决方法

    问题描述 运行出现ERROR: Installed Build Tools revision 32.0.0 is corrupted. 不用重新安装更多的版本,可以通过更简单的方法解决: dug如下: ...

  6. 安卓开发Android studio学习笔记12:读取解析XML(案例演示)

    Android studio学习笔记 第一步:配置Student.XML 第二步:配置activity_main.xml 第三步:配置student.xml 第四步:配置Student用户类 第五步: ...

  7. [安卓开发Android][叠层 层叠 卡片效果]RecyclerView与CardView的混合使用

    实现效果 RecyclerView起到一个叠层效果 CardView起到一个阴影效果 一.引入依赖 引入依赖到[bind.gradle]dependencies{}下 implementation ' ...

  8. android继电器指令,手机 蓝牙 控制 继电器 无线门锁 物联网 安卓源码 安卓开发 Android WIFI控制 详细注释测试稳定无bug...

    一.功能: 1.Android  WIFI连接与断开,保存连接IP及端口. 2.WIFI控制3个继电器 3.16进制发送指令,可以单条和多条发送,用逗号隔开. 4.16进制接收 如需特别功能可以找我定 ...

  9. 2020年是做安卓开发人员的绝佳时机,android开发面试自我介绍

    你这样做仅仅是准备好一个开发环境去构建安卓App,但是你还得去准备好基础和基本知识来理解安卓开发和大多数教程使用的通用术语 你现在也可以在安卓系统上构建基本的App,并且可以开发一些功能.随意使用空白 ...

最新文章

  1. 树上启动式合并问题 ---- D. Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths [状态压缩+树上启发式合并]
  2. (私人收藏)[开发必备]HTML5最全快速查找离线手册(可查询可学习,带实例)...
  3. JSP 中使用Struts2的值
  4. 【物联网】 AR9344开发环境的搭建和编译固件
  5. Vue 教程第九篇—— 动画和过度效果
  6. Day12-BigDecimal笔记及练习
  7. 适配器模式真的很简单
  8. 一个正在被API驱动的互联网时代
  9. Linux下搭建DNS 服务器
  10. php中怎么设置透明背景图片,css怎样设置背景透明
  11. H3CSE培训阶段1
  12. 软件测试的目的、原则及流程
  13. 【ps功能精通】6.钢笔工具
  14. python ORM 模块peewee(三): Model的建立
  15. 青龙面板nvjdc诺兰自定义公告页面
  16. 在手机上玩魔兽争霸2
  17. Shell(bash)脚本入门
  18. RLS,LMS以及NLMS三种自适应均衡matlab仿真
  19. oracle中clob类型的使用
  20. linux基本功系列之最危险的命令rm

热门文章

  1. Servlet内存马
  2. storyboard(故事版)新手教程 图文详解 4.把约束拉成属性 在代码文件里进行修改
  3. 数学乐 --- 年利率与欧拉数e
  4. 计算机科学计算器CE符号,计算器的ce和c是什么意思???
  5. python re search match_简诉Python Re模块中re.search和re.match的区别
  6. 零基础该怎样开始学编程?
  7. Windows10视频文件没有预览图的解决办法
  8. CookGAN Causality based Text-to-Image Synthesis
  9. win10共享打印机 报错 709 57
  10. UVALive 3959 Rectangular Polygons (排序贪心)