Skip to content

Commit 9c507a8

Browse files
author
iqosjay@gmail.com
committed
md
1 parent 751a30c commit 9c507a8

File tree

15 files changed

+121
-74
lines changed

15 files changed

+121
-74
lines changed
592 Bytes
Binary file not shown.

.idea/codeStyles/Project.xml

Lines changed: 29 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/misc.xml

Lines changed: 4 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/vcs.xml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ buildscript {
77
jcenter()
88
}
99
dependencies {
10-
classpath 'com.android.tools.build:gradle:3.0.1'
10+
classpath 'com.android.tools.build:gradle:3.1.3'
1111
// NOTE: Do not place your application dependencies here; they belong
1212
// in the individual module build.gradle files
1313
}

gradle.properties

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
# Specifies the JVM arguments used for the daemon process.
88
# The setting is particularly useful for tweaking memory settings.
99
org.gradle.jvmargs=-Xmx1536m
10-
android.enableAapt2=false
1110
# When configured, Gradle will run in incubating parallel mode.
1211
# This option should only be used with decoupled projects. More details, visit
1312
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects

qrcodescanner/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,6 @@ android {
1818
}
1919

2020
dependencies {
21+
implementation 'com.android.support:appcompat-v7:27.1.1'
2122
implementation 'com.google.zxing:core:3.3.0'
2223
}

qrcodescanner/src/main/AndroidManifest.xml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,11 @@
88
<uses-permission android:name="android.permission.CAMERA" />
99
<uses-permission android:name="android.permission.FLASHLIGHT" />
1010

11-
<application >
11+
<application>
1212
<activity
1313
android:name=".app.QRScannerActivity"
1414
android:launchMode="singleTop"
15-
android:screenOrientation="portrait" />
15+
android:screenOrientation="portrait"
16+
android:theme="@style/Theme.AppCompat" />
1617
</application>
1718
</manifest>

qrcodescanner/src/main/java/com/iqos/qrscanner/app/QRScannerActivity.java

Lines changed: 19 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
11
package com.iqos.qrscanner.app;
22

3-
import android.app.Activity;
43
import android.content.Intent;
54
import android.content.res.AssetFileDescriptor;
65
import android.media.AudioManager;
76
import android.media.MediaPlayer;
87
import android.os.Bundle;
98
import android.os.Handler;
109
import android.os.Vibrator;
10+
import android.support.v7.app.ActionBar;
11+
import android.support.v7.app.AppCompatActivity;
12+
import android.support.v7.widget.Toolbar;
1113
import android.view.SurfaceHolder;
1214
import android.view.SurfaceView;
1315
import android.view.View;
1416
import android.view.ViewGroup;
1517
import android.view.Window;
1618
import android.view.WindowManager;
17-
import android.widget.ImageView;
18-
import android.widget.TextView;
1919

2020
import com.google.zxing.BarcodeFormat;
2121
import com.google.zxing.Result;
@@ -29,22 +29,20 @@
2929
import java.util.Vector;
3030

3131

32-
public class QRScannerActivity extends Activity implements SurfaceHolder.Callback, View.OnClickListener {
32+
public class QRScannerActivity extends AppCompatActivity implements SurfaceHolder.Callback {
3333
private static final long VIBRATE_DURATION = 200L;
3434
private static final float BEEP_VOLUME = 0.10f;
3535
public static final int SCAN_RESULT_CODE = 15613;
3636
public static final String SCAN_RESULT = "scan_result";
3737
private ViewfinderView mScanView;
3838
private CaptureActivityHandler handler;
3939
private Vector<BarcodeFormat> decodeFormats;
40+
private Toolbar mToolbar;
4041
private String characterSet;
4142
private InactivityTimer inactivityTimer;
4243
private MediaPlayer mediaPlayer;
43-
private TextView mTvTitle;
44-
private ImageView mIvBack;
4544
private boolean hasSurface;
4645
private boolean playBeep;
47-
4846
private boolean vibrate;
4947

5048
@Override
@@ -80,22 +78,31 @@ protected int getLayoutResources() {
8078
* 获取XML里面的控件
8179
*/
8280
protected void findViews() {
83-
mTvTitle = findViewById(R.id.app_tv_title);
84-
mScanView = findViewById(R.id.viewfinder_view);
85-
mIvBack = findViewById(R.id.app_iv_back);
81+
this.mScanView = findViewById(R.id.viewfinder_view);
82+
this.mToolbar = findViewById(R.id.app_scan_tool_bar);
8683
}
8784

8885

8986
/**
9087
* 初始化
9188
*/
9289
protected void init() {
93-
mTvTitle.setText(R.string.app_txt_scanner_title);
94-
mIvBack.setOnClickListener(this);
9590
getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
9691
CameraManager.init(getApplication());
9792
hasSurface = false;
9893
inactivityTimer = new InactivityTimer(this);
94+
setSupportActionBar(mToolbar);
95+
ActionBar supportActionBar = getSupportActionBar();
96+
if (null != supportActionBar) {
97+
supportActionBar.setHomeButtonEnabled(true);
98+
supportActionBar.setDisplayHomeAsUpEnabled(true);
99+
mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
100+
@Override
101+
public void onClick(View v) {
102+
finish();
103+
}
104+
});
105+
}
99106
}
100107

101108
@Override
@@ -143,10 +150,6 @@ protected void onDestroy() {
143150
* @param result 扫描的结果
144151
*/
145152
public void handleDecode(Result result) {
146-
if (null == result) {
147-
this.restartQRScanner();
148-
return;
149-
}
150153
inactivityTimer.onActivity();
151154
String resultStr = result.getText();
152155
Intent intent = new Intent();
@@ -246,17 +249,4 @@ public void onCompletion(MediaPlayer mediaPlayer) {
246249
}
247250
};
248251

249-
/**
250-
* Called when a view has been clicked.
251-
*
252-
* @param v The view that was clicked.
253-
*/
254-
@Override
255-
public void onClick(View v) {
256-
int id = v.getId();
257-
if (R.id.app_iv_back == id) {
258-
//返回
259-
finish();
260-
}
261-
}
262252
}

qrcodescanner/src/main/java/com/iqos/qrscanner/utils/BitmapUtil.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,10 @@
44
import android.graphics.Bitmap;
55
import android.graphics.BitmapFactory;
66
import android.graphics.Canvas;
7+
import android.graphics.Paint;
78
import android.graphics.PixelFormat;
9+
import android.graphics.PorterDuff;
10+
import android.graphics.PorterDuffColorFilter;
811
import android.graphics.drawable.BitmapDrawable;
912
import android.graphics.drawable.Drawable;
1013
import android.graphics.drawable.NinePatchDrawable;
@@ -52,6 +55,24 @@ public static Bitmap drawable2Bitmap(Drawable drawable) {
5255
}
5356
}
5457

58+
/**
59+
* modify the bitmap's color.
60+
*
61+
* @param inBitmap old bitmap.
62+
* @param tintColor the color what you would like modify.
63+
* @return bitmap after modified the color
64+
*/
65+
public static Bitmap tintBitmap(Bitmap inBitmap, int tintColor) {
66+
if (inBitmap == null) return null;
67+
Bitmap outBitmap = Bitmap.createBitmap(inBitmap.getWidth(), inBitmap.getHeight(), inBitmap.getConfig());
68+
Canvas canvas = new Canvas(outBitmap);
69+
Paint paint = new Paint();
70+
paint.setColorFilter(new PorterDuffColorFilter(tintColor, PorterDuff.Mode.SRC_IN));
71+
canvas.drawBitmap(inBitmap, 0, 0, paint);
72+
return outBitmap;
73+
}
74+
75+
5576
/**
5677
* drawable to bitmap
5778
*

0 commit comments

Comments
 (0)