권한 확인 액티비티 추가
This commit is contained in:
@@ -35,6 +35,18 @@
|
||||
android:theme="@style/Theme.QTagger"
|
||||
android:usesCleartextTraffic="true"
|
||||
tools:targetApi="31">
|
||||
<activity
|
||||
android:name=".Activity.PermissionChecker"
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
|
||||
</activity>
|
||||
|
||||
|
||||
<activity
|
||||
android:name=".Activity.CameraActivity"
|
||||
android:exported="false" />
|
||||
@@ -84,13 +96,10 @@
|
||||
android:exported="false" />
|
||||
<activity
|
||||
android:name=".MainActivity"
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
android:exported="false">
|
||||
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
|
||||
<service android:name=".util.SerialService" />
|
||||
</application>
|
||||
|
||||
|
||||
@@ -39,6 +39,7 @@ import android.view.View;
|
||||
import android.widget.Button;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.ProgressBar;
|
||||
import android.widget.RelativeLayout;
|
||||
import android.widget.Toast;
|
||||
|
||||
@@ -48,6 +49,7 @@ import com.hoho.android.usbserial.driver.UsbSerialDriver;
|
||||
import com.hoho.android.usbserial.driver.UsbSerialPort;
|
||||
import com.hoho.android.usbserial.driver.UsbSerialProber;
|
||||
import com.qtagger.CustomPalette.CameraSurfaceView;
|
||||
import com.qtagger.CustomPalette.RectangleWeightCapture;
|
||||
import com.qtagger.Data.CustomProber;
|
||||
import com.qtagger.Data.TestEnum;
|
||||
import com.qtagger.Database.ImageFile;
|
||||
@@ -94,6 +96,7 @@ public class CameraActivity extends AppCompatActivity {
|
||||
CameraSurfaceView surfaceView;
|
||||
RelativeLayout pictureLayout;
|
||||
LinearLayout saveLayout;
|
||||
ProgressBar progressBar;
|
||||
String dbTestType;
|
||||
DataManager dataManager = DataManager.getInstance();
|
||||
Bitmap resultBitmap,mOrigin;
|
||||
@@ -104,6 +107,7 @@ public class CameraActivity extends AppCompatActivity {
|
||||
private boolean usbChecker = false;
|
||||
private enum Connected { False, Pending, True }
|
||||
private Connected connected = Connected.False;
|
||||
private boolean serviceChecker = false;
|
||||
SerialService service;
|
||||
boolean isService = false;
|
||||
private boolean hexEnabled = true;
|
||||
@@ -233,6 +237,7 @@ public class CameraActivity extends AppCompatActivity {
|
||||
double df = f;
|
||||
df = df / 10;
|
||||
pkgData = String.format("%.5f", df);
|
||||
progressBar.setVisibility(View.INVISIBLE);
|
||||
Log.i("jjhTest!!!!!" , String.format("%.5f", df) + " μSv/hr");
|
||||
}
|
||||
}
|
||||
@@ -353,7 +358,7 @@ public class CameraActivity extends AppCompatActivity {
|
||||
Thread detectThread = new Thread() {
|
||||
public void run() {
|
||||
try {
|
||||
Thread.sleep(1000);
|
||||
//Thread.sleep(1000);
|
||||
if(stopFlag)
|
||||
{
|
||||
stopFlag = false;
|
||||
@@ -464,6 +469,8 @@ public class CameraActivity extends AppCompatActivity {
|
||||
boolean octChecker;
|
||||
TessBaseAPI tessBaseAPI;
|
||||
List<MatOfPoint2f> new_contours;
|
||||
Button button_weightAlter;
|
||||
RectangleWeightCapture box;
|
||||
public Mat dot;
|
||||
public String ocr = "d05";
|
||||
public boolean boxFlag = false;
|
||||
@@ -477,6 +484,14 @@ public class CameraActivity extends AppCompatActivity {
|
||||
dbTestType = intent.getStringExtra("TestType");
|
||||
pkgData = intent.getStringExtra("PkgData");
|
||||
|
||||
tessBaseAPI = new TessBaseAPI();
|
||||
imageView = findViewById(R.id.imageView);
|
||||
surfaceView = findViewById(R.id.surfaceView);
|
||||
pictureLayout = findViewById(R.id.layout_picture);
|
||||
saveLayout = findViewById(R.id.layout_saveChecker);
|
||||
button_weightAlter = findViewById(R.id.button_weightAlter);
|
||||
progressBar = findViewById(R.id.capture_loading);
|
||||
|
||||
if(dbTestType == null)
|
||||
dbTestType ="";
|
||||
if(pkgData == null)
|
||||
@@ -485,33 +500,16 @@ public class CameraActivity extends AppCompatActivity {
|
||||
if(usbChecker)
|
||||
{
|
||||
usbService();
|
||||
progressBar.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
|
||||
|
||||
octChecker = dbTestType.compareTo(TestType.Weight.name()) == 0;
|
||||
tessBaseAPI = new TessBaseAPI();
|
||||
imageView = findViewById(R.id.imageView);
|
||||
surfaceView = findViewById(R.id.surfaceView);
|
||||
pictureLayout = findViewById(R.id.layout_picture);
|
||||
saveLayout = findViewById(R.id.layout_saveChecker);
|
||||
|
||||
if(octChecker) {
|
||||
imageView.setVisibility(View.VISIBLE);
|
||||
surfaceView.setVisibility(View.GONE);
|
||||
AssetManager am = mContext.getAssets();
|
||||
InputStream inOrigin = null;
|
||||
try {
|
||||
inOrigin = am.open("weight06.jpg");
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
BitmapFactory.Options optionsOrigin = new BitmapFactory.Options();
|
||||
|
||||
//origin set
|
||||
mOrigin = BitmapFactory.decodeStream(inOrigin, null, optionsOrigin);
|
||||
imageView.setImageBitmap(mOrigin);
|
||||
button_weightAlter.setVisibility(View.VISIBLE);
|
||||
box = new RectangleWeightCapture(mContext);
|
||||
RelativeLayout relativeLayout = findViewById(R.id.relativelayout_View);
|
||||
relativeLayout.addView(box, new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT));
|
||||
}
|
||||
|
||||
|
||||
@@ -519,6 +517,7 @@ public class CameraActivity extends AppCompatActivity {
|
||||
button.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
progressBar.setVisibility(View.VISIBLE);
|
||||
capture();
|
||||
}
|
||||
});
|
||||
@@ -534,7 +533,7 @@ public class CameraActivity extends AppCompatActivity {
|
||||
@RequiresApi(api = Build.VERSION_CODES.N)
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
saveImage();
|
||||
saveImageFile();
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -549,15 +548,14 @@ public class CameraActivity extends AppCompatActivity {
|
||||
}
|
||||
else
|
||||
{
|
||||
saveImage();
|
||||
saveImageFile();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return super.onKeyUp(keyCode, event);
|
||||
}
|
||||
|
||||
private void saveImage(){
|
||||
private void saveImageFile(){
|
||||
if(resultBitmap != null) {
|
||||
//파일 저장 및 DB입력 및 종료
|
||||
saveBitmap(resultBitmap, filename);
|
||||
@@ -604,6 +602,11 @@ public class CameraActivity extends AppCompatActivity {
|
||||
surfaceView.setVisibility(View.GONE);
|
||||
pictureLayout.setVisibility(View.GONE);
|
||||
saveLayout.setVisibility(View.VISIBLE);
|
||||
button_weightAlter.setVisibility(View.INVISIBLE);
|
||||
if(box != null)
|
||||
{
|
||||
box.setVisibility(View.INVISIBLE);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -611,6 +614,13 @@ public class CameraActivity extends AppCompatActivity {
|
||||
surfaceView.setVisibility(View.VISIBLE);
|
||||
pictureLayout.setVisibility(View.VISIBLE);
|
||||
saveLayout.setVisibility(View.GONE);
|
||||
if(octChecker) {
|
||||
button_weightAlter.setVisibility(View.VISIBLE);
|
||||
}
|
||||
if(box != null)
|
||||
{
|
||||
box.setVisibility(View.VISIBLE);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -618,31 +628,21 @@ public class CameraActivity extends AppCompatActivity {
|
||||
public void capture(){
|
||||
if(dataManager.selPkg != null)
|
||||
pkgNo = dataManager.selPkg.getPKG_NO();
|
||||
|
||||
if(octChecker){
|
||||
|
||||
int width = mOrigin.getWidth();
|
||||
int height = mOrigin.getHeight();
|
||||
Matrix matrix = new Matrix();
|
||||
Bitmap resizedBitmap = Bitmap.createBitmap(mOrigin, 0,0,width,height,matrix,true);
|
||||
resizedBitmap = resizedBitmap.copy(Bitmap.Config.ARGB_8888,true);
|
||||
imageAfter(resizedBitmap);
|
||||
viewToggle();
|
||||
|
||||
if(usbChecker) {//방사능량 읽어오기 위한
|
||||
if(pkgData.isEmpty())
|
||||
{
|
||||
Toast.makeText(mContext, "대기중입니다.", Toast.LENGTH_SHORT).show();
|
||||
return;
|
||||
}
|
||||
else{
|
||||
stopFlag = true;
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
||||
surfaceView.capture(new Camera.PictureCallback() {
|
||||
@RequiresApi(api = Build.VERSION_CODES.N)
|
||||
@Override
|
||||
public void onPictureTaken(byte[] data, Camera camera) {
|
||||
if(usbChecker) {//방사능량 읽어오기 위한
|
||||
if(!pkgData.isEmpty())
|
||||
{
|
||||
stopFlag = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
BitmapFactory.Options options = new BitmapFactory.Options();
|
||||
//options.inSampleSize = 8; // 1/8사이즈로 보여주기
|
||||
@@ -659,7 +659,7 @@ public class CameraActivity extends AppCompatActivity {
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -669,8 +669,6 @@ public class CameraActivity extends AppCompatActivity {
|
||||
time = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss", Locale.getDefault()).format(currentTime);
|
||||
filename = time+ ".jpg";
|
||||
|
||||
Matrix matrix = new Matrix();
|
||||
|
||||
if(octChecker){
|
||||
mOrigin = bitmap;
|
||||
mOrigin = getRecognitionDigit();
|
||||
@@ -698,31 +696,13 @@ public class CameraActivity extends AppCompatActivity {
|
||||
|
||||
String imgTitle = null;
|
||||
if(dbTestType.contains("Surface")) {
|
||||
if(pkgData.isEmpty()) {
|
||||
imgTitle = "표면방사선량 값 : 0.04 μSv/hr";
|
||||
}
|
||||
else
|
||||
{
|
||||
imgTitle = "표면방사선량 값 : " + pkgData + " μSv/hr";
|
||||
}
|
||||
imgTitle = "표면방사선량 값 : " + pkgData + " μSv/hr";
|
||||
}
|
||||
else if(dbTestType.contains("M1")){
|
||||
if(pkgData.isEmpty()) {
|
||||
imgTitle = "1m방사선량 값 : 0.04 μSv/hr";
|
||||
}
|
||||
else{
|
||||
imgTitle = "1m방사선량 값 : "+pkgData+" μSv/hr";
|
||||
}
|
||||
imgTitle = "1m방사선량 값 : "+pkgData+" μSv/hr";
|
||||
}
|
||||
else if(dbTestType.compareTo(TestType.Weight.name()) == 0){
|
||||
if(pkgData.isEmpty())
|
||||
{
|
||||
imgTitle = "무게 : 10.9 kg";
|
||||
}
|
||||
else
|
||||
{
|
||||
imgTitle = "무게 : "+ pkgData+"kg" ;
|
||||
}
|
||||
imgTitle = "무게 : "+ pkgData+"kg" ;
|
||||
|
||||
}
|
||||
else if(dbTestType.compareTo(TestType.Filling.name()) == 0){
|
||||
@@ -752,10 +732,12 @@ public class CameraActivity extends AppCompatActivity {
|
||||
double aspectRatio = (double) original.getHeight() / (double) original.getWidth();
|
||||
int targetHeight = (int) (resizeWidth * aspectRatio);
|
||||
Bitmap result = Bitmap.createScaledBitmap(original, resizeWidth, targetHeight, false);
|
||||
if (result != original) {
|
||||
original.recycle();
|
||||
}
|
||||
return result;
|
||||
Bitmap result2 = Bitmap.createBitmap(result.getWidth(),result.getHeight()+180,result.getConfig());
|
||||
Canvas canvas = new Canvas(result2);
|
||||
canvas.drawBitmap(result,0,180,null);
|
||||
original.recycle();
|
||||
result.recycle();
|
||||
return result2;
|
||||
}
|
||||
|
||||
|
||||
@@ -886,9 +868,8 @@ public class CameraActivity extends AppCompatActivity {
|
||||
tessBaseAPI.setImage(result);
|
||||
Log.i("result text", tessBaseAPI.getUTF8Text());
|
||||
String str = tessBaseAPI.getUTF8Text();
|
||||
//tessBaseAPI.beginDocument();
|
||||
|
||||
str.replace(" ", "");
|
||||
str = str.replace(" ", "");
|
||||
char[] ch = str.toCharArray();
|
||||
|
||||
if(ch.length > 0)
|
||||
@@ -932,6 +913,14 @@ public class CameraActivity extends AppCompatActivity {
|
||||
}
|
||||
}
|
||||
|
||||
if(!str.isEmpty())
|
||||
{
|
||||
str = str.replace(".","");
|
||||
StringBuffer sb = new StringBuffer(str);
|
||||
sb.insert(str.length()-1,".");
|
||||
str = sb.toString();
|
||||
}
|
||||
|
||||
pkgData = str;
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,80 @@
|
||||
package com.qtagger.Activity;
|
||||
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.core.app.ActivityCompat;
|
||||
import androidx.core.content.ContextCompat;
|
||||
|
||||
import android.Manifest;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
|
||||
import com.qtagger.MainActivity;
|
||||
import com.qtagger.R;
|
||||
import com.qtagger.test;
|
||||
import com.qtagger.util.CommonHelper;
|
||||
|
||||
public class PermissionChecker extends AppCompatActivity {
|
||||
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_permission_checker);
|
||||
int writePermissionCheck = ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE);
|
||||
int permissionCheck = ContextCompat.checkSelfPermission(this,Manifest.permission.CAMERA);
|
||||
|
||||
if(writePermissionCheck == PackageManager.PERMISSION_GRANTED && permissionCheck == PackageManager.PERMISSION_GRANTED)
|
||||
{
|
||||
startActivity(new Intent(getApplicationContext(), MainActivity.class));
|
||||
finish();
|
||||
}
|
||||
|
||||
|
||||
|
||||
findViewById(R.id.button_permissionCheck).setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
CommonHelper.CheckCameraPermission(PermissionChecker.this);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRequestPermissionsResult(int requestCode,
|
||||
String permissions[], int[] grantResults) {
|
||||
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
|
||||
|
||||
boolean grantDebuedChecker = false;
|
||||
|
||||
for (int grant : grantResults)
|
||||
{
|
||||
if(grant == PackageManager.PERMISSION_DENIED)
|
||||
{
|
||||
grantDebuedChecker = true;
|
||||
}
|
||||
}
|
||||
if(grantDebuedChecker)
|
||||
{
|
||||
android.app.AlertDialog.Builder builder = new android.app.AlertDialog.Builder(this);
|
||||
|
||||
builder.setTitle("서비스 이용 알림").setMessage("필수 권한을 허용해야\n서비스 정상 이용이 가능합니다.\n권한 요청시 반드시 허용해주세요.");
|
||||
builder.setPositiveButton("확인", new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
}
|
||||
});
|
||||
android.app.AlertDialog alertDialog = builder.create();
|
||||
alertDialog.show();
|
||||
}
|
||||
else//권한 전체 부여 성공
|
||||
{
|
||||
startActivity(new Intent(getApplicationContext(), MainActivity.class));
|
||||
finish();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -94,8 +94,8 @@ public class RfidFragment extends Fragment {
|
||||
button_RfidReader = view.findViewById(R.id.button_RfidReader);
|
||||
try {
|
||||
//ATRfidManager.wakeUp();
|
||||
//rfidReader.Reset();
|
||||
rfidReader.setOperationTime(0);
|
||||
ApplicationClass.rfidSetOperationTime();
|
||||
//rfidReader.setOperationTime(0);
|
||||
int power = rfidReader.getPower();
|
||||
|
||||
if(power == -1){
|
||||
@@ -221,6 +221,7 @@ public class RfidFragment extends Fragment {
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
super.onDestroy();
|
||||
/*
|
||||
if(rfidReader.getState() == ConnectionState.Connected)
|
||||
{
|
||||
rfidReader.disconnect();
|
||||
@@ -228,7 +229,8 @@ public class RfidFragment extends Fragment {
|
||||
if(rfidReader.getAction() != ActionState.Stop)
|
||||
{
|
||||
rfidReader.stop();
|
||||
}
|
||||
rfidReader.removeEventListener();
|
||||
}*/
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -2,11 +2,13 @@ package com.qtagger.Activity;
|
||||
|
||||
import android.Manifest;
|
||||
import android.app.Activity;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.widget.Toast;
|
||||
|
||||
import androidx.activity.result.ActivityResult;
|
||||
import androidx.activity.result.ActivityResultCallback;
|
||||
@@ -56,8 +58,7 @@ public class TestSelectActivity extends AppCompatActivity {
|
||||
dataManager.testEnum = TestEnum.발생지특성규명;
|
||||
//데이터 세팅
|
||||
dataManager.pkgList = dataManager.dbHelper.getAllORIGIN_CHRCT();
|
||||
Intent intent = new Intent(getApplicationContext(), SearchActivity.class);
|
||||
startActivity(intent);
|
||||
StartSearchActivity();
|
||||
}
|
||||
});
|
||||
|
||||
@@ -66,9 +67,7 @@ public class TestSelectActivity extends AppCompatActivity {
|
||||
public void onClick(View v) {
|
||||
dataManager.testEnum = TestEnum.예비검사;
|
||||
dataManager.pkgList = dataManager.dbHelper.getAllPREPAR_TEST();
|
||||
Intent intent = new Intent(getApplicationContext(), SearchActivity.class);
|
||||
startActivity(intent);
|
||||
//CommonHelper.CallCamera( thisActivity,activityResultPicture);
|
||||
StartSearchActivity();
|
||||
}
|
||||
});
|
||||
|
||||
@@ -79,8 +78,7 @@ public class TestSelectActivity extends AppCompatActivity {
|
||||
public void onClick(View v) {
|
||||
dataManager.testEnum = TestEnum.인수검사;
|
||||
dataManager.pkgList = dataManager.dbHelper.getAllACCEPT_TEST();
|
||||
Intent intent = new Intent(getApplicationContext(), SearchActivity.class);
|
||||
startActivity(intent);
|
||||
StartSearchActivity();
|
||||
}
|
||||
});
|
||||
|
||||
@@ -89,8 +87,7 @@ public class TestSelectActivity extends AppCompatActivity {
|
||||
public void onClick(View v) {
|
||||
dataManager.testEnum = TestEnum.처분검사;
|
||||
dataManager.pkgList = dataManager.dbHelper.getAllDISPOSAL_TEST();
|
||||
Intent intent = new Intent(getApplicationContext(), SearchActivity.class);
|
||||
startActivity(intent);
|
||||
StartSearchActivity();
|
||||
}
|
||||
});
|
||||
|
||||
@@ -103,4 +100,34 @@ public class TestSelectActivity extends AppCompatActivity {
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
//권한 점검 및 실행
|
||||
private void StartSearchActivity(){
|
||||
|
||||
//연결 안됨
|
||||
if(CommonHelper.ft232rChecker(this) == null){
|
||||
android.app.AlertDialog.Builder builder = new android.app.AlertDialog.Builder(this);
|
||||
|
||||
builder.setTitle("미연결 알림").setMessage("USB 연결을 진행해야\n서비스 정상 이용이 가능합니다.");
|
||||
builder.setPositiveButton("확인", new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
}
|
||||
});
|
||||
android.app.AlertDialog alertDialog = builder.create();
|
||||
alertDialog.show();
|
||||
}
|
||||
else if(CommonHelper.CheckUsbPermission(this))
|
||||
{
|
||||
Toast.makeText(this, "권한이 없습니다.", Toast.LENGTH_SHORT).show();
|
||||
CommonHelper.usbDevicePermission(this);
|
||||
}
|
||||
else
|
||||
{
|
||||
Intent intent = new Intent(getApplicationContext(), SearchActivity.class);
|
||||
startActivity(intent);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,74 @@
|
||||
package com.qtagger.CustomPalette;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.Paint;
|
||||
import android.graphics.Path;
|
||||
import android.graphics.Point;
|
||||
import android.view.View;
|
||||
|
||||
public class RectangleWeightCapture extends View {
|
||||
|
||||
private Paint paint = new Paint();
|
||||
private Context mContext;
|
||||
private static Canvas mCanvas;
|
||||
|
||||
public RectangleWeightCapture(Context context) {
|
||||
super(context);
|
||||
mContext = context;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDraw(Canvas canvas) { // Override the onDraw() Method
|
||||
super.onDraw(canvas);
|
||||
this.mCanvas = canvas;
|
||||
|
||||
doRect(canvas);
|
||||
}
|
||||
|
||||
public void doRect(Canvas canvas)
|
||||
{
|
||||
paint.setStyle(Paint.Style.STROKE);
|
||||
paint.setColor(Color.RED);
|
||||
paint.setStrokeWidth(3);
|
||||
|
||||
//center
|
||||
int x0 = (int) (canvas.getWidth() / 2);
|
||||
int y0 = (int) (canvas.getHeight() / 1.8);
|
||||
int dx = (int) (canvas.getWidth() / 2.8);
|
||||
int dy = (int) (canvas.getHeight() / 5.3);
|
||||
//draw guide box
|
||||
canvas.drawRect(x0 - dx, y0 - dy, x0 + dx, y0 + dy, paint);
|
||||
|
||||
}
|
||||
|
||||
public static Canvas getCanvas(){
|
||||
return mCanvas;
|
||||
}
|
||||
|
||||
public void doPolygon(Canvas canvas)
|
||||
{
|
||||
paint.setStyle(Paint.Style.STROKE);
|
||||
paint.setColor(Color.RED);
|
||||
paint.setStrokeWidth(3);
|
||||
|
||||
//센터값
|
||||
Point center = new Point(canvas.getWidth() / 2, (canvas.getHeight() / 2)-200);
|
||||
|
||||
//가운데 두개가 위 포인트, 좌우끝이 아래포인트
|
||||
int x[] = new int []{0, center.x - 370, center.x + 370, canvas.getWidth()}; // 좌측하단x, 좌측상단x, 우측상단x, 우측하단x
|
||||
int y[] = new int[]{canvas.getHeight()-600, center.y+170, center.y+170, canvas.getHeight()-600}; // 좌측하단y, 좌측상단y, 우측상단y, 우측하단y
|
||||
|
||||
Path wallpath = new Path();
|
||||
wallpath.reset(); // only needed when reusing this path for a new build
|
||||
wallpath.moveTo(x[0], y[0]); // used for first point
|
||||
wallpath.lineTo(x[1], y[1]);
|
||||
wallpath.lineTo(x[2], y[2]);
|
||||
wallpath.lineTo(x[3], y[3]);
|
||||
wallpath.lineTo(x[0], y[0]); // there is a setLastPoint action but i found it not to work as expected
|
||||
|
||||
canvas.drawPath(wallpath, paint);
|
||||
|
||||
}
|
||||
}
|
||||
@@ -2,6 +2,7 @@ package com.qtagger;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.database.sqlite.SQLiteDatabase;
|
||||
import android.database.sqlite.SQLiteOpenHelper;
|
||||
import android.net.ConnectivityManager;
|
||||
@@ -54,13 +55,10 @@ public class MainActivity extends AppCompatActivity {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_main);
|
||||
mSpinner = findViewById(R.id.spinner_account);
|
||||
CommonHelper.CheckCameraPermission(this);
|
||||
CommonHelper.CheckUsbDevice(this);
|
||||
CommonHelper.usbDevicePermission(this);
|
||||
CommonHelper.FolderClear();
|
||||
dataManager.dbHelper = new DBHelper(getApplicationContext());
|
||||
|
||||
//dataManager.barcodeScanner = ATScanManager.getInstance();
|
||||
|
||||
//테스트용도 나중에 삭제
|
||||
findViewById(R.id.imageView).setOnClickListener(v -> {
|
||||
Intent intent = new Intent(getApplicationContext(), test.class);
|
||||
@@ -153,4 +151,5 @@ public class MainActivity extends AppCompatActivity {
|
||||
super.onDestroy();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -11,10 +11,12 @@ import com.wsmr.lib.dev.ATRfidManager;
|
||||
import com.wsmr.lib.dev.ATRfidReader;
|
||||
import com.wsmr.lib.dev.ATScanManager;
|
||||
import com.wsmr.lib.dev.ATScanner;
|
||||
import com.wsmr.lib.dev.rfid.exception.ATRfidReaderException;
|
||||
|
||||
public class ApplicationClass extends Application implements Application.ActivityLifecycleCallbacks {
|
||||
|
||||
private static boolean isBackground;
|
||||
private static boolean firstRfidSettingChecker;
|
||||
private static ATRfidReader atRfidReader;
|
||||
private static ATScanner bacodeScanner;
|
||||
|
||||
@@ -23,6 +25,7 @@ public class ApplicationClass extends Application implements Application.Activit
|
||||
public void onCreate() {
|
||||
super.onCreate();
|
||||
isBackground = true;
|
||||
firstRfidSettingChecker = true;
|
||||
atRfidReader = ATRfidManager.getInstance();
|
||||
bacodeScanner = ATScanManager.getInstance();
|
||||
registerActivityLifecycleCallbacks(this);
|
||||
@@ -36,6 +39,18 @@ public class ApplicationClass extends Application implements Application.Activit
|
||||
return bacodeScanner;
|
||||
}
|
||||
|
||||
public static void rfidSetOperationTime(){
|
||||
if(firstRfidSettingChecker)
|
||||
{
|
||||
try {
|
||||
atRfidReader.setOperationTime(0);
|
||||
firstRfidSettingChecker = false;
|
||||
} catch (ATRfidReaderException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 앱이 background일 때 감지
|
||||
@Override
|
||||
public void onTrimMemory(int level) {
|
||||
|
||||
@@ -2,7 +2,6 @@ package com.qtagger.util;
|
||||
|
||||
import static android.app.Activity.RESULT_OK;
|
||||
|
||||
import static com.qtagger.util.DataManager.CAMERA_PERMISSIONS_REQUEST_CODE;
|
||||
import static com.qtagger.util.DataManager.cameraIntent;
|
||||
|
||||
import android.Manifest;
|
||||
@@ -44,6 +43,8 @@ public class CommonHelper {
|
||||
public static String DBName = "QTagger.db";
|
||||
public static String QTagger_Usb_Product_name = "FT232R USB UART";
|
||||
public static int QTagger_Usb_baudRate = 9600;
|
||||
public static final int CAMERA_PERMISSIONS_REQUEST_CODE = 100;
|
||||
public static final int WRITE_EXTERNAL_STORAGE = 101;
|
||||
// 년 기준
|
||||
private final static double stdrYear = 365.2422;
|
||||
// 시간 기준
|
||||
@@ -62,31 +63,18 @@ public class CommonHelper {
|
||||
public static boolean CheckCameraPermission(Activity activity_this)
|
||||
{
|
||||
int writePermissionCheck = ContextCompat.checkSelfPermission(activity_this,Manifest.permission.WRITE_EXTERNAL_STORAGE);
|
||||
if(writePermissionCheck == PackageManager.PERMISSION_DENIED)
|
||||
{
|
||||
if (ActivityCompat.shouldShowRequestPermissionRationale(activity_this,Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
|
||||
//권한 설명 필요
|
||||
ActivityCompat.requestPermissions(activity_this,new String[] {Manifest.permission.WRITE_EXTERNAL_STORAGE}, CAMERA_PERMISSIONS_REQUEST_CODE);
|
||||
} else {
|
||||
ActivityCompat.requestPermissions(activity_this,new String[] {Manifest.permission.WRITE_EXTERNAL_STORAGE}, CAMERA_PERMISSIONS_REQUEST_CODE);
|
||||
}
|
||||
}
|
||||
|
||||
int permissionCheck = ContextCompat.checkSelfPermission(activity_this,Manifest.permission.CAMERA);
|
||||
if (permissionCheck == PackageManager.PERMISSION_DENIED) {
|
||||
if (ActivityCompat.shouldShowRequestPermissionRationale(activity_this,Manifest.permission.CAMERA)) {
|
||||
//권한 설명 필요
|
||||
ActivityCompat.requestPermissions(activity_this,new String[] {Manifest.permission.CAMERA}, CAMERA_PERMISSIONS_REQUEST_CODE);
|
||||
} else {
|
||||
ActivityCompat.requestPermissions(activity_this,new String[] {Manifest.permission.CAMERA}, CAMERA_PERMISSIONS_REQUEST_CODE);
|
||||
}
|
||||
|
||||
if(writePermissionCheck == PackageManager.PERMISSION_DENIED || permissionCheck == PackageManager.PERMISSION_DENIED)
|
||||
{
|
||||
ActivityCompat.shouldShowRequestPermissionRationale(activity_this,Manifest.permission.WRITE_EXTERNAL_STORAGE);
|
||||
ActivityCompat.requestPermissions(activity_this,new String[] {Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.CAMERA}, WRITE_EXTERNAL_STORAGE);
|
||||
}
|
||||
|
||||
|
||||
return permissionCheck==PackageManager.PERMISSION_GRANTED?true:false;
|
||||
return permissionCheck==PackageManager.PERMISSION_GRANTED && writePermissionCheck == PackageManager.PERMISSION_GRANTED;
|
||||
}
|
||||
|
||||
public static void CheckUsbDevice(Context context){
|
||||
public static void usbDevicePermission(Context context){
|
||||
UsbManager usbManager = (UsbManager) context.getSystemService(Context.USB_SERVICE);
|
||||
UsbSerialProber usbDefaultProber = UsbSerialProber.getDefaultProber();
|
||||
for(UsbDevice v : usbManager.getDeviceList().values()) {
|
||||
@@ -102,6 +90,47 @@ public class CommonHelper {
|
||||
}
|
||||
}
|
||||
|
||||
public static UsbDevice ft232rChecker(Context context){
|
||||
UsbManager usbManager = (UsbManager) context.getSystemService(Context.USB_SERVICE);
|
||||
UsbDevice usbDevice =null;
|
||||
for(UsbDevice v : usbManager.getDeviceList().values()) {
|
||||
if(v.getProductName().equals("FT232R USB UART"))
|
||||
{
|
||||
usbDevice = v;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return usbDevice;
|
||||
}
|
||||
|
||||
public static boolean CheckUsbPermission(Context context){
|
||||
boolean ft232rPermission = false;
|
||||
|
||||
UsbManager usbManager = (UsbManager) context.getSystemService(Context.USB_SERVICE);
|
||||
UsbSerialProber usbDefaultProber = UsbSerialProber.getDefaultProber();
|
||||
UsbDevice usbDevice =null;
|
||||
for(UsbDevice v : usbManager.getDeviceList().values()) {
|
||||
if(v.getProductName().equals("FT232R USB UART"))
|
||||
{
|
||||
usbDevice = v;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(usbDevice == null)
|
||||
{
|
||||
ft232rPermission = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
UsbSerialDriver sDriver = usbDefaultProber.probeDevice(usbDevice);
|
||||
ft232rPermission = usbManager.hasPermission(sDriver.getDevice());
|
||||
}
|
||||
|
||||
return ft232rPermission;
|
||||
}
|
||||
|
||||
|
||||
public static void CallCamera(Activity activity, ActivityResultLauncher<Intent> activityResultPicture){
|
||||
boolean permission = CheckCameraPermission(activity);
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@ public class DataManager {
|
||||
|
||||
public static TestEnum testEnum = TestEnum.선택안함;
|
||||
public static Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
|
||||
public static final int CAMERA_PERMISSIONS_REQUEST_CODE = 100;
|
||||
|
||||
public List<PKG> pkgList;
|
||||
public PKG selPkg;
|
||||
//public Map<String,NuclideData> nuclideDataMap;
|
||||
|
||||
27
app/src/main/res/drawable/btn_bg_ex.xml
Normal file
27
app/src/main/res/drawable/btn_bg_ex.xml
Normal file
@@ -0,0 +1,27 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle">
|
||||
|
||||
<!-- 테두리 내부 색상 설정 -->
|
||||
<solid android:color="#7D6200EE" />
|
||||
|
||||
<!-- 테두리 내부 여백 설정 -->
|
||||
<padding
|
||||
android:bottom="8dp"
|
||||
android:left="8dp"
|
||||
android:right="8dp"
|
||||
android:top="8dp" />
|
||||
<!-- 코너 -->
|
||||
<corners
|
||||
android:bottomLeftRadius="12dp"
|
||||
android:bottomRightRadius="12dp"
|
||||
android:topLeftRadius="12dp"
|
||||
android:topRightRadius="12dp" />
|
||||
|
||||
<!-- 테두리 설정: 두께, 색상 -->
|
||||
<stroke
|
||||
android:width="1dp"
|
||||
android:color="@color/purple_700" />
|
||||
|
||||
</shape>
|
||||
@@ -7,19 +7,52 @@
|
||||
android:orientation="vertical"
|
||||
tools:context=".Activity.CameraActivity">
|
||||
|
||||
<com.qtagger.CustomPalette.CameraSurfaceView
|
||||
android:id="@+id/surfaceView"
|
||||
<RelativeLayout
|
||||
android:id="@+id/relativelayout_View"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"/>
|
||||
<ImageView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"
|
||||
android:id="@+id/imageView"
|
||||
android:background="@color/black"
|
||||
android:visibility="gone"
|
||||
android:layout_gravity="center"/>
|
||||
android:layout_weight="1">
|
||||
<ImageView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"
|
||||
android:id="@+id/imageView"
|
||||
android:background="@color/black"
|
||||
android:layout_gravity="center"/>
|
||||
<com.qtagger.CustomPalette.CameraSurfaceView
|
||||
android:id="@+id/surfaceView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"/>
|
||||
|
||||
<android.widget.Button
|
||||
android:id="@+id/button_weightAlter"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="top|center"
|
||||
android:layout_marginLeft="60dp"
|
||||
android:layout_marginTop="15dp"
|
||||
android:layout_marginRight="60dp"
|
||||
android:background="@drawable/btn_bg_ex"
|
||||
android:text="영역에 맞게 인디케이터를 배치시켜서\n촬영해주세요."
|
||||
android:textAlignment="center"
|
||||
android:textAllCaps="false"
|
||||
android:textColor="@android:color/white"
|
||||
android:textSize="14sp"
|
||||
android:textStyle="bold"
|
||||
android:visibility="invisible"
|
||||
tools:ignore="RtlCompat" />
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/capture_loading"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="280dp"
|
||||
android:visibility="invisible"
|
||||
android:gravity="center_horizontal|center_vertical" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/layout_picture"
|
||||
android:layout_width="match_parent"
|
||||
|
||||
92
app/src/main/res/layout/activity_permission_checker.xml
Normal file
92
app/src/main/res/layout/activity_permission_checker.xml
Normal file
@@ -0,0 +1,92 @@
|
||||
<?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"
|
||||
android:orientation="vertical"
|
||||
tools:context=".Activity.PermissionChecker">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical"
|
||||
android:layout_weight="1"
|
||||
android:layout_marginStart="20dp"
|
||||
android:layout_marginTop="50dp">
|
||||
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="QTagger 권한 안내"
|
||||
android:textStyle="bold"
|
||||
android:textSize="24sp"
|
||||
android:textColor="@color/black"
|
||||
android:fontFamily="@font/font"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="QTagger는 아래의 권한들을 필요로합니다\n서비스 사용 중 앱에서 요청 시 허용해주세요." />
|
||||
|
||||
<TextView
|
||||
android:layout_marginTop="30dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="@color/colorSendText"
|
||||
android:textStyle="bold"
|
||||
android:text="필수 접근 권한"/>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="20dp"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:orientation="horizontal">
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="3"
|
||||
android:text="⦁ 카메라"/>
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:text="방폐물 사진을 촬영하여 등록해야합니다"/>
|
||||
|
||||
</LinearLayout>
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:orientation="horizontal">
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="3"
|
||||
android:text="⦁ 쓰기 권한"/>
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:text="사진 및 데이터를 저장 관리합니다."/>
|
||||
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
||||
<android.widget.Button
|
||||
android:id="@+id/button_permissionCheck"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="50dp"
|
||||
android:background="@color/black"
|
||||
android:text="확인"
|
||||
android:textColor="@color/white"
|
||||
/>
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
Reference in New Issue
Block a user