前言:我把我的安卓手机恢复出厂设置以后,手电筒这个软件莫名消失了,想要从应用市场下载一个使用,发现都有广告,那么只好手写一个了。

点击下方链接下载手电筒app:

https://download.csdn.net/download/sinat_30949835/12630516

源码分享:

MainActivity.java

package com.lnkjly.shoudiantong;import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;import android.annotation.TargetApi;
import android.content.Context;
import android.graphics.Camera;
import android.hardware.camera2.CameraAccessException;
import android.hardware.camera2.CameraCharacteristics;
import android.hardware.camera2.CameraManager;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;public class MainActivity extends AppCompatActivity {private Button button;private CameraManager mCameraManager;private boolean isFlashLightOn = false;@TargetApi(Build.VERSION_CODES.M)@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);button = (Button) findViewById(R.id.btn_sdt);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {toggleLight(!isFlashLightOn);}});//获取CameraManagerif(mCameraManager == null){mCameraManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);}mCameraManager.registerTorchCallback(mTorchCallback, null);}@TargetApi(Build.VERSION_CODES.M)@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)private CameraManager.TorchCallback mTorchCallback = new CameraManager.TorchCallback() {@Overridepublic void onTorchModeChanged(@NonNull String cameraId, boolean enabled) {super.onTorchModeChanged(cameraId, enabled);
//            Log.Loge(TAG, "onTorchModeChanged cameraId=" + cameraId + ";enabled=" + enabled);isFlashLightOn = enabled;
//            ivFlashlight.setIcon(enabled ? MaterialDrawableBuilder.IconValue.FLASHLIGHT : MaterialDrawableBuilder.IconValue.FLASHLIGHT_OFF);}};@TargetApi(Build.VERSION_CODES.M)@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)public void toggleLight(boolean OPEN) {try {//获取当前手机所有摄像头设备IDString[] ids = mCameraManager.getCameraIdList();for (String id : ids) {CameraCharacteristics c = mCameraManager.getCameraCharacteristics(id);//查询该摄像头组件是否包含闪光灯Boolean flashAvailable = c.get(CameraCharacteristics.FLASH_INFO_AVAILABLE);/** 获取相机面对的方向* CameraCharacteristics.LENS_FACING_FRONT 前置摄像头* CameraCharacteristics.LENS_FACING_BACK 后只摄像头* CameraCharacteristics.LENS_FACING_EXTERNAL 外部的摄像头*/Integer lensFacing = c.get(CameraCharacteristics.LENS_FACING);if (flashAvailable != null && flashAvailable&& lensFacing != null && lensFacing == CameraCharacteristics.LENS_FACING_BACK) {//打开或关闭手电筒mCameraManager.setTorchMode(id, OPEN);break;}}} catch (CameraAccessException e) {e.printStackTrace();}}@RequiresApi(api = Build.VERSION_CODES.M)@Overrideprotected void onDestroy() {super.onDestroy();if(mCameraManager != null && mTorchCallback != null){mCameraManager.unregisterTorchCallback(mTorchCallback);}}
}

app/src/main/res/layout/activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical"android:gravity="center"><Viewandroid:layout_weight="1"android:layout_width="wrap_content"android:layout_height="wrap_content"/><Buttonandroid:id="@+id/btn_sdt"android:layout_width="300dp"android:layout_height="300dp"android:text="手电筒"android:layout_marginBottom="50dp"/></LinearLayout></LinearLayout>

build.gradle

apply plugin: 'com.android.application'android {compileSdkVersion 29defaultConfig {applicationId "com.lnkjly.shoudiantong"minSdkVersion 19targetSdkVersion 29versionCode 1versionName "1.0"testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"}buildTypes {release {minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'}}
}dependencies {implementation fileTree(dir: 'libs', include: ['*.jar'])implementation 'androidx.appcompat:appcompat:1.1.0'implementation 'androidx.constraintlayout:constraintlayout:1.1.3'testImplementation 'junit:junit:4.12'androidTestImplementation 'androidx.test:runner:1.2.0'androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}

logo的话随便找一个就可以了。

通过以上代码就可以完成最简单的一个手电筒应用哦。

安卓手机手电筒不见了?相关推荐

  1. 安卓手机版wps的pdf能朗读_quot;手机手电筒除了照明,还隐藏了这么多秘密!真的厉害了quot;...

    手机手电筒不就是用来照明的吗?除此之外还有别的功能吗? 当然有,多观察研究就会发现许多平时我们根本就没注意到功能,手电筒不仅仅可以用来照明,还有许多实用的功能,一起来看. 秘密一:辨别身份证真假 在某 ...

  2. 手机为什么手机里的计算机没在桌面,为什么安卓手机锁屏后动态桌面就不见了?教你设置软件后台运行!...

    Hi,大家好,我是小雨.小雨给大家分享过许多动态壁纸和手机宠物的软件,比如3D桌面.微信/QQ来电特效.微信透明背景等.但是一些小伙伴反应会出现这样的一个问题:设置好了都能使用,但是锁屏后再打开手机时 ...

  3. 使用Termux在安卓手机上运行tomcat服务器

    使用Termux在安卓手机上安装运行tomcat服务器 简单背景 探索尝试 尝试一:使用limbo虚拟机(失败) 想念二:使用Linux Deploy安装(直接放弃) 尝试三:使用Aid Learni ...

  4. 苹果手机人脸识别不了是什么原因_iPhone和安卓手机的人脸识别有什么区别?

    文/极客修小编 iPhone怎么识别人脸 今天一则新闻引起了我的注意 苹果供应商AMS宣布,推出全新的"behind OLED"红外接近传感器.刘海中的红外传感器TCS3701,能 ...

  5. 手电筒安卓_iPhone手电筒只能照明?这两个隐藏技巧一定要会,事半功倍!

    科技资讯:可以说现在已经人手一部智能手机了,在众多的手机品牌中,iPhone无论是硬件还是软件系统都是高端的象征,因此,iPhone用户也在不断地增加,大家除了喜欢体验iPhone的流畅度外,还热衷于 ...

  6. 如何使用IMEI号码追踪丢失的安卓手机

    (Android)手机 IMEI(国际移动设备识别码)是GSMA授权的唯一15位代码,就像手机的身份证一样.每当电话使用特定网络拨打或接听电话,发送或接收消息时,都会自动发出并跟踪其IMEI号码.由于 ...

  7. 安卓手机垃圾清理神器!彻底清理你的手机垃圾!手机瞬间飞起来!

    使用安卓手机的小伙伴经常会遇到一个令人头疼的问题"手机时间一久,各种缓存数据和垃圾文件会越来越多,不及时清理的话,不见占用储存空间,而且还会拖慢手机的运行速度",大家可能使用过很多 ...

  8. (一)专题介绍:移动端安卓手机改造成linux服务器linux服务器中安装软件、部署前后端分离项目实战

    快捷目录 前言 一.涉及到的相关技术简介 二.具体实现过程及踩坑杂谈 1.安卓手机改造成linux系统实现方案 2.改造后的手机Linux中软件的安装 3.手机Linux中安装MySQL5.7踩坑实录 ...

  9. termux安装python3失败_把安卓手机性能发挥到极致之-Termux安装Python及Jupyter

    Termux环境使用Python太难看也不方便,比较好的方式是用网页浏览器使用Jupyter来运行Python. 写在前面--利用Jupyter写Java和Python的方法见: myastroton ...

最新文章

  1. php http_get_vars,$_GET($HTTP_GET_VARS)和$_POST($HTTP_POST_VARS)的区别
  2. Matlab编程与数据类型 -- 循环控制语句之二:while/end
  3. Linux Shell 脚本知识点
  4. 嵌入式驱动开发 视频学习推荐
  5. 在Eclipse中进行HotSpot的源码调试--转
  6. 导入代码时eclipse的src目录变为包名
  7. F1 score,micro F1score,macro F1score 的定义
  8. ps命令与top命令参数意义详解
  9. xlwings复制sheet_Python操作Excel的Xlwings教程(六)
  10. bootstrap实现表格
  11. python预处理后变量情况描述_【数据预处理】python旅游网站数据清洗实践
  12. Bootstrap tab页签刷新加载不显示,只有点击其他标签后第一个才显示
  13. 修改oracle数据库用户名和密码
  14. Tesseract-OCR 字体库下载地址
  15. 如何下载Xcode DMG或XIP文件?
  16. 期权期货和金融衍生品学习笔记 -- 第一章引言
  17. WiFi关联拒绝log分析以及代码流程 ASSOC_REJECT
  18. 蓝桥杯 2015 javaB组 校赛
  19. Renesas_based_intro
  20. 如何在PPT中对文字进行错位排版

热门文章

  1. 哲学家就餐问题的三种避免死锁的解法(PV操作)
  2. vmware虚拟机使用详解
  3. 前端开发:JS获取当前日期方法
  4. docker容器的创建
  5. Nginx的下载与安装及配置
  6. Java中的几种插件
  7. Meanshift 和 Camshift
  8. android ios动态模糊效果,iOS实现模糊效果的几种方法
  9. [Hgame CTF]easyenc
  10. 树莓派部署BT下载机