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"