本文實例為大家分享了Android實現(xiàn)閃光燈效果的具體代碼,供大家參考,具體內(nèi)容如下
一、聲明閃光燈的權(quán)限
1
2
|
<uses-permission android:name= "android.permission.CAMERA" /> <uses-permission android:name= "android.permission.FLASHLIGHT" /> |
注意:Camera權(quán)限6.0以上需要動態(tài)申請權(quán)限
二、具體的代碼如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
package com.google.yang.myapplication; import android.hardware.Camera; import android.hardware.Camera.Parameters; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; /** * 閃光燈的控制 * * @author yang */ public class MainActivity extends AppCompatActivity { private Button open; private Button close; private Button openFlicker; private Button closeFlicker; private Camera camera; private Boolean isShanshuo; @Override protected void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.activity_main); open = (Button) this .findViewById(R.id.open); close = (Button) this .findViewById(R.id.close); openFlicker = (Button) findViewById(R.id.openFlicker); closeFlicker = (Button) findViewById(R.id.closeFlicker); open.setOnClickListener(openOnClickListener); close.setOnClickListener(closeOnClickListener); openFlicker.setOnClickListener(openFlickerOnClickListener); closeFlicker.setOnClickListener(closeFlickerOnClickListener); } /** * 打開手電筒 */ private OnClickListener openOnClickListener = new OnClickListener() { @Override public void onClick(View v) { open(); } }; /** * 關(guān)閉手電筒 */ private OnClickListener closeOnClickListener = new OnClickListener() { @Override public void onClick(View v) { close(); } }; /** * 開啟閃爍 */ private OnClickListener openFlickerOnClickListener = new OnClickListener() { @Override public void onClick(View v) { isShanshuo = true ; openFlicker.setEnabled( false ); new Thread( new Runnable() { @Override public void run() { while (isShanshuo) { open(); try { Thread.sleep( 300 ); } catch (InterruptedException e) { e.printStackTrace(); } close(); try { Thread.sleep( 300 ); } catch (InterruptedException e) { e.printStackTrace(); } } } }).start(); } }; /** * 關(guān)閉閃爍 */ private OnClickListener closeFlickerOnClickListener = new OnClickListener() { @Override public void onClick(View v) { isShanshuo = false ; openFlicker.setEnabled( true ); } }; /** * 打開閃光燈 * * @return */ private void open() { try { camera = Camera.open(); camera.startPreview(); Parameters parameters = camera.getParameters(); parameters.setFlashMode(Parameters.FLASH_MODE_TORCH); camera.setParameters(parameters); } catch (Exception e) { e.printStackTrace(); } } /** * 關(guān)閉閃光燈 * * @return */ private void close() { try { Parameters parameters = camera.getParameters(); parameters.setFlashMode(Camera.Parameters.FLASH_MODE_OFF); camera.setParameters(parameters); camera.release(); camera = null ; } catch (Exception e) { e.printStackTrace(); } } } |
XML界面很簡單,四個按鈕:
有興趣的可以試一試,當(dāng)作一個小工具收藏一下。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。
原文鏈接:https://blog.csdn.net/fengyeNom1/article/details/80911545