Skip to content

Commit 4b57bb2

Browse files
committed
Dev
1 parent 2999ed5 commit 4b57bb2

File tree

1 file changed

+64
-35
lines changed

1 file changed

+64
-35
lines changed

README.md

Lines changed: 64 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,11 @@
44
[![Android Arsenal](https://img.shields.io/badge/Android%20Arsenal-Code%20Scanner-blue.svg?style=flat)](https://android-arsenal.com/details/1/6095)
55
[![API](https://img.shields.io/badge/API-19%2B-blue.svg?style=flat)](https://android-arsenal.com/api?level=19)
66

7-
Code scanner library for [Android](https://developer.android.com), based on [ZXing](https://github.com/zxing/zxing)
7+
Code scanner library for [Android](https://developer.android.com), based
8+
on [ZXing](https://github.com/zxing/zxing)
89

910
### Features
11+
1012
* Auto focus and flash light control
1113
* Portrait and landscape screen orientations
1214
* Back and front facing cameras
@@ -15,6 +17,7 @@ Code scanner library for [Android](https://developer.android.com), based on [ZXi
1517
* Touch focus
1618

1719
### Supported formats
20+
1821
| 1D product | 1D industrial | 2D
1922
| ---------- | ------------- | --------------
2023
| UPC-A | Code 39 | QR Code
@@ -59,33 +62,29 @@ dependencies {
5962
}
6063
```
6164

62-
Add camera permission and hardware feature to AndroidManifest.xml (Don't forget about dynamic permissions on API >= 23):
65+
Add camera permission and hardware feature to AndroidManifest.xml (Don't forget about dynamic
66+
permissions on API >= 23):
6367

6468
```xml
69+
6570
<uses-permission android:name="android.permission.CAMERA"/>
6671

67-
<uses-feature
68-
android:name="android.hardware.camera"
69-
android:required="false"/>
72+
<uses-feature android:name="android.hardware.camera" android:required="false"/>
7073
```
7174

7275
Define a view in your layout file:
7376

7477
```xml
7578
<?xml version="1.0" encoding="utf-8"?>
76-
<FrameLayout
77-
xmlns:android="http://schemas.android.com/apk/res/android"
78-
android:layout_width="match_parent"
79-
android:layout_height="match_parent">
80-
81-
<com.budiyev.android.codescanner.CodeScannerView
82-
android:id="@+id/scanner_view"
83-
android:layout_width="match_parent"
84-
android:layout_height="match_parent"/>
79+
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
80+
android:layout_width="match_parent" android:layout_height="match_parent">
81+
82+
<com.budiyev.android.codescanner.CodeScannerView android:id="@+id/scanner_view"
83+
android:layout_width="match_parent" android:layout_height="match_parent"/>
8584
</FrameLayout>
8685
```
8786

88-
You can use XML attributes to set view parameters:
87+
You can use XML attributes to set CodeScannerView parameters:
8988

9089
```
9190
maskColor
@@ -118,39 +117,50 @@ flashButtonPosition
118117
And add following code to your activity:
119118

120119
Kotlin
120+
121121
```kotlin
122-
class MainActivity : AppCompatActivity() {
122+
class MainActivity: AppCompatActivity() {
123123
private lateinit var codeScanner: CodeScanner
124124

125125
override fun onCreate(savedInstanceState: Bundle?) {
126126
super.onCreate(savedInstanceState)
127127
setContentView(R.layout.activity_main)
128128
val scannerView = findViewById<CodeScannerView>(R.id.scanner_view)
129-
130-
codeScanner = CodeScanner(this, scannerView)
131-
129+
130+
codeScanner = CodeScanner(
131+
this,
132+
scannerView
133+
)
134+
132135
// Parameters (default values)
133136
codeScanner.camera = CodeScanner.CAMERA_BACK // or CAMERA_FRONT or specific camera id
134137
codeScanner.formats = CodeScanner.ALL_FORMATS // list of type BarcodeFormat,
135-
// ex. listOf(BarcodeFormat.QR_CODE)
138+
// ex. listOf(BarcodeFormat.QR_CODE)
136139
codeScanner.autoFocusMode = AutoFocusMode.SAFE // or CONTINUOUS
137140
codeScanner.scanMode = ScanMode.SINGLE // or CONTINUOUS or PREVIEW
138141
codeScanner.isAutoFocusEnabled = true // Whether to enable auto focus or not
139142
codeScanner.isFlashEnabled = false // Whether to enable flash or not
140-
143+
141144
// Callbacks
142145
codeScanner.decodeCallback = DecodeCallback {
143146
runOnUiThread {
144-
Toast.makeText(this, "Scan result: ${it.text}", Toast.LENGTH_LONG).show()
147+
Toast.makeText(
148+
this,
149+
"Scan result: ${it.text}",
150+
Toast.LENGTH_LONG
151+
).show()
145152
}
146153
}
147154
codeScanner.errorCallback = ErrorCallback { // or ErrorCallback.SUPPRESS
148155
runOnUiThread {
149-
Toast.makeText(this, "Camera initialization error: ${it.message}",
150-
Toast.LENGTH_LONG).show()
156+
Toast.makeText(
157+
this,
158+
"Camera initialization error: ${it.message}",
159+
Toast.LENGTH_LONG
160+
).show()
151161
}
152162
}
153-
163+
154164
scannerView.setOnClickListener {
155165
codeScanner.startPreview()
156166
}
@@ -186,7 +196,8 @@ public class MainActivity extends AppCompatActivity {
186196
runOnUiThread(new Runnable() {
187197
@Override
188198
public void run() {
189-
Toast.makeText(MainActivity.this, result.getText(), Toast.LENGTH_SHORT).show();
199+
Toast.makeText(MainActivity.this, result.getText(), Toast.LENGTH_SHORT)
200+
.show();
190201
}
191202
});
192203
}
@@ -196,7 +207,7 @@ public class MainActivity extends AppCompatActivity {
196207
public void onClick(View view) {
197208
mCodeScanner.startPreview();
198209
}
199-
});
210+
});
200211
}
201212

202213
@Override
@@ -218,21 +229,38 @@ or fragment:
218229
Kotlin
219230

220231
```kotlin
221-
class MainFragment : Fragment() {
232+
class MainFragment: Fragment() {
222233
private lateinit var codeScanner: CodeScanner
223234

224-
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
225-
savedInstanceState: Bundle?): View {
226-
return inflater.inflate(R.layout.fragment_main, container, false)
235+
override fun onCreateView(
236+
inflater: LayoutInflater,
237+
container: ViewGroup?,
238+
savedInstanceState: Bundle?
239+
): View {
240+
return inflater.inflate(
241+
R.layout.fragment_main,
242+
container,
243+
false
244+
)
227245
}
228246

229-
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
247+
override fun onViewCreated(
248+
view: View,
249+
savedInstanceState: Bundle?
250+
) {
230251
val scannerView = view.findViewById<CodeScannerView>(R.id.scanner_view)
231252
val activity = requireActivity()
232-
codeScanner = CodeScanner(activity, scannerView)
253+
codeScanner = CodeScanner(
254+
activity,
255+
scannerView
256+
)
233257
codeScanner.decodeCallback = DecodeCallback {
234258
activity.runOnUiThread {
235-
Toast.makeText(activity, it.text, Toast.LENGTH_LONG).show()
259+
Toast.makeText(
260+
activity,
261+
it.text,
262+
Toast.LENGTH_LONG
263+
).show()
236264
}
237265
}
238266
scannerView.setOnClickListener {
@@ -282,7 +310,7 @@ public class MainFragment extends Fragment {
282310
public void onClick(View view) {
283311
mCodeScanner.startPreview();
284312
}
285-
});
313+
});
286314
return root;
287315
}
288316

@@ -301,4 +329,5 @@ public class MainFragment extends Fragment {
301329
```
302330

303331
### Preview
332+
304333
![Preview screenshot](https://raw.githubusercontent.com/yuriy-budiyev/code-scanner/master/images/code_scanner_preview.png)

0 commit comments

Comments
 (0)