diff --git a/app/build.gradle b/app/build.gradle index 07f7326..7c85870 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -114,13 +114,13 @@ dependencies { annotationProcessor 'com.github.bumptech.glide:compiler:4.13.2' // Navigation Component - implementation "androidx.navigation:navigation-fragment-ktx:2.7.3" - implementation "androidx.navigation:navigation-ui-ktx:2.7.3" + implementation "androidx.navigation:navigation-fragment-ktx:2.7.5" + implementation "androidx.navigation:navigation-ui-ktx:2.7.5" //Dagger - Hilt implementation "com.google.dagger:hilt-android:2.46" kapt "com.google.dagger:hilt-android-compiler:2.46" - kapt "androidx.hilt:hilt-compiler:1.0.0" + kapt "androidx.hilt:hilt-compiler:1.1.0" // Retrofit + GSON implementation "com.squareup.retrofit2:retrofit:2.9.0" diff --git a/app/src/main/java/com/example/hpostesting/presentation/KitScanActivity.kt b/app/src/main/java/com/example/hpostesting/presentation/KitScanActivity.kt index 6aa46be..e0c5c98 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/KitScanActivity.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/KitScanActivity.kt @@ -32,7 +32,7 @@ class KitScanActivity : AppCompatActivity() { ScanContract() ) { result: ScanIntentResult -> if (result.contents.isNullOrEmpty()) { - Toast.makeText(this, "Cancelled: Unable to scan, Try Again!!", Toast.LENGTH_LONG).show() + Toast.makeText(this, R.string.cancelled_unable_scan, Toast.LENGTH_LONG).show() } else { Log.d(TAG, result.contents) processScannedData(result.contents) @@ -119,7 +119,7 @@ class KitScanActivity : AppCompatActivity() { } Toast.makeText( applicationContext, - "Kit number is updated, Please Select user before starting test", + R.string.kit_updated, Toast.LENGTH_SHORT ).show() @@ -128,7 +128,7 @@ class KitScanActivity : AppCompatActivity() { finish() } } else { - Toast.makeText(this, "Invalid KIT Number", Toast.LENGTH_LONG).show() + Toast.makeText(this, R.string.invalid_kit_number, Toast.LENGTH_LONG).show() return@setOnClickListener } if (serialNumber.isNotEmpty() && checkDataNotNull() && isSerialValid( @@ -144,7 +144,7 @@ class KitScanActivity : AppCompatActivity() { } moveToNext() } else { - Toast.makeText(this, "Invalid KIT Number", Toast.LENGTH_LONG).show() + Toast.makeText(this, R.string.invalid_kit_number, Toast.LENGTH_LONG).show() } } } @@ -200,7 +200,7 @@ class KitScanActivity : AppCompatActivity() { private fun checkDataNotNull(): Boolean { return if (DataHolder.selectedTest?._id == null) { Toast.makeText( - applicationContext, "Please Select patient before starting test", Toast.LENGTH_SHORT + applicationContext, R.string.select_patient, Toast.LENGTH_SHORT ).show() val i = Intent(applicationContext, DashboardActivity::class.java) diff --git a/app/src/main/java/com/example/hpostesting/presentation/MainActivity.kt b/app/src/main/java/com/example/hpostesting/presentation/MainActivity.kt index dd5d0f6..098dbe1 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/MainActivity.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/MainActivity.kt @@ -138,7 +138,7 @@ class MainActivity : AppCompatActivity() { else -> { Log.d(TAG, "Device NOT Connected") - Toast.makeText(this, "Device Not Connected", Toast.LENGTH_SHORT).show() + Toast.makeText(this, R.string.device_not, Toast.LENGTH_SHORT).show() DataHolder.usbConnected.value = false null } @@ -226,7 +226,7 @@ class MainActivity : AppCompatActivity() { ) != PackageManager.PERMISSION_GRANTED ) { // Handle location permission request if needed - Toast.makeText(this, "Please enable location services", Toast.LENGTH_SHORT).show() + Toast.makeText(this, R.string.enable_location, Toast.LENGTH_SHORT).show() requestCoarseLocationPermission() requestFineLocationPermission() return @@ -313,7 +313,7 @@ class MainActivity : AppCompatActivity() { requestFineLocationPermission() } else { // Coarse location permission denied - Toast.makeText(this, "Coarse location permission denied", Toast.LENGTH_SHORT) + Toast.makeText(this, R.string.coarse_location_denied, Toast.LENGTH_SHORT) .show() } } @@ -324,7 +324,7 @@ class MainActivity : AppCompatActivity() { getLocation() } else { // Fine location permission denied - Toast.makeText(this, "Fine location permission denied", Toast.LENGTH_SHORT) + Toast.makeText(this, R.string.location_denied, Toast.LENGTH_SHORT) .show() } } diff --git a/app/src/main/java/com/example/hpostesting/presentation/SplashActivity.kt b/app/src/main/java/com/example/hpostesting/presentation/SplashActivity.kt index 3623888..84ca024 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/SplashActivity.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/SplashActivity.kt @@ -18,6 +18,7 @@ import com.example.hpostesting.util.MyUtils import com.google.firebase.firestore.FirebaseFirestoreSettings import com.google.firebase.firestore.ktx.firestore import com.google.firebase.ktx.Firebase +import `in`.sminnovations.hpostesting.R import `in`.sminnovations.hpostesting.databinding.ActivitySplashBinding class SplashActivity : AppCompatActivity() { @@ -77,7 +78,7 @@ class SplashActivity : AppCompatActivity() { } else { Toast.makeText( this, - "You must grant permission to access all files to use the app", + R.string.permission_grant, Toast.LENGTH_SHORT ).show() finish() @@ -139,7 +140,7 @@ class SplashActivity : AppCompatActivity() { if (allGranted) { moveToLandingPage() } else { - Toast.makeText(this, "All permissions are required to use the app.", Toast.LENGTH_SHORT).show() + Toast.makeText(this, R.string.permission_required, Toast.LENGTH_SHORT).show() finish() } } diff --git a/app/src/main/java/com/example/hpostesting/presentation/adapter/OfflineUserListAdapter.kt b/app/src/main/java/com/example/hpostesting/presentation/adapter/OfflineUserListAdapter.kt index 6acd933..2a77c87 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/adapter/OfflineUserListAdapter.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/adapter/OfflineUserListAdapter.kt @@ -1,5 +1,6 @@ package com.example.hpostesting.presentation.adapter +import android.content.Context import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -14,11 +15,13 @@ import com.example.hpostesting.data.model.patient.HemoCubeTestData import com.example.hpostesting.data.model.patient.UserData import `in`.sminnovations.hpostesting.R import `in`.sminnovations.hpostesting.databinding.OfflineUserListViewBinding +import org.apache.commons.collections4.MapUtils.getString import java.text.SimpleDateFormat import java.util.Calendar import java.util.Date import java.util.Locale + class OfflineUserListAdapter(private val view: View, private val batLevel: Int) : RecyclerView.Adapter() { @@ -40,7 +43,7 @@ class OfflineUserListAdapter(private val view: View, private val batLevel: Int) } val differ = AsyncListDiffer(this, differCallback) - + private val context: Context? = null override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): OfflineUserListViewHolder { return OfflineUserListViewHolder( OfflineUserListViewBinding.inflate(LayoutInflater.from(parent.context), parent, false) @@ -61,7 +64,7 @@ class OfflineUserListAdapter(private val view: View, private val batLevel: Int) if (batLevel < 40) { Toast.makeText( view.context, - "Battery level is low than 40%, please charge the device to continue testing", + context?.getString(R.string.low_battery_warning), Toast.LENGTH_SHORT ).show() return@setOnClickListener @@ -70,7 +73,7 @@ class OfflineUserListAdapter(private val view: View, private val batLevel: Int) if (userList.testStatus!!) { Toast.makeText( view.context, - "Test has been already conducted for this user", + context?.getString(R.string.test_already_conducted), Toast.LENGTH_SHORT ).show() } else { @@ -78,13 +81,13 @@ class OfflineUserListAdapter(private val view: View, private val batLevel: Int) if (isBetween15And30Minutes(userList.incubationTime) < Constants.INCUBATION_TIME_MIN) { Toast.makeText( view.context, - "Incubation has not completed 15 minutes", + context?.getString(R.string.incubation_not_completed), Toast.LENGTH_SHORT ).show() } else if (isBetween15And30Minutes(userList.incubationTime) > Constants.INCUBATION_TIME_MAX) { Toast.makeText( view.context, - "Incubation crossed 30 minutes, need to repeat the incubation", + context?.getString(R.string.incubation_crossed_30_minutes), Toast.LENGTH_SHORT ).show() } else { @@ -99,7 +102,7 @@ class OfflineUserListAdapter(private val view: View, private val batLevel: Int) } else { Toast.makeText( view.context, - "Incubation not started for this user", + context?.getString(R.string.incubation_not_started), Toast.LENGTH_SHORT ).show() } diff --git a/app/src/main/java/com/example/hpostesting/presentation/adapter/UserListAdapter.kt b/app/src/main/java/com/example/hpostesting/presentation/adapter/UserListAdapter.kt index cd52b4d..af1dc97 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/adapter/UserListAdapter.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/adapter/UserListAdapter.kt @@ -70,10 +70,10 @@ class UserListAdapter( Glide.with(view).load(model.userImageURL).into(userImage) if (model.testStatus!!) { - teststatus.text = "Test concluded" + teststatus.text = view.context.getString(R.string.test_concluded) } else { - teststatus.text = "Test is Pending" + teststatus.text = view.context.getString(R.string.test_pending) } holder.binding.btnBlood.setOnClickListener { @@ -101,12 +101,12 @@ class UserListAdapter( builder.setPositiveButton("OK") { dialog, which -> val bloodGroup = etBloodGroup.text.toString() if (bloodGroup.equals("Select Blood Group") || bloodGroup.isNullOrBlank()) { - etBloodGroup.error = "Please enter your blood group" - Toast.makeText( - context, - "Please enter your blood group", - Toast.LENGTH_SHORT - ).show() + if (view != null) { + etBloodGroup.error =view.context.getString(R.string.blood_group_error) + } + if (view != null) { + Toast.makeText(context, view.context.getString(R.string.blood_group_toast), Toast.LENGTH_SHORT).show() + } } else { // Check if hemoCubeViewModel and testDetails are not null val db: FirebaseFirestore = FirebaseFirestore.getInstance() @@ -125,27 +125,33 @@ class UserListAdapter( ).format(Calendar.getInstance().time).toString() ) .addOnSuccessListener { - Toast.makeText( - context, - "Blood group updated successfully", - Toast.LENGTH_SHORT - ).show() + if (view != null) { + Toast.makeText( + view.context, + context?.getString(R.string.blood_group_updated_successfully), + Toast.LENGTH_SHORT + ).show() + } btnBlood.visibility = View.GONE } .addOnFailureListener { e -> - Toast.makeText( - context, - "Failed to update blood group: ${e.message}", - Toast.LENGTH_SHORT - ).show() + if (view != null) { + Toast.makeText( + view.context, + context?.getString(R.string.failed_to_update_blood_group), + Toast.LENGTH_SHORT + ).show() + } } } catch (e: IndexOutOfBoundsException) { // Handle the case where no documents are found for the specified ID - Toast.makeText( - context, - "No user data found for the specified ID", - Toast.LENGTH_SHORT - ).show() + if (view != null) { + Toast.makeText( + view.context, + context?.getString(R.string.no_user_data_found), + Toast.LENGTH_SHORT + ).show() + } } } @@ -193,7 +199,7 @@ class UserListAdapter( if (batLevel < 40) { Toast.makeText( view.context, - "Battery level is low than 40%, please charge the device to continue testing", + context?.getString(R.string.low_battery_warning), Toast.LENGTH_SHORT ).show() return@setOnClickListener @@ -202,7 +208,7 @@ class UserListAdapter( if (model.testStatus!!) { Toast.makeText( view.context, - "Test has been already conducted for this user", + context?.getString(R.string.test_already_conducted), Toast.LENGTH_SHORT ).show() } else { @@ -210,13 +216,13 @@ class UserListAdapter( if (isBetween15And30Minutes(model.incubationTime) < 15) { Toast.makeText( view.context, - "Incubation has not completed 15 minutes", + context?.getString(R.string.incubation_not_completed), Toast.LENGTH_SHORT ).show() } else if (isBetween15And30Minutes(model.incubationTime) > 30) { Toast.makeText( view.context, - "Incubation crossed 30 minutes, need to repeat the incubation", + context?.getString(R.string.incubation_crossed_30_minutes), Toast.LENGTH_SHORT ).show() } else { @@ -227,7 +233,7 @@ class UserListAdapter( } else { Toast.makeText( view.context, - "Incubation not started for this user", + context?.getString(R.string.incubation_not_started), Toast.LENGTH_SHORT ).show() } diff --git a/app/src/main/java/com/example/hpostesting/presentation/buffercheck/HemoCubeBufferCheckFragment.kt b/app/src/main/java/com/example/hpostesting/presentation/buffercheck/HemoCubeBufferCheckFragment.kt index deb77e1..dceb25c 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/buffercheck/HemoCubeBufferCheckFragment.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/buffercheck/HemoCubeBufferCheckFragment.kt @@ -73,7 +73,7 @@ class HemoCubeBufferCheckFragment : Fragment() { listenToHemoCube() startBufferProcess() } else { - Toast.makeText(context, "Invalid KIT Number", Toast.LENGTH_LONG).show() + Toast.makeText(context, R.string.invalid_kit_number, Toast.LENGTH_LONG).show() return@setOnClickListener } activity?.runOnUiThread { @@ -108,17 +108,17 @@ class HemoCubeBufferCheckFragment : Fragment() { hemoCubeViewModel.getDeviceData(sharedPreferences.getString(Constants.USER_ID, "")) } else { Toast.makeText( - requireContext(), "No internet connection avaiable", Toast.LENGTH_SHORT + requireContext(), R.string.internt_not, Toast.LENGTH_SHORT ).show() } isOnline = isNetworkAvailable } hemoCubeViewModel.fireBaseUpload.observe(viewLifecycleOwner) { result -> if (result == "Success") { - showToast("Kit result uploaded successfully") + showToast(R.string.kit_uploaded) } if (result == "Local") { - showToast("Kit result uploading failed, note it down manually") + showToast(R.string.kit_upload_failed) } binding.progressBar.visibility = View.GONE @@ -152,7 +152,7 @@ class HemoCubeBufferCheckFragment : Fragment() { } }) } catch (e: Exception) { - showToast("test is going on") + showToast(R.string.test_ongoing) Firebase.crashlytics.recordException(e) } } @@ -270,17 +270,18 @@ class HemoCubeBufferCheckFragment : Fragment() { return "NULL" } } catch (e: Exception) { - showToast("error while performing classification") + showToast(R.string.error_classification) Firebase.crashlytics.recordException(e) return "ERROR" } return "NULL" } - private fun showToast(message: String) { - Toast.makeText(requireContext(), message, Toast.LENGTH_SHORT).show() + private fun showToast(messageResId: Int) { + Toast.makeText(requireContext(), getString(messageResId), Toast.LENGTH_SHORT).show() } + private fun startBufferProcess() { (activity as HemocubeBufferCheckActivity).mService.sendAndListenToHemoCube(HemoCubeCommands.startBuffer, diff --git a/app/src/main/java/com/example/hpostesting/presentation/buffercheck/HemocubeBufferCheckActivity.kt b/app/src/main/java/com/example/hpostesting/presentation/buffercheck/HemocubeBufferCheckActivity.kt index 6375d39..4f1a692 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/buffercheck/HemocubeBufferCheckActivity.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/buffercheck/HemocubeBufferCheckActivity.kt @@ -92,7 +92,7 @@ open class HemocubeBufferCheckActivity : AppCompatActivity() { } else { myMenu?.get(0)?.icon = ContextCompat.getDrawable(this, R.drawable.ic_baseline_usb_off_24) - Toast.makeText(this, "Device is Disconnected", Toast.LENGTH_SHORT).show() + Toast.makeText(this, R.string.device_disconnected, Toast.LENGTH_SHORT).show() } } } @@ -103,7 +103,7 @@ open class HemocubeBufferCheckActivity : AppCompatActivity() { val availableDrivers = UsbSerialProber.getDefaultProber().findAllDrivers(manager) if (availableDrivers.isEmpty()) { - Toast.makeText(this, "No device found", Toast.LENGTH_SHORT).show() + Toast.makeText(this, R.string.no_device_found, Toast.LENGTH_SHORT).show() } else { mDriver = availableDrivers[0] mConnection = manager.openDevice(mDriver.device) diff --git a/app/src/main/java/com/example/hpostesting/presentation/dashboard/HomeFragment.kt b/app/src/main/java/com/example/hpostesting/presentation/dashboard/HomeFragment.kt index 93f7414..f714436 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/dashboard/HomeFragment.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/dashboard/HomeFragment.kt @@ -108,12 +108,12 @@ class HomeFragment : Fragment() { if (result == "Success") { Toast.makeText( requireContext(), - "Test Results Uploaded Successfully", + R.string.test_upload, Toast.LENGTH_SHORT ).show() } if (result == "Error") { - Toast.makeText(requireContext(), "Test Results Upload Failed", Toast.LENGTH_SHORT) + Toast.makeText(requireContext(), R.string.test_upload_failed, Toast.LENGTH_SHORT) .show() } } @@ -203,14 +203,14 @@ class HomeFragment : Fragment() { private fun logoutUser(context: Context) { val builder = AlertDialog.Builder(context) - builder.setTitle("Log Out") - builder.setMessage("Do you want to LogOut the Application?") - builder.setPositiveButton("Yes") { dialog, _ -> + builder.setTitle(R.string.log_out) + builder.setMessage(R.string.do_log_out) + builder.setPositiveButton(R.string.yes) { dialog, _ -> saveUserId("") findNavController().navigate(R.id.action_nav_home_to_loginFragment) dialog.dismiss() } - builder.setNegativeButton("No") { dialog, _ -> + builder.setNegativeButton(R.string.no) { dialog, _ -> dialog.dismiss() } diff --git a/app/src/main/java/com/example/hpostesting/presentation/dashboard/ui/LoginFragment.kt b/app/src/main/java/com/example/hpostesting/presentation/dashboard/ui/LoginFragment.kt index 39fecbe..cb74fd0 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/dashboard/ui/LoginFragment.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/dashboard/ui/LoginFragment.kt @@ -47,10 +47,10 @@ class LoginFragment : Fragment() { performLogin(loginId, password) } else { if (loginId.isBlank()) { - binding.loginId.error = "Please enter a proper Login ID" + binding.loginId.error = R.string.enter_proper_login_id.toString() } if (password.isBlank()) { - binding.password.error = "Please enter a proper password" + binding.password.error = R.string.enter_proper_password.toString() } } } @@ -72,10 +72,10 @@ class LoginFragment : Fragment() { navigateToHomeFragment() return } else { - Toast.makeText(requireContext(), "Wrong Password", Toast.LENGTH_SHORT).show() + Toast.makeText(requireContext(), R.string.wrong_password, Toast.LENGTH_SHORT).show() } } - Toast.makeText(requireContext(), "Wrong UserID", Toast.LENGTH_SHORT).show() + Toast.makeText(requireContext(), R.string.wrong_user_id, Toast.LENGTH_SHORT).show() } private fun saveUserId(userId: String) { diff --git a/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeFragment.kt b/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeFragment.kt index 04f1e8b..8827fd1 100644 --- a/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeFragment.kt +++ b/app/src/main/java/com/example/hpostesting/presentation/hemocube/HemoCubeFragment.kt @@ -127,7 +127,7 @@ class HemoCubeFragment : Fragment() { private fun observeViewModel() { hemoCubeViewModel.fireBaseUpload.observe(viewLifecycleOwner) { result -> if (result == "Success") { - showToast("Test Results Uploaded Successfully") + showToast(R.string.test_upload) activity?.runOnUiThread { binding.btnSubmit.visibility = View.GONE @@ -141,11 +141,11 @@ class HemoCubeFragment : Fragment() { } } if (result == "Local") { - showToast("Internet not available, test details stored locally") + showToast(R.string.internt_not_local) startActivity(Intent(requireActivity(), DashboardActivity::class.java)) } if (result == "Error") { - showToast("Error uploading data, test details stored locally") + showToast(R.string.error_local) startActivity(Intent(requireActivity(), DashboardActivity::class.java)) } @@ -206,16 +206,16 @@ class HemoCubeFragment : Fragment() { false } } catch (e: Exception) { - showToast("error while getting existing buffer") + showToast(R.string.error_exist) false } } private fun showBufferAlertDialog() { val title = "WARNING" - val message = "Do you want to continue with existing buffer?" + val message = getString(R.string.do_exist) val negativeText = getString(R.string.no) - val positiveText = "Yes" + val positiveText = getString(R.string.yes) UIUtils.createAlertDialog(requireContext(), title, @@ -263,7 +263,7 @@ class HemoCubeFragment : Fragment() { } }) } catch (e: Exception) { - showToast("test is going on") + showToast(R.string.test_ongoing) Firebase.crashlytics.recordException(e) } } @@ -402,7 +402,7 @@ class HemoCubeFragment : Fragment() { // If the test is ongoing, don't allow the back button action // You can optionally show a message to the user indicating why the back button is disabled // For example, show a Toast or Snackbar. - showToast("Test is ongoing. Cannot go back.") + showToast(R.string.test_go_noback) } else { // If the test is not ongoing, you can trigger the back action of the hosting activity activity?.onBackPressed() @@ -571,7 +571,7 @@ class HemoCubeFragment : Fragment() { return "INVALID" } } catch (e: Exception) { - showToast("error while performing classification") + showToast(R.string.error_classification) Firebase.crashlytics.recordException(e) return "ERROR" } @@ -596,15 +596,15 @@ class HemoCubeFragment : Fragment() { return "INVALID" } } catch (e: Exception) { - showToast("error while performing classification") + showToast(R.string.error_classification) Firebase.crashlytics.recordException(e) return "ERROR" } return "INVALID" } - private fun showToast(message: String) { - Toast.makeText(requireContext(), message, Toast.LENGTH_SHORT).show() + private fun showToast(messageResId: Int) { + Toast.makeText(requireContext(), getString(messageResId), Toast.LENGTH_SHORT).show() } private fun startBufferProcess() { diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml new file mode 100644 index 0000000..d3ea82c --- /dev/null +++ b/app/src/main/res/values-hi/strings.xml @@ -0,0 +1,238 @@ + + HPOS Testing + + + TestRight + Denovix + + + + Male + Female + Other + + + + Yes + No + + + + GEN + OBC + SC + ST + + + + O+ve + O-ve + A+ve + A-ve + B+ve + B-ve + AB+ve + AB-ve + + + नमस्ते खाली फ्रेगमेंट + टेस्ट का चयन करें + संदर्भ सेट करें + + + क्या आपने संदर्भ नमूने की कुवेट रख दी है? + कृपया चलने से पहले संदर्भ के रूप में नमूने की कुवेट रखें + हाँ + नहीं + + + कनेक्ट + कनेक्ट किया गया + पढ़ें + संदर्भ अपडेट करें + + क्या आपने नमूने के साथ कुवेट रख दी है? + कृपया चलने से पहले नमूने की कुवेट रखें + हाँ, चलाएं + + + + परीक्षण निर्देश + कदम 1 : संदर्भ/बेसलाइन सैम्पल को संदर्भ के लिए रखें, जिसमें कुवेट है। + कदम 2 : डिवाइस को मूल्य पढ़ने के लिए नीचे बटन दबाएं। + + कदम 1 : शुरू करने के लिए सैम्पल विवरण दर्ज करें। + कदम 1 : एक्सपेरिमेंट के लिए सैम्पल भरी ब्लड सैम्पल को संदर्भ के लिए कुवेट में रखें। + कदम 2 : डिवाइस को मूल्य पढ़ने के लिए नीचे बटन दबाएं। + + लॉगिन आईडी + पासवर्ड + लॉगिन + प्राप्त करें + रोगी विवरण दर्ज करें + रोगी का नाम + आयु (वर्षों में) + लिंग + नाम खाली नहीं हो सकता + आयु खाली नहीं हो सकती + लिंग खाली नहीं हो सकती + आयु वैध होनी चाहिए + + + जन्म की वर्ष साल नहीं हो सकता + अमान्य जन्म की वर्ष + मोबाइल नंबर खाली नहीं हो सकता + मोबाइल नंबर अमान्य है (10 अंक दर्ज करें) + यह खाली नहीं हो सकता + + परीक्षण परिणाम + नाम : %1$s + लिंग : %1$s + आयु : %1$s वर्ष + परिणाम : + नेगेटिव + रिपोर्ट डाउनलोड करें + होम + नया परीक्षण + अब शुरू करें + हेमो क्यूब + एचबी + सामान्य + सिक्ल सेल रोग + सिक्ल सेल ट्रेट + अनिर्धारित + सिक्लसेल\nनिश्चित + सिक्लसेल स्क्रीनिंग + थैलसेमिया + यूएसबी कनेक्शन + उच्च प्रदर्शन ऑप्टिकल स्पेक्ट्रोस्कोपी + सिक्ल प्रमाणपत्र + सिक्ल फाइंड + सबमिट करें + डिवाइस नुस्खा + स्थान + सैम्पल शुरू करें + नया किट + नया बफर + अमान्य वर्ण, अनुमत अक्षर हैं अक्षर, संख्या और ( ) _ - , . केवल + \*परिणाम को प्रमाणित करने के लिए प्रयोगशाला परीक्षण के साथ + \*परिणाम को प्रमाणित करने के लिए प्रयोगशाला परीक्षण के साथ, चिकित्सक की आयु 5 वर्षों से कम है + सकारात्मक सीमारेखा + नकारात्मक सीमारेखा + क्या रोगी को कोई दवा या उपचार हो रहा है? + क्या रोगी को कोई रक्त प्रसूति हो रही है? + स्कैन आधार कार्ड + रोगी विवरण + या + स्कैन अभा कार्ड + रोगियों की सूची + परीक्षण के लिए कोई रोगी रिकॉर्ड नहीं मिला। कृपया नीचे से एक जोड़ें। + जोड़ें + परीक्षण + बकाया + रोगी अभा आईडी कार्ड स्कैन करें + अब स्कैन करें + अभा नंबर हैंडपंजी से दर्ज करें + अभा आईडी + उपयोगकर्ता आईडी : %1$s + जाएं + यहां क्लिक करें + डैशबोर्ड गतिविधि + नेविगेशन ड्रॉयर खोलें + नेविगेशन ड्रॉयर बंद करें + एचपीओएस + sminnovations.in + नेविगेशन हैडर + सेटिंग्स + + होम + परिणाम दिखाएं + गैलरी + सेटिंग्स + प्रोफ़ाइल + जन्म की वर्ष + पिता का नाम / पति का नाम + क्या रोगी विवाहित है? (हां/नहीं) + श्रेणी + रक्त समूह + डिजिटल सलाहकार कार्ड + रोगी चिकित्सा रिकॉर्ड + रोगी का पता + जिला + शहर / गाँव + राज्य + पिनकोड + ... + अभा आईडी कार्ड बनाएं + आधिकारिक अभा एप्लिकेशन + रोगी का आधार कार्ड स्कैन करें + आधार नंबर हैंडपंजी से दर्ज करें + आधार नंबर + आधार नंबर + कृपया "आधिकारिक अभा एप्लिकेशन" का उपयोग करें अभा आईडी बनाने के लिए, और वापस आएं। + कृपया जारी रखने के लिए आधार नंबर दर्ज करें + किट का क्यूआर कोड स्कैन करें + किट सीरियल नंबर हैंडपंजी से दर्ज करें + सीरियल नंबर + क्या फिर से आधार लाइन सेट करना है? + आधार निर्देश + अगले संस्करण में लॉन्च किया जाएगा + अमान्य किट सीरियल नंबर, सही उदाहरण, SMI/SC/019/01/001 + उपयोगकर्ता सूची + उपयोगकर्ता आईडी + आधार आईडी + इंटरनेट उपलब्ध नहीं है, कृपया उपयोगकर्ता आईडी और रक्त समूह मैन्युअली प्रविष्ट करें + उपयोगकर्ता आईडी 18 अंकों की होनी चाहिए और कृपया रक्त समूह का चयन करें + डीबी टेस्ट अपलोड करें + क्या आप स्थानीय डीबी टेस्ट को क्लाउड पर अपलोड करना चाहते हैं? + अपलोड + रद्द करें + अपलोड सफलता पूर्वक हुआ + टेस्ट पूरा हुआ + रक्त समूह चयन करें + सभी पंजीकृत उपयोगकर्ता सफलता पूर्वक टेस्ट हो चुके हैं + अंडान + बफर जाँचें + बैटरी स्तर 40% से कम है, कृपया उपकरण को चार्ज करें जारी रखने के लिए + इस उपयोगकर्ता के लिए पहले ही टेस्ट हो चुका है + अंडान 15 मिनट पूर्ण नहीं हुआ है + अंडान 30 मिनटों को पार कर गया है, अंडान फिर से करना होगा + इस उपयोगकर्ता के लिए अंडान शुरू नहीं हुआ है + टेस्ट समाप्त हुआ + टेस्ट लंबित है + कृपया अपना रक्त समूह दर्ज करें + कृपया अपना रक्त समूह दर्ज करें + रक्त समूह सफलता पूर्वक अपडेट किया गया है + रक्त समूह अपडेट करने में विफल: %1$s + निर्दिष्ट आईडी के लिए कोई उपयोगकर्ता डेटा नहीं मिला + उपकरण डिस्कनेक्ट किया गया है + कोई डिवाइस नहीं मिली + अमान्य किट नंबर + इंटरनेट उपलब्ध नहीं है + इंटरनेट उपलब्ध नहीं है, टेस्ट विवरण स्थानीय रूप से सहेजे गए हैं + डेटा अपलोड करने में त्रुटि, टेस्ट विवरण स्थानीय रूप से सहेजे गए हैं + मौजूदा बफर प्राप्त करते समय त्रुटि + क्या आप मौजूदा बफर के साथ जारी रखना चाहते हैं? + किट परिणाम सफलता पूर्वक अपलोड हुआ + किट परिणाम अपलोड करने में विफल, इसे मैन्युअली नोट करें + टेस्ट जारी है + टेस्ट जारी है, पीछे नहीं जा सकते + वर्गीकरण करते समय त्रुटि + टेस्ट परिणाम सफलता पूर्वक अपलोड हुआ + टेस्ट परिणाम अपलोड करने में विफल + लॉग आउट + क्या आप ऐप्लिकेशन से लॉगआउट करना चाहते हैं? + रद्द किया गया: स्कैन करने में असमर्थ, पुनः प्रयास करें!! + किट नंबर अपडेट किया गया है, कृपया टेस्ट शुरू करने से पहले उपयोगकर्ता का चयन करें + कृपया टेस्ट शुरू करने से पहले रोगी का चयन करें + कृपया स्थान सेवाएं सक्षम करें + फाइन स्थान अनुमति निरस्त + कोर्स स्थान अनुमति निरस्त + आपको एप्लिकेशन का उपयोग करने के लिए सभी फ़ाइलों तक पहुँच की अनुमति देनी होगी + एप्लिकेशन का उपयोग करने के लिए सभी अनुमतियाँ आवश्यक हैं + उपकरण कनेक्ट नहीं है। + कृपया सही लॉगिन आईडी दर्ज करें + कृपया सही पासवर्ड दर्ज करें + गलत पासवर्ड + गलत उपयोगकर्ता आईडी + \ No newline at end of file diff --git a/app/src/main/res/values-ka/strings.xml b/app/src/main/res/values-ka/strings.xml new file mode 100644 index 0000000..d4b1f23 --- /dev/null +++ b/app/src/main/res/values-ka/strings.xml @@ -0,0 +1,238 @@ + + HPOS ಪರೀಕ್ಷೆ + + + TestRight + Denovix + + + + ಪುರುಷ + ಹೆಣ್ಣು + ಇತರ + + + + ಹೌದು + ಇಲ್ಲ + + + + + GEN + OBC + SC + ST + + + + O+ve + O-ve + A+ve + A-ve + B+ve + B-ve + AB+ve + AB-ve + + + ಹಲೋ ಖಾಲಿ ಫ್ರ್ಯಾಗ್ಮೆಂಟ್ + ಪರೀಕ್ಷೆಯನ್ನು ಆಯ್ಕೆಮಾಡಿ + ಸಂದರ್ಭ ಹೊಂದಿಸಿ + + + ನೀವು ಆಧಾರ ನಮೂದಿಸಿದ್ದೀರಾ? + ದಯವಿಟ್ಟು ಚಲಾಯಿಸುವ ಮೊದಲು ನಮೂದಿಸಿದ ನಮೂನೆಯ ಕೂವೆಟ್ಟನ್ನು ಇಟ್ಟುಕೊಳ್ಳಿ + ಹೌದು + ಇಲ್ಲ + + + + ಸಂಪರ್ಕಿಸಿ + ಸಂಪರ್ಕಿಸಿದೆ + ಓದಿ + ರೇಫರೆನ್ಸ್ ಅಪ್‌ಡೇಟ್ ಮಾಡಿ + + + ನೀವು ನಮೂನೆಯ ಕೂವೆಟ್ ಇಟ್ಟಿದ್ದೀರಾ? + ದಯವಿಟ್ಟು ಚಲಾಯಿಸುವ ಮೊದಲು ನಮೂದಿಸಿದ ನಮೂನೆಯ ಕೂವೆಟ್ಟನ್ನು ಇಟ್ಟುಕೊಳ್ಳಿ + ಹೌದು, ರನ್ + + + + ಪರೀಕ್ಷಣ ನಿರ್ದೇಶಗಳು + ಹೆಜ್ಜೆ 1 : ಆಧಾರ/ಬೇಸ್ಲೈನ್ ನಮೂನೆಯನ್ನು ಹೊಂದಿಸಲು ಕೂವೆಟ್ಟನ್ನು ಇಟ್ಟುಕೊಳ್ಳಿ + ಹೆಜ್ಜೆ 2 : ಡೆವೈಸ್ ಮೌಲ್ಯಗಳನ್ನು ಓದಲು ಬಟನ್ ಕೆಳಗೆ ಒತ್ತಿ + ಹೆಜ್ಜೆ 1 : ಪ್ರಾರಂಭಿಸಲು ನಮೂನೆ ವಿವರಗಳನ್ನು ನಮೂದಿಸಿ + ಹೆಜ್ಜೆ 1 : ರಸದ ನಮೂನೆಯನ್ನು ಪರೀಕ್ಷೆಗಾಗಿ ಇಟ್ಟುಕೊಳ್ಳಿ + ಹೆಜ್ಜೆ 2 : ಡೆವೈಸ್ ಮೌಲ್ಯಗಳನ್ನು ಓದಲು ಬಟನ್ ಕೆಳಗೆ ಒತ್ತಿ + + ಲಾಗಿನ್ ಐಡಿ + ಪಾಸ್‌ವರ್ಡ್ + ಲಾಗಿನ್ + ಸಹಿಸಿ + ರೋಗಿಯ ವಿವರಗಳನ್ನು ನಮೂದಿಸಿ + ರೋಗಿಯ ಹೆಸರು + ವಯಸ್ಸು ವರ್ಷಗಳಲ್ಲಿ + ಲಿಂಗ + + ಹೆಸರು ಖಾಲಿ ಇರಬಾರದು + ವಯಸ್ಸು ಖಾಲಿ ಇರಬಾರದು + ಲಿಂಗ ಖಾಲಿ ಇರಬಾರದು + ವಯಸ್ಸು ಯಾವುದೇ ಸಾಧ್ಯವಿಲ್ಲ + ಹುಟ್ಟಿದ ವರ್ಷ ಖಾಲಿ ಇರಬಾರದು + ಅಮಾನ್ಯ ಹುಟ್ಟಿದ ವರ್ಷ + ಮೊಬೈಲ್ ಸಂಖ್ಯೆ ಖಾಲಿ ಇರಬಾರದು + ಮೊಬೈಲ್ ಸಂಖ್ಯೆ ಅಮಾನ್ಯ (10 ಅಂಕಗಳನ್ನು ನಮೂದಿಸಿ) + ಇದು ಖಾಲಿ ಇರಬಾರದು + ಪರೀಕ್ಷಾ ಫಲಿತಾಂಶಗಳು + ಹೆಸರು : %1$s + ಲಿಂಗ : %1$s + ವಯಸ್ಸು : %1$s ವರ್ಷಗಳು + ಫಲಿತಾಂಶಗಳು : + ನೆಗೆಟಿವ್\ \ + ವರದಿ\nಡೌನ್‌ಲೋಡ್ ಮಾಡಿ + ಹೋಮ್ + ಹೊಸ ಪರೀಕ್ಷೆ + ಈಗ ಪ್ರಾರಂಭಿಸಿ + ಹೆಮೋ ಕ್ಯೂಬ್ + ಹೆಮೊಗ್ಲೊಬಿನ್ + ಸಾಮಾನ್ಯ\ \ + ಸಿಕ್ಲ್ ಸೆಲ್ ರೋಗ\ \ + ಸಿಕ್ಲ್ ಸೆಲ್ ಗುಣ\ \ + ಅವ್ಯಾಖ್ಯಾತ\ \ + ಸಿಕ್ಲ್‌ಸೆಲ್\nದೃಢೀಕರಣ + ಸಿಕ್ಲ್ ಸೆಲ್ ಸ್ಕ್ರೀನಿಂಗ್ + ಥ್ಯಾಲಸೀಮಿಯಾ + USB ಕನೆಕ್ಷನ್ + ಹೈ ಪರಫಾರ್ಮೆನ್ಸ್\nಆಪ್ಟಿಕಲ್ ಸ್ಪೆಕ್ಟ್ರೋಸ್ಕೊಪಿ + ಸಿಕ್ಲ್ ಸರ್ಟಿಫಿಕೇಟ್ + ಸಿಕ್ಲ್ ಹುಡುಕಿ + ಸಲ್ಲಿಸಿ + ಡೆವೈಸ್ ಟೆಸ್ಟ್ + ಪ್ರಾರಂಭಿಸಿ + ನಮೂನೆ ಪ್ರಾರಂಭಿಸಿ + ಹೊಸ ಕಿಟ್ + ಹೊಸ ಬಫರ್ + ಅಮಾನ್ಯ ಅಕ್ಷರ, ಅನುಮತವಾದ ಅಕ್ಷರಗಳು ಅಕ್ಷರಗಳು, ಸಂಖ್ಯೆಗಳು ಮತ್ತು ( ) _ - , . ಮಾತ್ರ + \*ಫಲಿತಾಂಶವನ್ನು ಪ್ರಯೋಗಶಾಲೆಯ ಪರೀಕ್ಷಾದಿಂದ ದೃಢೀಕರಿಸಬೇಕು + \*ಫಲಿತಾಂಶವನ್ನು ಪ್ರಯೋಗಶಾಲೆಯ ಪರೀಕ್ಷಾದಿಂದ ದೃಢೀಕರಿಸಬೇಕು ಏಕೆಂದರೆ ರೋಗಿಯ ವಯಸ್ಸು 5 ವರ್ಷಗಳಿಗಿಂತ ಕಡಿಮೆ + ಧನಸ್ಪರ್ಶ + ನೆಗೆಟಿವ್ ಬಾರ್ಡರ್‌ಲೈನ್ + ರೋಗಿ ಯಾವುದೇ ಔಷಧಿ ಅಥವಾ ಚಿಕಿತ್ಸೆಯಲ್ಲಿದ್ದಾನೆಯೇ? + ರೋಗಿಗೆ ರಕ್ತ ಪ್ರವಾಹನೆ ನಡೆಯುತ್ತಿದೆಯೇ? + ಆಧಾರ್ ಕಾರ್ಡ್\nಸ್ಕ್ಯಾನ್ ಮಾಡಿ + ರೋಗಿ ವಿವರಗಳು + ಅಥವಾ + ABHA ಕಾರ್ಡ್\nಸ್ಕ್ಯಾನ್ ಮಾಡಿ + ರೋಗಿಗಳ ಪಟ್ಟಿ + ಪರೀಕ್ಷಿಸಲು ಯಾವುದೇ ರೋಗಿ ವಿವರಗಳು ಸಿಗಲಿಲ್ಲ. ದಯವಿಟ್ಟು ಕೆಳಗಿನಿಂದ ಒಂದನ್ನು ಸೇರಿಸಿ. + ಸೇರಿಸಿ + ಪರೀಕ್ಷೆ + ಬಾಕಿ + ABHA ಐಡಿ ಕಾರ್ಡ್ ಸ್ಕ್ಯಾನ್ ಮಾಡಿ + ಈಗ ಸ್ಕ್ಯಾನ್ ಮಾಡಿ + ABHA ಸಂಖ್ಯೆಯನ್ನು ಕೈಯಿಂದ ನಮೂದಿಸಿ + ABHA ಐಡಿ + ಬಳಕೆದಾರ ಐಡಿ : %1$s + ಹೋಗಿ + ಇಲ್ಲಿ ಕ್ಲಿಕ್ ಮಾಡಿ + ಡ್ಯಾಶ್‌ಬೋರ್ಡ್ ಆರಂಭ + ನೇವಿಗೇಷನ್ ಡ್ರಾಯರ್ ತೆರೆಯಲಿ + ನೇವಿಗೇಷನ್ ಡ್ರಾಯರ್ ಮುಚ್ಚಲಿ + HPOS + sminnovations.in + ನೇವಿಗೇಷನ್ ಹೆಡರ್ + ಸೆಟ್ಟಿಂಗ್ಗಳು + ಹೋಮ್ + ಫಲಿತಾಂಶ ತೋರಿಸಿ + ಗ್ಯಾಲರಿ + ಸೆಟ್ಟಿಂಗ್ಗಳು + ಪ್ರೊಫೈಲ್ + ಹುಟ್ಟಿದ ವರ್ಷ + ತಂದೆಯ/ಗಂಡನ ಹೆಸರು + ರೋಗಿ ಮದುವೆಯಾಗಿದ್ದಾನೆಯೇ? (ಹೌದು/ಇಲ್ಲ) + ವರ್ಗ + ರಕ್ತ ಗುಂಪು + ಡಿಜಿಟಲ್ ಸಲಹಾ ಕಾರ್ಡ್ + ರೋಗಿ ವೈದ್ಯಕೀಯ ದಾಖಲೆಗಳು + ರೋಗಿಯ ವಿಳಾಸ ವಿವರಗಳು + ಜಿಲ್ಲೆ + ನಗರ/ಪಟ್ಟಣ + ರಾಜ್ಯ + ಪಿನ್‌ಕೋಡ್ + ... + ABHA ಐಡಿ ಕಾರ್ಡ್ ರಚಿಸಿ + ಆಧಿಕಾರಿ ABHA ಆಪ್ + ರೋಗಿ ಆಧಾರ್ ಕಾರ್ಡ್ ಸ್ಕ್ಯಾನ್ ಮಾಡಿ + ಆಧಾರ್ ಸಂಖ್ಯೆಯನ್ನು ಕೈಯಿಂದ ನಮೂದಿಸಿ + ಆಧಾರ್ ಸಂಖ್ಯೆ + ಆಧಾರ್ ಸಂಖ್ಯೆ + ದಯವಿಟ್ಟು "ಆಧಿಕಾರಿ ABHA ಆಪ್" ಅನ್ನು ಬಳಸಿ ABHA ಐಡಿ ರಚಿಸಿ ಮತ್ತು ಹಿಂತಿರುಗಿ ಬನ್ನಿ. + ಮುಂದುವರಿಸಲು ದಯವಿಟ್ಟು ಆಧಾರ್ ಸಂಖ್ಯೆಯನ್ನು ನಮೂದಿಸಿ + ಕಿಟ್ ಯಾವಾಗಲೂ QR ಕೋಡ್ ಸ್ಕ್ಯಾನ್ ಮಾಡಿ + ಕಿಟ್ ಸೀರಿಯಲ್ ಸಂಖ್ಯೆಯನ್ನು ಕೈಯಿಂದ ನಮೂದಿಸಿ + ಸೀರಿಯಲ್ ಸಂಖ್ಯೆ + ಬೇಸ್ಲೈನ್/ಸಂದರ್ಭ ಹೊಂದಿಸಿರಾ? + ಬೇಸ್ಲೈನ್ ನಿರ್ದೇಶನ + ಮುಂದಿನ ಆಪ್ ಆವೃತ್ತಿಯಲ್ಲಿ ಪ್ರಕಟಿಸಲಾಗಿದೆ + ಅಮಾನ್ಯ ಕಿಟ್ ಸೀರಿಯಲ್ ಸಂಖ್ಯೆ, ಶರಿಯಾದ ಉದಾಹರಣೆ, SMI/SC/019/01/001 + ಬಳಕೆದಾರ ಪಟ್ಟಿ + ಬಳಕೆದಾರ ಐಡಿ + ಆಧಾರ್ ಐಡಿ + ಇಂಟರ್ನೆಟ್ ಇಲ್ಲದೆ, ದಯವಿಟ್ಟು ಬಳಕೆದಾರ ಐಡಿ ಮತ್ತು ರಕ್ತ ಗುಂಪುವನ್ನು ಕೈಯಿಂದ ನಮೂದಿಸಿ + ಬಳಕೆದಾರ ಐಡಿ 18 ಅಂಕಗಳಿರಬೇಕು ಮತ್ತು ದಯವಿಟ್ಟು ರಕ್ತ ಗುಂಪುವನ್ನು ಆಯ್ಕೆ ಮಾಡಿ + ಸ್ಥಾನಿಕ DB ಪರೀಕ್ಷೆಗಳನ್ನು ಅಪ್ಲೋಡ್ ಮಾಡಿ + ನೀವು ಸ್ಥಾನಿಕ DB ಪರೀಕ್ಷೆಗಳನ್ನು ಕ್ಲೌಡ್‌ಗೆ ಅಪ್ಲೋಡ್ ಮಾಡಲು ಬಯಸುತ್ತೀರಾ? + ಅಪ್ಲೋಡ್ ಮಾಡಿ + ರದ್ದು ಮಾಡಿ + ಯಶಸ್ವಿಯಾಗಿ ಅಪ್ಲೋಡ್ ಮಾಡಲಾಗಿದೆ + ಪರೀಕ್ಷೆ ಮುಗಿಯಿತು + ರಕ್ತ ಗುಂಪು ಆಯ್ಕೆಮಾಡಿ + ಎಲ್ಲಾ ನೋಂದಣಿಗೆ ಬಂದ ಬಳಕೆದಾರರನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಪರೀಕ್ಷಿಸಲಾಗಿದೆ + ಇನ್ಕ್ಯೂಬೇಶನ್ ಆರಂಭ + ಬಫರ್ ಚೆಕ್ ಮಾಡಿ + + ಬ್ಯಾಟರಿ ಸ್ತರ 40% ಕ್ಕಿಂತ ಕಡಿಮೆಯಾಗಿದೆ, ದಯವಿಟ್ಟು ಸಾಧನವನ್ನು ಮುಂದುವರಿಸಲು ಸಾಧನವನ್ನು ಚಾರ್ಜ್ ಮಾಡಿ + ಈ ಬಳಕೆದಾರನ ಮೇಲೆ ಪರೀಕ್ಷೆ ಇನ್ನು ಮುಗಿದಿದೆ + ಇನ್ಕ್ಯೂಬೇಷನ್ ಹತ್ತಿಲ್ಲ 15 ನಿಮಿಷಗಳ ಪೂರ್ತಿ ಆಗಿಲ್ಲ + ಇನ್ಕ್ಯೂಬೇಷನ್ 30 ನಿಮಿಷಗಳನ್ನು ದಾಟಿದೆ, ಇನ್ನೊಮ್ಮೆ ಇನ್ಕ್ಯೂಬೇಷನ್ ಮಾಡಬೇಕಾಗಿದೆ + ಈ ಬಳಕೆದಾರನ ಮೇಲೆ ಇನ್ಕ್ಯೂಬೇಷನ್ ಆರಂಭವಾಗಿಲ್ಲ + ಪರೀಕ್ಷೆ ಮುಗಿಯಿತು + ಪರೀಕ್ಷೆ ಬಾಕಿ ಇದೆ + ದಯವಿಟ್ಟು ನಿಮ್ಮ ರಕ್ತ ಗುಂಡಾರವನ್ನು ನಮೂದಿಸಿ + ದಯವಿಟ್ಟು ನಿಮ್ಮ ರಕ್ತ ಗುಂಡಾರವನ್ನು ನಮೂದಿಸಿ + ರಕ್ತ ಗುಂಡಾರ ಯಶಸ್ವಿಯಾಗಿ ನವೀಕರಿಸಲಾಗಿದೆ + ರಕ್ತ ಗುಂಡಾರ ನವೀಕರಿಸಲು ವಿಫಲವಾಗಿದೆ: %1$s + ನೀರು ನಿರ್ದಿಷ್ಟ ಐಡಿಗೆ ಯಾವುದೇ ಬಳಕೆದಾರ ಡೇಟಾ ಕಂಡುಬಂದಿಲ್ಲ + ಸಾಧನ ಹಂಚಿಹೋಯಿತು + ಯಾವುದೇ ಸಾಧನ ಕಂಡುಬಂದಿಲ್ಲ + ಅಮಾನ್ಯವಾದ ಕಿಟ್ ಸಂಖ್ಯೆ + ಇಂಟರ್ನೆಟ್ ಲಭ್ಯವಿಲ್ಲ + ಇಂಟರ್ನೆಟ್ ಲಭ್ಯವಿಲ್ಲ, ಪರೀಕ್ಷೆ ವಿವರಗಳನ್ನು ಸ್ಥಾನಿಕವಾಗಿ ಉಳಿಸಲಾಗಿದೆ + ಡೇಟಾ ಅಪ್ಲೋಡ್ ಮಾಡುವಾಗ ತಪ್ಪಾಗಿದೆ, ಪರೀಕ್ಷೆ ವಿವರಗಳನ್ನು ಸ್ಥಾನಿಕವಾಗಿ ಉಳಿಸಲಾಗಿದೆ + ಇನ್ನೊಂದು ಬಫರ್ ಪಡೆಯುವಾಗ ತಪ್ಪಾಗಿದೆ + ನೀವು ಇನ್ನೊಂದು ಬಫರ್ ಜಾರಿಗೆ ಹೋಗಲು ಇಚ್ಛಿಸುತ್ತಾರಾ? + ಪರೀಕ್ಷೆ ಜರುಗುತ್ತಿದೆ, ಹಿಂತಿರುಗಲು ಸಾಧ್ಯವಿಲ್ಲ + ಕಿಟ್ ಪರಿಣಾಮ ಯಶಸ್ವಿಯಾಗಿ ಅಪ್ಲೋಡ್ ಆಗಿದೆ + ಕಿಟ್ ಪರಿಣಾಮ ಅಪ್ಲೋಡ್ ಆಗಲಿಲ್ಲ, ಅದನ್ನು ಕೈಯಾರೆ ಹೊಸದಾಗಿ ಬರೆಯಿರಿ + ಪರೀಕ್ಷೆ ಜರುಗುತ್ತಿದೆ + ವರ್ಗೀಕರಣ ನಡೆಸುವಾಗ ತಪ್ಪಾಗಿದೆ + ಪರೀಕ್ಷೆ ಫಲಿತಾಂಶ ಯಶಸ್ವಿಯಾಗಿ ಅಪ್ಲೋಡ್ ಆಗಿದೆ + ಪರೀಕ್ಷೆ ಫಲಿತಾಂಶ ಅಪ್ಲೋಡ್ ಆಗಲಿಲ್ಲ + ಲಾಗೌಟ್ ಮಾಡಿ + ನೀವು ಅಪ್ಲಿಕೇಶನ್ ನಿಂದ ಲಾಗೌಟ್ ಮಾಡಲು ಬಯಸುತ್ತಿದ್ದೀರಾ? + ರದ್ದು ಮಾಡಲಾಗಿದೆ: ಸ್ಕ್ಯಾನ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ, ಮತ್ತೊಮ್ಮೆ ಪ್ರಯಾಸಿಸಿ!! + ಕಿಟ್ ಸಂಖ್ಯೆ ನವೀಕರಿಸಲಾಗಿದೆ, ದಯವಿಟ್ಟು ಟೆಸ್ಟ್ ಆರಂಭಿಸುವ ಮೊದಲು ಬಳಸುವವನನ್ನು ಆಯ್ಕೆಮಾಡಿ + ದಯವಿಟ್ಟು ಟೆಸ್ಟ್ ಆರಂಭಿಸುವ ಮೊದಲು ರೋಗಿಯನ್ನು ಆಯ್ಕೆಮಾಡಿ + ದಯವಿಟ್ಟು ಸ್ಥಾನ ಸೇವೆಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ + ಸರಿಯಾದ ಸ್ಥಾನ ಅನುಮತಿ ನಿರಾಕರಿಸಲಾಗಿದೆ + ಅಲ್ಪ ಸರಿಯಾದ ಸ್ಥಾನ ಅನುಮತಿ ನಿರಾಕರಿಸಲಾಗಿದೆ + ನೀವು ಈ ಅಪ್ಲಿಕೇಶನ್ ಬಳಸಲು ಎಲ್ಲಾ ಫೈಲ್‌ಗಳಿಗೆ ಪ್ರವೇಶ ಅನುಮತಿ ನೀಡಬೇಕು + ಈ ಅಪ್ಲಿಕೇಶನ್ ಬಳಸಲು ಎಲ್ಲಾ ಅನುಮತಿಗಳು ಅಗತ್ಯವಿವೆ. + ಡೆವೈಸ್ ಸಂಪರ್ಕಿಸಲಾಗಿಲ್ಲ. + ದಯವಿಟ್ಟು ಸರಿಯಾದ ಲಾಗಿನ್ ಐಡಿ ನಮೂದಿಸಿ + ದಯವಿಟ್ಟು ಸರಿಯಾದ ಪಾಸ್‌ವರ್ಡ್ ನಮೂದಿಸಿ + ತಪ್ಪಾದ ಪಾಸ್‌ವರ್ಡ್ + ತಪ್ಪಾದ ಬಳಕೆದಾರ ಐಡಿ + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d7a0717..d69a4c0 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -67,7 +67,6 @@ Step 1 : Place the cuvette containing blood sample mixed with kit solution. Step 2 : Press the button below to start the device reading values. - Login ID Password Login @@ -80,7 +79,6 @@ Age can\'t be empty Gender can\'t be empty Age should be valid - Year of birth can\'t be empty Invalid Year of Birth Mobile Number can\'t be empty @@ -147,7 +145,6 @@ sminnovations.in Navigation header Settings - Home Show Result Gallery @@ -196,5 +193,46 @@ All registered user are tested successfully Incubate Check Buffer - + Battery level is low than 40%, please charge the device to continue testing + Test has been already conducted for this user + Incubation has not completed 15 minutes + Incubation crossed 30 minutes, need to repeat the incubation + Incubation not started for this user + Test concluded + Test is Pending + Please enter your blood group + Please enter your blood group + Blood group updated successfully + Failed to update blood group: %1$s + No user data found for the specified ID + Device is Disconnected + No device found + Invalid KIT Number + Internet is Not Available + Internet not available, test details stored locally + Error uploading data, test details stored locally + error while getting existing buffer + Do you want to continue with existing buffer? + Kit result uploaded successfully + Kit result uploading failed, note it down manually + test is going on + test is going on, can\'t go back + error while performing classification + Test Results Uploaded Successfully + Test Results Upload Failed + LOG OUT + Do you want to LogOut the Application? + Cancelled: Unable to scan, Try Again!! + Kit number is updated, Please Select user before starting test + Please Select patient before starting test + Please enable location services + Fine location permission denied + Coarse location permission denied + You must grant permission to access all files to use the app + All permissions are required to use the app. + Device Not Connected. + Please enter a proper Login ID + Please enter a proper password + Wrong Password + Wrong UserID \ No newline at end of file diff --git a/app/src/test/java/com/example/hpostesting/HemoCubeViewModelTest.kt b/app/src/test/java/com/example/hpostesting/HemoCubeViewModelTest.kt deleted file mode 100644 index 012036e..0000000 --- a/app/src/test/java/com/example/hpostesting/HemoCubeViewModelTest.kt +++ /dev/null @@ -1,127 +0,0 @@ -package com.example.hpostesting - -import android.content.Context -import android.content.SharedPreferences -import androidx.arch.core.executor.testing.InstantTaskExecutorRule -import androidx.lifecycle.LiveData -import com.example.hpostesting.data.dao.HemoCubeDao -import com.example.hpostesting.data.model.Response -import com.example.hpostesting.data.model.patient.HemoCubeTestData -import com.example.hpostesting.data.model.patient.toHemoCubeTestData -import com.example.hpostesting.data.repository.DatabaseRepository -import com.example.hpostesting.data.repository.Repository -import com.example.hpostesting.presentation.hemocube.HemoCubeFragment -import com.example.hpostesting.presentation.hemocube.HemoCubeViewModel -import com.example.hpostesting.presentation.hemocube.HemocubeActivity -import com.example.hpostesting.util.TestCoroutineRule -import `in`.sminnovations.hpostesting.databinding.FragmentHemoCubeReferenceBinding -import kotlinx.coroutines.ExperimentalCoroutinesApi -import kotlinx.coroutines.test.advanceUntilIdle -import kotlinx.coroutines.test.runBlockingTest -import org.junit.Assert.assertEquals -import org.junit.Before -import org.junit.Rule -import org.junit.Test -import org.mockito.ArgumentMatchers.any -import org.mockito.ArgumentMatchers.anyString -import org.mockito.Mock -import org.mockito.Mockito.verify -import org.mockito.Mockito.`when` -import org.mockito.MockitoAnnotations - -@ExperimentalCoroutinesApi -class HemoCubeViewModelTest { - - // Add rule for testing LiveData - @get:Rule - val rule = InstantTaskExecutorRule() - - // Add rule for testing coroutines - @get:Rule - val coroutineRule = TestCoroutineRule() - - // Mock dependencies - @Mock - lateinit var hemoCubeDao: HemoCubeDao - - @Mock - lateinit var repository: Repository - - // Mock context - @Mock - lateinit var context: Context - - // Mock LiveData for testing - @Mock - lateinit var networkStatusLiveData: LiveData - - // Initialize the ViewModel - lateinit var viewModel: HemoCubeViewModel - - private lateinit var hemoCubeFragment: HemoCubeFragment - - @Before - fun setUp() { - MockitoAnnotations.initMocks(this) -// viewModel = HemoCubeViewModel(hemoCubeDao, repository, context) - hemoCubeFragment = HemoCubeFragment() - } - - @Test - fun `uploadHemoCubeResultToDatabase with online status should call addResultTestToDb`() = - coroutineRule.runBlockingTest { - // Mock data and setup - val isOnline = true - val testStatus = true - val kitSerial = "12345" - - // Mock the necessary methods - `when`(repository.addTestToDatabase(viewModel.testDetails!!)) - .thenReturn(Response.Success("Success")) - - // Call the function to be tested - viewModel.uploadHemoCubeResultToDatabase(isOnline, testStatus, kitSerial) - - // Verify that addResultTestToDb is called - advanceUntilIdle() - assertEquals("Local", viewModel.fireBaseUpload.value) - } - - // Similar tests can be written for other methods in HemoCubeViewModel - - @Mock - private lateinit var mockSharedPreferences: SharedPreferences - - @Mock - private lateinit var mockActivity: HemocubeActivity // Replace with your actual Activity class - - @Mock - private lateinit var mockBinding: FragmentHemoCubeReferenceBinding // Replace with your actual Binding class - - @Test - fun `findResult with valid input`() { - // Arrange - val validString = "valid string" - val fullReadOutput = "full read output" - `when`(mockSharedPreferences.getString(anyString(), anyString())).thenReturn("dummy_value") - `when`(mockActivity.runOnUiThread(any())).thenAnswer { - val runnable = it.getArgument(0, Runnable::class.java) - runnable.run() - } - - // Act - val result = hemoCubeFragment.findResult(calculatedRatio = 0.06) - - // Assert - // Add appropriate assertions based on the behavior you expect -// verify(mockSharedPreferences).edit() -// verify(mockBinding).btnSubmit.visibility = View.VISIBLE -// verify(mockBinding).btnSubmit.isEnabled = true - // Add more verifications as needed - - assertEquals("Normal", result) - } - - - -} \ No newline at end of file