From 7e57e252f3697e733e6b74caa67dee15e58e6dcb Mon Sep 17 00:00:00 2001 From: "DESKTOP-1A3P75F\\lee" Date: Fri, 19 Aug 2022 08:11:59 +0900 Subject: [PATCH] =?UTF-8?q?USB=20=EC=97=B0=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/deploymentTargetDropDown.xml | 17 --- .idea/misc.xml | 7 + app/build.gradle | 3 +- app/src/main/AndroidManifest.xml | 13 +- .../Activity/NaviFragment/ShotFragment.java | 120 +++++++++++++++++ .../Activity/NaviFragment/TestFragment.java | 3 +- .../qtagger/Activity/NavigationActivity.java | 64 ++++++++- .../java/com/qtagger/Data/CustomProber.java | 15 +++ .../java/com/qtagger/Data/FragmentEnum.java | 5 + .../main/java/com/qtagger/Data/UsbItem.java | 23 ++++ app/src/main/res/drawable/rfid_icon_32.png | Bin 0 -> 2230 bytes .../main/res/drawable/spinner_background.xml | 3 + .../main/res/layout/activity_photography.xml | 9 -- app/src/main/res/layout/fragment_shot.xml | 124 ++++++++++++++++++ .../res/layout/fragment_surface_radiation.xml | 56 +++++++- app/src/main/res/values/arrays.xml | 8 ++ app/src/main/res/xml/usb_device_filter.xml | 35 +++++ settings.gradle | 1 + 18 files changed, 471 insertions(+), 35 deletions(-) delete mode 100644 .idea/deploymentTargetDropDown.xml create mode 100644 app/src/main/java/com/qtagger/Activity/NaviFragment/ShotFragment.java create mode 100644 app/src/main/java/com/qtagger/Data/CustomProber.java create mode 100644 app/src/main/java/com/qtagger/Data/FragmentEnum.java create mode 100644 app/src/main/java/com/qtagger/Data/UsbItem.java create mode 100644 app/src/main/res/drawable/rfid_icon_32.png delete mode 100644 app/src/main/res/layout/activity_photography.xml create mode 100644 app/src/main/res/layout/fragment_shot.xml create mode 100644 app/src/main/res/values/arrays.xml create mode 100644 app/src/main/res/xml/usb_device_filter.xml 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 0000000000000000000000000000000000000000..fb8ab1c509992537f17bafbfada7c5a532c4dbd2 GIT binary patch literal 2230 zcmbVN3sBQ`91cEtjDb%S6=KkB!rG*PLK~=9+Cp)ZRRm$joQ5IW{LcK{s$yHc@l~CY<=#JVo(=8_FhAmh$LryFG5^F3CU1_y2ys@Apc9 zHZjiI)87*S0PlFUGKs%~&eMGue{Equd5gc@r4$Nn9E01yINW5yK~#tWz=Y!BbJ4Sh z$|ryI;J&gkQLy~s>$7SOw=zHFt18?@s_^11Epo-hQvA`)vg2>ZbxJOSjg100ePNoz zGoD-Jsh{$~JuK?iSOD-E<2>Df&08k`z_5E%avGPWNx%r&B*b-e z1}U_fEIb+jqN1%9oX8?MFoQHuW*Kz9>T?LBbTTMatU)vu1(`{ya~X1OZelW#n?*=< zQ1nbN%8Ky>CX&NJtI23)F{=#ffglJN zAr*?l!^sRn{4$6lC<-HD7?BE)2n9Hhb?0_-;Nd{$doCSm7oSYnC zPNs}{8#KtEBw2!?EF49fK_?@gL1%L^hK+gkd5nhM*w`e?|JC8d^u` zZT|ojhy4l4*NhJ5@c#ts2ux2iCY%>cnQ#LMTg(OsbcGR9&_vyh^67$FWN#Sy4pkP(JN2qZ)pzmiBKf{0KY*AqC3goj5A?pM-8wllMX z`*r_w|Emnew-#=EW*%q5IZFalQ!Jk>+dxOmB^M8@j1<^c1sF~^t6K&U&a{#`Xy7&V z%n|6P&B-Kr(tk;JKa8dITn^5VaswZ&|12k%cOG{3VZRReuM+#d{h?ouTaQu#D{V1YQRnZuz zGG!M-G4d}Rg$q;XAN|hJo98ujwIeNaI#ly*tRN|K&&Em!+U>7Z7LEUS+?-aes5y3Z zy*f&WUM{(y+pBBpb}aGP+HJR;`|PGH!ef2P$COP0UHC*_F<_HM`Fd8CRrtxGPrz{2$Z>sWw#?1oV6niJ8`( zwkv9HHs#%ovFBnkeM8k>72uWUu7|Fx<^{@3eA9rJyx*no-N z*GInGu)k#`;uF@n_rRsp-003N-HXSq*}kDR{{6!*WNcwie7|Oaqx#p{dyMzfNuBnk zGwhB-F+CkaTUVsF`yNbrR1=Tagv_w|g{-J(SIzR;Tpv8e*ttT?ZoBo3%D#O1h@GRSPTSV-_`{gewd$rb zUl)CJb%$SU&Vi-YsNwlLvFp1=QyUHIN?)0+=>Aw9xo`Ni-rll~&@oA1eQbE}4d)Lw MUX`dk7_)Hs?|BDKT>t<8 literal 0 HcmV?d00001 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"