Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Utils {
- private object Holder {
- val INSTANCE = Utils()
- }
- companion object {
- val INSTANCE: Utils by lazy { Holder.INSTANCE }
- }
- private val TAG = "Utils"
- var mCurrentPhotoPath = ""
- var file: File? = null
- var filePath: Uri? = null
- private var dialog: Dialog? = null
- private var snackbarMessage: Snackbar? = null
- val bus: EventBus = EventBus.getDefault()
- @SuppressLint("InlinedApi")
- fun openFilePdf(fragment: Fragment, reqCode: Int) {
- val intent = Intent(Intent.ACTION_OPEN_DOCUMENT).apply {
- addCategory(Intent.CATEGORY_OPENABLE)
- type = "application/pdf"
- // Optionally, specify a URI for the file that should appear in the
- // system file picker when it loads.
- putExtra(DocumentsContract.EXTRA_INITIAL_URI, filePath)
- }
- fragment.startActivityForResult(intent, reqCode)
- }
- fun ToastySuccess(context: Context, message: String){
- Toasty.success(context, message, Toasty.LENGTH_LONG, true).show()
- }
- fun ToastyError(context: Context, message: String) {
- Toasty.error(context, message, Toasty.LENGTH_LONG, true).show()
- }
- fun ToastyInfo(context: Context, message: String){
- Toasty.info(context, message, Toasty.LENGTH_LONG, true).show()
- }
- fun snackBarMessage(rootview: View, message: String) {
- if (!message.isBlank()) {
- snackbarMessage = Snackbar.make(rootview, message, Snackbar.LENGTH_INDEFINITE)
- snackbarMessage!!.setActionTextColor(Color.RED)
- snackbarMessage!!.setAction("OK") {
- snackbarMessage!!.dismiss()
- bus.post(MessageEvent(message))
- }
- snackbarMessage!!.show()
- } else {
- snackbarMessage =
- Snackbar.make(rootview, "null error message", Snackbar.LENGTH_INDEFINITE)
- snackbarMessage!!.setActionTextColor(Color.RED)
- snackbarMessage!!.setAction("OK") {
- snackbarMessage!!.dismiss()
- bus.post(MessageEvent(message))
- }
- snackbarMessage!!.show()
- }
- }
- var mLastClickTime=0L
- fun isOpenRecently():Boolean{
- if (SystemClock.elapsedRealtime() - mLastClickTime < 1000){
- return true
- }
- mLastClickTime = SystemClock.elapsedRealtime()
- return false
- }
- @SuppressLint("LogNotTimber")
- private fun takePictureFromCamera(fragment: Fragment, reqCode: Int) {
- Intent(MediaStore.ACTION_IMAGE_CAPTURE).also { takePictureIntent ->
- // Ensure that there's a camera activity to handle the intent
- takePictureIntent.resolveActivity(fragment.requireContext().packageManager)?.also {
- // Create the File where the photo should go
- file = try {
- createImageFile(fragment.requireContext())
- } catch (ex: IOException) {
- // Error occurred while creating the File
- Log.e(TAG, "takePictureFromCamera: message = ${ex.message}")
- null
- }
- // Continue only if the File was successfully created
- file?.also {
- filePath = FileProvider.getUriForFile(
- fragment.requireContext(),
- "id.cikup.school",
- it
- )
- takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, filePath)
- fragment.startActivityForResult(takePictureIntent, reqCode)
- }
- }
- }
- }
- fun takePhotoFromGalery(fragment: Fragment, reqCode: Int) {
- val takePictureIntent = Intent(Intent.ACTION_PICK)
- takePictureIntent.type = "image/*"
- takePictureIntent.putExtra(Intent.EXTRA_LOCAL_ONLY, true)
- fragment.startActivityForResult(takePictureIntent, reqCode)
- }
- @SuppressLint("SimpleDateFormat")
- @Throws(IOException::class)
- private fun createImageFile(context: Context): File {
- // Create an image file name
- val timeStamp: String = SimpleDateFormat("yyyyMMdd_HHmmss").format(Date())
- val file = context.getExternalFilesDir(Environment.DIRECTORY_PICTURES)
- return File.createTempFile(
- "JPEG_${timeStamp}_", /* prefix */
- ".jpg", /* suffix */
- file /* directory */
- ).apply {
- // Save a file: path for use with ACTION_VIEW intents
- mCurrentPhotoPath = absolutePath
- }
- }
- @SuppressLint("WrongViewCast")
- fun showTakePictureChooser(fragment: Fragment) {
- dialog = fragment.context?.let { Dialog(it) }
- dialog!!.requestWindowFeature(Window.FEATURE_NO_TITLE)
- dialog!!.setCancelable(true)
- dialog!!.setContentView(R.layout.custom_image_chooser)
- val width = (fragment.resources.displayMetrics.widthPixels * 0.90).toInt()
- dialog!!.window?.setLayout(width, WindowManager.LayoutParams.WRAP_CONTENT)
- dialog!!.window?.setGravity(Gravity.CENTER)
- val viaCameraButton = dialog!!.findViewById(R.id.cameraCustomUploadTV) as ImageView
- viaCameraButton.setOnClickListener {
- dialog!!.dismiss()
- takePictureFromCamera(
- fragment,
- RequestCode.REQUEST_TAKE_PICTURE_CAMERA
- )
- }
- val viaGaleryButton = dialog!!.findViewById(R.id.galleryCustomUploafTV) as ImageView
- viaGaleryButton.setOnClickListener {
- dialog!!.dismiss()
- takePhotoFromGalery(
- fragment,
- RequestCode.REQUEST_TAKE_PICTURE_GALERY
- )
- }
- dialog!!.show()
- }
- fun getBitmapFile(data: Intent, fragment: Fragment): File {
- val selectedImage = data.data
- val cursor = selectedImage?.let {
- fragment.context?.contentResolver?.query(
- it,
- arrayOf<String>(android.provider.MediaStore.Images.ImageColumns.DATA),
- null,
- null,
- null
- )
- }
- cursor?.moveToFirst()
- val idx = cursor?.getColumnIndex(MediaStore.Images.ImageColumns.DATA)
- val selectedImagePath = cursor?.getString(idx!!)
- cursor?.close()
- return File(selectedImagePath)
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement