diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml
deleted file mode 100644
index 48f16ac..0000000
--- a/.idea/deploymentTargetDropDown.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 9186709..05a5b6c 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -16,17 +16,24 @@
+
+
+
+
+
+
+
diff --git a/app/build.gradle b/app/build.gradle
index a341950..ee7f1ba 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -33,7 +33,7 @@ android {
}
dependencies {
-
+ implementation 'com.github.mik3y:usb-serial-for-android:3.3.0'
implementation 'androidx.appcompat:appcompat:1.5.0'
implementation 'com.google.android.material:material:1.6.1'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
@@ -43,4 +43,5 @@ dependencies {
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
annotationProcessor 'androidx.room:room-compiler:2.4.3'
+ implementation fileTree(dir: 'C:\\lib\\libs-wsmr', include: ['*.aar', '*.jar'], exclude: [])
}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 52613c7..063292c 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -7,6 +7,7 @@
+
@@ -32,11 +33,19 @@
android:theme="@style/Theme.QTagger"
tools:targetApi="31">
+ android:exported="false">
+
+
+
+
+
+
diff --git a/app/src/main/java/com/qtagger/Activity/NaviFragment/ShotFragment.java b/app/src/main/java/com/qtagger/Activity/NaviFragment/ShotFragment.java
new file mode 100644
index 0000000..4bc7c52
--- /dev/null
+++ b/app/src/main/java/com/qtagger/Activity/NaviFragment/ShotFragment.java
@@ -0,0 +1,120 @@
+package com.qtagger.Activity.NaviFragment;
+
+import android.os.Bundle;
+
+import androidx.fragment.app.Fragment;
+
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.Spinner;
+
+import com.qtagger.Activity.NavigationActivity;
+import com.qtagger.R;
+
+/**
+ * A simple {@link Fragment} subclass.
+ * Use the {@link ShotFragment#newInstance} factory method to
+ * create an instance of this fragment.
+ */
+public class ShotFragment extends Fragment {
+
+ // TODO: Rename parameter arguments, choose names that match
+ // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
+ private static final String ARG_PARAM1 = "param1";
+ private static final String ARG_PARAM2 = "param2";
+
+ // TODO: Rename and change types of parameters
+ private String mParam1;
+ private String mParam2;
+ private Spinner spinner;
+
+ public ShotFragment() {
+ // Required empty public constructor
+ }
+
+ /**
+ * Use this factory method to create a new instance of
+ * this fragment using the provided parameters.
+ *
+ * @param param1 Parameter 1.
+ * @param param2 Parameter 2.
+ * @return A new instance of fragment ShotFragment.
+ */
+ // TODO: Rename and change types and number of parameters
+ public static ShotFragment newInstance(String param1, String param2) {
+ ShotFragment fragment = new ShotFragment();
+ Bundle args = new Bundle();
+ args.putString(ARG_PARAM1, param1);
+ args.putString(ARG_PARAM2, param2);
+ fragment.setArguments(args);
+ return fragment;
+ }
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ if (getArguments() != null) {
+ mParam1 = getArguments().getString(ARG_PARAM1);
+ mParam2 = getArguments().getString(ARG_PARAM2);
+ }
+ }
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ View mainView = inflater.inflate(R.layout.fragment_shot, container, false);
+ spinner = (Spinner)mainView.findViewById(R.id.spinner_shotType);
+
+ mainView.findViewById(R.id.button_start).setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+
+ }
+ });
+
+ mainView.findViewById(R.id.button_reader).setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ if(spinner.getSelectedItemId() == 0)
+ {
+
+ }
+ else
+ {
+
+ }
+
+ }
+ });
+
+ spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
+ @Override
+ public void onItemSelected(AdapterView> parent, View view, int position, long id) {
+ //RFID
+ if (position == 0) {
+ mainView.findViewById(R.id.imageView2).setVisibility(View.VISIBLE);
+ mainView.findViewById(R.id.seekbar_reader_type).setVisibility(View.VISIBLE);
+
+ }
+ //Barcode
+ else
+ {
+ mainView.findViewById(R.id.imageView2).setVisibility(View.INVISIBLE);
+ mainView.findViewById(R.id.seekbar_reader_type).setVisibility(View.INVISIBLE);
+ }
+
+ }
+
+ @Override
+ public void onNothingSelected(AdapterView> parent) {
+
+ }
+ });
+
+ // Inflate the layout for this fragment
+ return mainView;
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/qtagger/Activity/NaviFragment/TestFragment.java b/app/src/main/java/com/qtagger/Activity/NaviFragment/TestFragment.java
index a2c17a5..30331c3 100644
--- a/app/src/main/java/com/qtagger/Activity/NaviFragment/TestFragment.java
+++ b/app/src/main/java/com/qtagger/Activity/NaviFragment/TestFragment.java
@@ -79,7 +79,8 @@ public class TestFragment extends Fragment {
view.findViewById(R.id.button_표면).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
-
+//changeFragmentShot
+ ((NavigationActivity) getActivity()).changeFragmentShot();
}
});
view.findViewById(R.id.button_1m).setOnClickListener(new View.OnClickListener() {
diff --git a/app/src/main/java/com/qtagger/Activity/NavigationActivity.java b/app/src/main/java/com/qtagger/Activity/NavigationActivity.java
index 314d4e7..bf0a447 100644
--- a/app/src/main/java/com/qtagger/Activity/NavigationActivity.java
+++ b/app/src/main/java/com/qtagger/Activity/NavigationActivity.java
@@ -5,6 +5,10 @@ import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
+import android.content.Context;
+import android.content.Intent;
+import android.hardware.usb.UsbDevice;
+import android.hardware.usb.UsbManager;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.MenuItem;
@@ -12,11 +16,17 @@ import android.widget.Toast;
import com.google.android.material.bottomnavigation.BottomNavigationView;
import com.google.android.material.internal.NavigationMenu;
+import com.hoho.android.usbserial.driver.UsbSerialDriver;
+import com.hoho.android.usbserial.driver.UsbSerialProber;
+import com.qtagger.Activity.NaviFragment.FillingPerFragment;
import com.qtagger.Activity.NaviFragment.SearchFragment;
import com.qtagger.Activity.NaviFragment.SelectFragment;
import com.qtagger.Activity.NaviFragment.SettingFragment;
+import com.qtagger.Activity.NaviFragment.ShotFragment;
import com.qtagger.Activity.NaviFragment.TestFragment;
+import com.qtagger.Data.CustomProber;
import com.qtagger.Data.TestEnum;
+import com.qtagger.Data.UsbItem;
import com.qtagger.R;
import com.qtagger.databinding.ActivityMainBinding;
import com.qtagger.util.DataManager;
@@ -28,9 +38,17 @@ public class NavigationActivity extends AppCompatActivity {
private SearchFragment searchFragment = new SearchFragment();
private SettingFragment settingFragment = new SettingFragment();
private SelectFragment selectFragment = new SelectFragment();
+ private FillingPerFragment fillingPerFragment = new FillingPerFragment();
+ private ShotFragment shotFragment = new ShotFragment();
private DataManager dataManager = DataManager.getInstance();
public BottomNavigationView bottomNavigationView;
+ //방사선량 장비 제품
+ //private static String M_PRODUCT_NAME = "TTL232R";
+ private static String M_PRODUCT_NAME = "FT232R USB UART";
+ private int baudRate = 9600;
+ private UsbItem item;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -52,8 +70,6 @@ public class NavigationActivity extends AppCompatActivity {
class ItemSelectedListener implements BottomNavigationView.OnNavigationItemSelectedListener {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
- FragmentTransaction transaction = dataManager.fragmentManager.beginTransaction();
-
changeFragment(menuItem.getItemId());
return true;
}
@@ -123,7 +139,51 @@ public class NavigationActivity extends AppCompatActivity {
FragmentTransaction transaction = dataManager.fragmentManager.beginTransaction();
transaction.replace(R.id.frame, searchFragment).commitAllowingStateLoss();
}
+ public void changeFragmentShot()
+ {
+ FragmentTransaction transaction = dataManager.fragmentManager.beginTransaction();
+ transaction.replace(R.id.frame, shotFragment).commitAllowingStateLoss();
+ }
+ @Override
+ public void onResume() {
+ super.onResume();
+
+ refresh();
+ }
+
+ void refresh() {
+ UsbManager usbManager = (UsbManager) getSystemService(Context.USB_SERVICE);
+ UsbSerialProber usbDefaultProber = UsbSerialProber.getDefaultProber();
+ UsbSerialProber usbCustomProber = CustomProber.getCustomProber();
+
+ item = null;
+ for(UsbDevice device : usbManager.getDeviceList().values()) {
+ UsbSerialDriver driver = usbDefaultProber.probeDevice(device);
+ if(driver == null) {
+ driver = usbCustomProber.probeDevice(device);
+ }
+ if(driver != null) {
+ for(int port = 0; port < driver.getPorts().size(); port++)
+ {
+ //Toast.makeText(getActivity(), device+":" + port + ":"+driver, Toast.LENGTH_SHORT).show();
+ if(device.getProductName().equals(M_PRODUCT_NAME))
+ {
+ item = new UsbItem(device, port, driver);
+ Toast.makeText(this, "connecting success!", Toast.LENGTH_SHORT).show();
+ }
+ else
+ {
+ Toast.makeText(this, "Not find " + M_PRODUCT_NAME, Toast.LENGTH_SHORT).show();
+
+ }
+ }
+ } else {
+// item = new UsbItem(device, 0, driver);
+ Toast.makeText(this, "driver null", Toast.LENGTH_SHORT).show();
+ }
+ }
+ }
diff --git a/app/src/main/java/com/qtagger/Data/CustomProber.java b/app/src/main/java/com/qtagger/Data/CustomProber.java
new file mode 100644
index 0000000..36375d9
--- /dev/null
+++ b/app/src/main/java/com/qtagger/Data/CustomProber.java
@@ -0,0 +1,15 @@
+package com.qtagger.Data;
+
+import com.hoho.android.usbserial.driver.CdcAcmSerialDriver;
+import com.hoho.android.usbserial.driver.ProbeTable;
+import com.hoho.android.usbserial.driver.UsbSerialProber;
+
+public class CustomProber {
+
+ public static UsbSerialProber getCustomProber() {
+ ProbeTable customTable = new ProbeTable();
+ customTable.addProduct(0x16d0, 0x087e, CdcAcmSerialDriver.class); // e.g. Digispark CDC
+ return new UsbSerialProber(customTable);
+ }
+
+}
diff --git a/app/src/main/java/com/qtagger/Data/FragmentEnum.java b/app/src/main/java/com/qtagger/Data/FragmentEnum.java
new file mode 100644
index 0000000..e71c758
--- /dev/null
+++ b/app/src/main/java/com/qtagger/Data/FragmentEnum.java
@@ -0,0 +1,5 @@
+package com.qtagger.Data;
+
+public enum FragmentEnum {
+
+}
diff --git a/app/src/main/java/com/qtagger/Data/UsbItem.java b/app/src/main/java/com/qtagger/Data/UsbItem.java
new file mode 100644
index 0000000..4457a0c
--- /dev/null
+++ b/app/src/main/java/com/qtagger/Data/UsbItem.java
@@ -0,0 +1,23 @@
+package com.qtagger.Data;
+
+
+import android.hardware.usb.UsbDevice;
+
+import com.hoho.android.usbserial.driver.CdcAcmSerialDriver;
+import com.hoho.android.usbserial.driver.ProbeTable;
+import com.hoho.android.usbserial.driver.UsbSerialDriver;
+import com.hoho.android.usbserial.driver.UsbSerialProber;
+
+
+public class UsbItem {
+ UsbDevice device;
+ int port;
+ UsbSerialDriver driver;
+
+ public UsbItem(UsbDevice device, int port, UsbSerialDriver driver) {
+ this.device = device;
+ this.port = port;
+ this.driver = driver;
+ }
+}
+
diff --git a/app/src/main/res/drawable/rfid_icon_32.png b/app/src/main/res/drawable/rfid_icon_32.png
new file mode 100644
index 0000000..fb8ab1c
Binary files /dev/null and b/app/src/main/res/drawable/rfid_icon_32.png differ
diff --git a/app/src/main/res/drawable/spinner_background.xml b/app/src/main/res/drawable/spinner_background.xml
index 43e5be6..1bf5933 100644
--- a/app/src/main/res/drawable/spinner_background.xml
+++ b/app/src/main/res/drawable/spinner_background.xml
@@ -10,6 +10,9 @@
android:bottomRightRadius="6dp"
android:topLeftRadius="6dp"
android:topRightRadius="6dp" />
+
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_shot.xml b/app/src/main/res/layout/fragment_shot.xml
new file mode 100644
index 0000000..64a1a02
--- /dev/null
+++ b/app/src/main/res/layout/fragment_shot.xml
@@ -0,0 +1,124 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_surface_radiation.xml b/app/src/main/res/layout/fragment_surface_radiation.xml
index b24ad9a..1492750 100644
--- a/app/src/main/res/layout/fragment_surface_radiation.xml
+++ b/app/src/main/res/layout/fragment_surface_radiation.xml
@@ -3,12 +3,62 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context=".Activity.NaviFragment.SurfaceRadiationFragment">
-
+ android:layout_height="match_parent">
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml
new file mode 100644
index 0000000..cf13a1a
--- /dev/null
+++ b/app/src/main/res/values/arrays.xml
@@ -0,0 +1,8 @@
+
+
+
+ - RFID
+ - Barcode
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/xml/usb_device_filter.xml b/app/src/main/res/xml/usb_device_filter.xml
new file mode 100644
index 0000000..0c6c23d
--- /dev/null
+++ b/app/src/main/res/xml/usb_device_filter.xml
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/settings.gradle b/settings.gradle
index 87300fa..5f03fc9 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -10,6 +10,7 @@ dependencyResolutionManagement {
repositories {
google()
mavenCentral()
+ maven { url 'https://jitpack.io' }
}
}
rootProject.name = "QTagger"