ey m2016手机怎么关老年手机手电筒关闭

朵唯手机l5的手电筒在哪里_百度知道
朵唯手机l5的手电筒在哪里
朵唯手机l5的手电筒在哪里
我有更好的答案
朵唯手机 l5没有自带手电筒,需要下载第三方软件。一些手机是不带手电筒的,因为手电筒其实都是打开手机自身的闪光灯。这个时候可以下载一个三方的软件来控制。可以去应用市场里下载一个手电筒软件。
采纳率:100%
手机的手电筒功能一般都是打开摄像头的补光灯,很多手机默认都有设置的打开开光的。没有的话可以下载一个三方的软件来控制。
本回答被网友采纳
为您推荐:
其他类似问题
您可能关注的内容
sso的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。经验574 米
在线时间16 小时
版本8.6.21
积分 585, 距离下一级还需 1415 积分
积分 585, 距离下一级还需 1415 积分
机型未知设备
签到次数11
MIUI版本8.6.21
在锁屏状态下,手电筒打开时立马就自动关了,你们有吗?
分享到微信朋友圈
打开微信,点击底部的“发现”,使用 “扫一扫” 即可将网页分享到我的朋友圈。
经验960 米
在线时间66 小时
版本V8.5.2.0.MAGCNED
积分 1058, 距离下一级还需 942 积分
积分 1058, 距离下一级还需 942 积分
机型未知设备
签到次数57
MIUI版本V8.5.2.0.MAGCNED
通过手机发布
有啊,现在搞得打开手电筒立马按下电源键关掉屏幕就不会自动关了
经验574 米
在线时间16 小时
版本8.6.21
积分 585, 距离下一级还需 1415 积分
积分 585, 距离下一级还需 1415 积分
机型未知设备
签到次数11
MIUI版本8.6.21
有啊,现在搞得打开手电筒立马按下电源键关掉屏幕就不会自动关了
还要这样,真是个大BUG
经验8968 米
在线时间872 小时
版本V8.5.14.0.NDBCNED
MIUI6体验组
机型小米MIX 2
签到次数129
MIUI版本V8.5.14.0.NDBCNED
本帖最后由 老白啊 于
11:19 编辑
你好,手里这部米4电信版,最新开发版,没有这个问题。锁屏下长按home键或者下拉通知栏,都可以正常激活手电筒,一切正常。
经验6206 米
在线时间1700 小时
版本V9.5.22.0.OEICNFA
机型未知设备
签到次数131
MIUI版本V9.5.22.0.OEICNFA
lz常按至关屏试试
在线时间10 小时
积分 49, 距离下一级还需 1 积分
积分 49, 距离下一级还需 1 积分
要一直按着home键才不会熄灭
经验574 米
在线时间16 小时
版本8.6.21
积分 585, 距离下一级还需 1415 积分
积分 585, 距离下一级还需 1415 积分
机型未知设备
签到次数11
MIUI版本8.6.21
你好,手里这部米4电信版,最新开发版,没有这个问题。锁屏下长按home键或者下拉通知栏,都可以正常激活手 ...
我是米3电信版
经验574 米
在线时间16 小时
版本8.6.21
积分 585, 距离下一级还需 1415 积分
积分 585, 距离下一级还需 1415 积分
机型未知设备
签到次数11
MIUI版本8.6.21
lz常按至关屏试试
经验574 米
在线时间16 小时
版本8.6.21
积分 585, 距离下一级还需 1415 积分
积分 585, 距离下一级还需 1415 积分
机型未知设备
签到次数11
MIUI版本8.6.21
要一直按着home键才不会熄灭
经验1879 米
在线时间82 小时
积分 2075, 距离下一级还需 2925 积分
积分 2075, 距离下一级还需 2925 积分
机型未知设备
签到次数102
MIUI版本7.3.9
通过手机发布
已关注微信
已关注极客秀微信
关注腾讯微博
已关注腾讯微博
MIUI 300周
MIUI 300周更新纪念勋章
MIUI 3000万
MIUI 3000万发烧友纪念勋章
MIUI 2000万
MIUI 2000万发烧友纪念勋章
1000万用户纪念勋章
MIUI1000万用户纪念勋章
优秀解答组
优秀解答组员专属勋章
MIUI五周年
MIUI五周年纪念勋章
关注新浪微博
已关注新浪微博
MIUI 100周
100周发布纪念勋章
MIUI七周年
MIUI 9纪念勋章
Copyright (C) 2017 MIUI
京ICP备号 | 京公网安备34号 | 京ICP证110507号Cherish Android and Keep Going
&Android 应用 之路& 简易手电筒
快一个月没有写自己的博客了,由于最近换了工作,换了居住地,所以有一些杂事需要处理,从今天开始恢复正常,不赘述了。进入今天的主题 —–
简易的手电筒。
这个Demo中使用的是比较新的API,M版本之后添加的针对于手电筒的接口。这里使用的是Camera的API2接口,主要使用CameraManager中针对于闪光灯的一些方法,对于Camera API2的接口,后面在涉及相机应用的时候,API1和API2应该都会梳理一下,到时候再仔细的研究一下。
实现一个简单的手电筒,考虑到M版本上新增的接口,可以直接通过setTorchMode来改变闪光灯的状态,实现开关,然后根据当前的闪光灯状态,有回调函数,若其他的应用打开了闪光灯或者是关闭了闪光灯,该应用要作出对应的调整,同时,开启和关闭的过程,需要有明显的用户感知和提示,这就要结合NotificationManager和CameraManager的接口一起实现了。
CameraManager.java(frameworks/base/core/java/android/hardware/camera2)
TorchCallback
针对闪光灯的回调
AvailabilityCallback
针对相机是否可用的回调
CameraManager()
getCameraIdList()
获取相机的Id
registerAvailabilityCallback()
注册相机是否可用的回调
unregisterAvailabilityCallback()
registerTorchCallback()
注册针对闪光灯状态的回调
unregisterTorchCallback()
getCameraCharacteristics()
传入参数为相机的id,获取相机的一些参数信息,如支持的预览大小,支持的滤镜等等
openCamera()
传入的参数为相机的id和状态的回调StateCallback,这个是在CameraDevice中定义的,打开相机操作
setTorchMode()
设置闪光灯的状态
1.布局文件
由于是手电筒,布局文件很简单,主布局中只有一个button
activity_custom_button.xml
&?xml version="1.0" encoding="utf-8"?&
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/flash_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/black"
tools:context=".FlashActivity"&
android:id="@+id/bt_flash"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_gravity="center"
android:background="@drawable/flash_open" /&
显示当前闪光灯被占用的自定义Toast布局
busy_toast.xml
&?xml version="1.0" encoding="utf-8"?&
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"&
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/busy_snackbar_bg"
android:gravity="center"
android:padding="@dimen/activity_horizontal_margin"
android:text="FlashLight is Busy , Sorry!"
android:textStyle="bold" /&
2.代码文件
主要就是两个类,一个是主Activity,一个就是用来执行notification的pendingintent的广播接收器
FlashActivity.java
package mraz.com.
import android.annotation.TargetA
import android.app.N
import android.app.NotificationM
import android.app.PendingI
import android.content.C
import android.content.I
import android.content.res.R
import android.graphics.B
import android.graphics.BitmapF
import android.hardware.camera2.CameraAccessE
import android.hardware.camera2.CameraM
import android.os.B
import android.os.B
import android.support.v7.app.AppCompatA
import android.support.v7.app.NotificationC
import android.view.G
import android.view.V
import android.widget.B
import android.widget.FrameL
import android.widget.T
@TargetApi(Build.VERSION_CODES.M)
public class FlashActivity extends AppCompatActivity {
public static final String CLOSE_FLASH_ACTION = "android.intent.action.close_flash";
private static final int NOTIFICATIONID = 0;
private Button btF
private boolean mIsFlashOn = false;
private CameraManager cameraManager = null;
private String[] mCameraI
private Notification mFlashOnNotification = null;
private NotificationManager notificationManager = null;
private boolean isFlashAvailbale = true;
private FrameLayout mContentPanel = null;
private CameraManager.TorchCallback torchCallback = new CameraManager.TorchCallback() {
public void onTorchModeUnavailable(String cameraId) {
super.onTorchModeUnavailable(cameraId);
if (cameraId.equals(mCameraIds[0]) && mIsFlashOn) {
reverseFlashState();
isFlashAvailbale = false;
System.out.println("cameraId = " + cameraId + " onTorchModeUnavailable");
public void onTorchModeChanged(String cameraId, boolean enabled) {
super.onTorchModeChanged(cameraId, enabled);
isFlashAvailbale = true;
System.out.println("cameraid = " + cameraId + " enabled = " + enabled + " misFlashOn = " + mIsFlashOn);
if (cameraId.equals(mCameraIds[0]) && enabled == false && mIsFlashOn) {
reverseFlashState();
System.out.println("cameraId = " + cameraId + " onTorchModeChanged enabled = " + enabled);
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_custom_button);
btFlash = (Button) findViewById(R.id.bt_flash);
mContentPanel = (FrameLayout) findViewById(R.id.flash_content);
btFlash.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
reverseFlashState();
changeFlashUi(mIsFlashOn);
private void reverseFlashState() {
if (!isFlashAvailbale) {
showFlashBusy();
changeFlashState(mIsFlashOn);
mIsFlashOn = !mIsFlashOn;
changeFlashUi(mIsFlashOn);
applyNotification(mIsFlashOn);
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
private void applyNotification(boolean isFlashOn) {
if (!isFlashOn) {
dismissNotification();
if (mFlashOnNotification != null && notificationManager != null) {
notificationManager.notify(NOTIFICATIONID, mFlashOnNotification);
protected void onResume() {
super.onResume();
cameraManager = (CameraManager) getSystemService(CAMERA_SERVICE);
notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
cameraManager.registerTorchCallback(torchCallback, null);
getCameraList();
generateNotify();
protected void onDestroy() {
super.onDestroy();
cameraManager.unregisterTorchCallback(torchCallback);
@TargetApi(Build.VERSION_CODES.M)
private void changeFlashState(boolean isFlashOn) {
if (cameraManager != null && mCameraIds != null) {
cameraManager.setTorchMode(mCameraIds[0], !isFlashOn);
} catch (CameraAccessException e) {
e.printStackTrace();
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
private void getCameraList() {
if (cameraManager != null) {
mCameraIds = cameraManager.getCameraIdList();
} catch (CameraAccessException e) {
e.printStackTrace();
private void changeFlashUi(boolean isFlashOn) {
if (isFlashOn) {
btFlash.setBackgroundResource(R.drawable.flash_open);
btFlash.setBackgroundResource(R.drawable.flash_close);
private Bitmap createNotificationLargeIcon(Context c) {
Resources res = c.getResources();
int width = (int) res.getDimension(android.R.dimen.notification_large_icon_width);
int height = (int) res.getDimension(android.R.dimen.notification_large_icon_height);
Bitmap result = Bitmap.createScaledBitmap(BitmapFactory.decodeResource(res, R.mipmap.ic_flash_on_normal), width, height, false);
private void generateNotify() {
if (mFlashOnNotification != null) return;
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
builder.setLargeIcon(createNotificationLargeIcon(this))
.setContentTitle("手电筒已开启")
.setContentText("点击可关闭手电筒")
.setSmallIcon(R.mipmap.ic_flash_off_normal, 3)
.setContentIntent(createCloseFlashPendingIntent());
mFlashOnNotification = builder.build();
private void dismissNotification() {
if (notificationManager != null && mFlashOnNotification != null) {
notificationManager.cancel(NOTIFICATIONID);
private PendingIntent createCloseFlashPendingIntent() {
Intent intent = new Intent();
intent.setClass(this, FlashCloseReceiver.class);
intent.setAction(CLOSE_FLASH_ACTION);
return PendingIntent.getBroadcast(this, 0, intent, 0);
private void showFlashBusy() {
View toastContent = getLayoutInflater().inflate(R.layout.busy_toast, null, false);
Toast toast = new Toast(this);
toast.setView(toastContent);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.setDuration(Toast.LENGTH_LONG);
toast.show();
FlashCloseReceiver.java
package mraz.com.
import android.annotation.TargetA
import android.content.BroadcastR
import android.content.C
import android.content.I
import android.hardware.camera2.CameraAccessE
import android.hardware.camera2.CameraM
import android.os.B
public class FlashCloseReceiver extends BroadcastReceiver {
CameraManager mCameraManager = null;
String[] mCameraIds = null;
public FlashCloseReceiver() {
@TargetApi(Build.VERSION_CODES.M)
public void onReceive(Context context, Intent intent) {
System.out.println("onReceiver");
mCameraManager = (CameraManager) context.getSystemService(Context.CAMERA_SERVICE);
if (mCameraManager != null) {
mCameraIds = mCameraManager.getCameraIdList();
} catch (CameraAccessException e) {
e.printStackTrace();
String action = intent.getAction();
if (action.equals(FlashActivity.CLOSE_FLASH_ACTION)) {
if (mCameraManager != null && mCameraIds != null && mCameraIds.length != 0) {
System.out.println("setTorchMode");
mCameraManager.setTorchMode(mCameraIds[0], false);
} catch (CameraAccessException e) {
e.printStackTrace();
实际效果图
手电筒关闭状态
手电筒开启状态
手电筒开启状态提示信息
由于开发时间比较短,测试可能不充分,有问题欢迎留言讨论~
扫码向博主提问
没有更多推荐了,1688.com,阿里巴巴打造的全球最大的采购批发平台
1688/淘宝会员(仅限会员名)请在此登录
cbulogin.center.et2Server is OKSina Visitor System}

我要回帖

更多关于 苹果手机手电筒怎么关 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信