شاهرخ جهان زاده

مدیر انجمن
  • تعداد ارسال ها

    78
  • تاریخ عضویت

  • آخرین بازدید

  • Days Won

    20

تمامی ارسال های شاهرخ جهان زاده

  1. سلام تا اونجایی که ذهن من یاری میکنه باید یک خط به کدتون اضافه کنید: buildTypes { release { minifyEnabled true useProguard true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }
  2. سلام میتونید در کلاس service از onTaskRemove استفاده کنید که در واقع باید override بشه: @Override public void onTaskRemoved(Intent rootIntent){ Intent alarmIntent = new Intent(getActivity(), ReceiverUpdateData.class); AlarmManager manager = (AlarmManager) getActivity().getSystemService(Context.ALARM_SERVICE); manager.setInexactRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), Integer.parseInt(newValue.toString())*60*1000, PendingIntent.getBroadcast(getActivity(), 0, alarmIntent, 0)); super.onTaskRemoved(rootIntent); }
  3. سلام اگر از Barcode Detector استفاده کنید در کسری از ثانیه بارکد رو میخونه... این API توسط خود گوگل ارائه شده...
  4. سلام چرا از Barcode Detector استفاده نمیکنید؟ با این API نیازی به ZXING ندارید، تمامی بارکدها رو هم میخونه... https://developers.google.com/vision/android/barcodes-overview
  5. سلام دلیلی این اتفاق معمولا بخاطر رزولوشن های مختلف دستگاه های اندرویدی هست که برای جلوگیری از این اتفاق معمولا اندازه ها رو روی match_parent یا wrap_content قرار میدن ولی اگر شما قصد دارید که اندازه خاصی برا هر کدوم از رزولوشن های مختلف قرار بدید بهترین کار این هست که dimensionهای مختلف رو برای اونها تنظیم کنید... میتونید با معرفی پوشه های جدید در بخش res این کار رو انجام بدید، به این صورت که چند پوشه تحت عنوان های زیر بسازید: res/values/dimens.xml res/values-small/dimens.xml res/values-normal/dimens.xml res/values-large/dimens.xml res/values-xlarge/dimens.xml و بعد برای dimensها توی پوشه های مختلف مقدار درست رو قرار بدید: //for dimens in values folder <resources> <dimen name="edit_text_width">130dp</dimen> </resources> //for dimens in values-small folder <resources> <dimen name="edit_text_width">80dp</dimen> </resources> ...
  6. پس tabMinWidth رو هم امتحان کنید و روی 0 تنظیمش کنید...
  7. اگر tabGravity رو روی fill بذارید چطور؟ app:tabGravity="fill"
  8. عذرخواهی میکنم من اشتباه برداشت کرده بودم... وقتی حالت scrollable به fixed تغییر میدید درست میشه یا هنوز مشکل پا برجاست؟
  9. سلام داخل TabLayout به صورت پیش فرض گزینه های padding وجود داره که باید اونها رو اصلاح کنید و مقادیرشون رو روی 0 بذارید: app:tabPaddingBottom="0dp" app:tabPaddingEnd="0dp" app:tabPaddingStart="0dp" app:tabPaddingTop="0dp"
  10. سلام بله باید از array list و همچنین sharedPreferences استفاده کنید، از API 11 قابلیت set به اون اضافه شده و میتونید لیست رو به Hashset تبدیل کنید و جهت فراخوانی اون مجدد به ArrayList تبدیل بشه. حالت کلی به شکل زیر هست: (البته من فرض رو بر این گذاشتم که شما با جزئیات sharedPreferences آشنایی کامل دارید) برای set: Set<String> set = new HashSet<String>(); set.addAll(listOfAlarmTimes); alarmEditor.putStringSet("alarms", set); alarmEditor.commit(); برای فراخوانی: Set<String> set = myAlarms.getStringSet("alarm", null); امیدوارم این راهنمایی کمکتون کنه...
  11. سلام... بجای استفاده از تکست راه بهتر این هست که از DatePicker استفاده کنید که میتونید آموزش اون رو در اینجا مشاهده کنید... برای تبدیل تاریخ ها به هم دیگه میتونید از آموزش زیر استفاده کنید: اگر سوالی بود مطرح کنید تا کدهای کامل رو براتون قرار بدم...
  12. این آموزش رو بخونید، امیدوارم کمک کنه: How to read PDF files in android
  13. توی همون کتابخانه ای که استفاده کردید توضیحات کامل ارائه شده... دقیقا کجای کار به مشکل بر میخورید؟
  14. فرمولتون دقیقا چی هست؟
  15. سلام برای اینکار از Package Manager باید استفاده کنید: import android.content.pm.PackageManager; // ... public boolean isPackageExisted(String targetPackage){ List<ApplicationInfo> packages; PackageManager pm; pm = getPackageManager(); packages = pm.getInstalledApplications(0); for (ApplicationInfo packageInfo : packages) { if(packageInfo.packageName.equals(targetPackage)) return true; } return false; }
  16. کد exists برای چک کردن فایل هست و ReadPdf در واقع یه کلاس هست که میتونید از همون کدی که استفاده کردید برای خوندن اون استفاده کنید... pdfView.fromAsset("book1.pdf").defaultPage(1).spacing(10).load();
  17. سلام معمولا برای نوشتن کدهای ریاضی از Postfix و Prefix استفاده میکنن. مثلا برای نوشتن ماشین حساب این روش بهترین روش هست... ولی اگر بخواید یک فرمول از پیش تعیین شده رو محاسبه کنید از همون علامتهای معمول برای ضرب * تقسیم / جمع + و تفریق - استفاده میشه... عملیات شما از پیش تعیین شده هست؟ یا قراره مثل ماشین حساب عمل کنه؟
  18. سلام، برای چک کردن اینکه فایل موجود هست یا نه از کدهای زیر استفاده کنید: String filePathString = Environment.getExternalStorageDirectory()+"/pdfs/"+filename; File f = new File(filePathString); if(f.exists()) { ReadPdf(); } else { DownloadFile(); } public void DownloadFile(){ String DownloadUrl = "لینک دانلود"; DownloadManager mManager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE); DownloadManager.Request mRqRequest = new DownloadManager.Request(Uri.parse(DownloadUrl)); mRqRequest.setDescription("فایل مورد نظر در حال دانلود می باشد"); mRqRequest.setTitle("اسم فایل"); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { mRqRequest.allowScanningByMediaScanner(); mRqRequest.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); } mRqRequest.setDestinationInExternalFilesDir(getApplicationContext(),null, "اسم فایل"); mManager.enqueue(mRqRequest); } ** کد زیر فایل مورد نظر رو در مسیر پیش فرض قرار میده: ("/sdcard/Android/data/Your_Projects_PackageName/files/") mRqRequest.setDestinationInExternalFilesDir(getApplicationContext(),null, "اسم فایل");
  19. میتونید از Download Manager استفاده کنید، یه کلاس بسازید با عنوان StartDownload و اون رو برای Notification ست کنید که کاربر بعد از زدن روی اون دانلود رو انجام بده: public void startDownload() { DownloadManager mManager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE); Request mRqRequest = new Request( Uri.parse("لینک دانلود")); mRqRequest.setDescription("This is Test File"); long idDownLoad = mManager.enqueue(mRqRequest);
  20. سلام به نظر من باید توی برنامتون از سیستم ارسال Push Notification استفاده میکردید (مثل OneSignal یا چشمک) که بتونید در صورت ارائه آپدیت به کاربر از طریق Notification اطلاع بدید...
  21. سلام سوال شما در اینجا پاسخ داده شده، میتونید به روش زیر عمل کنید: Locale locale_en = new Locale("en", "US"); getResources().getConfiguration().setLocale(locale_en);
  22. دو حالت در اینجا پیش میاد: یکی اینکه بخواید بعد از اینکه کاربر برنامه رو پاک کرد تمام فایلهایی که دانلود کرده پاک بشه، و دوم اینکه در یک فولدر مخفی اون ها رو قرار بدید... برای حالت اول باید از Private folder استفاده کنید، نمونه کد تولید این نوع فولدر (به عنوان مثال یک آلبوم عکس) به شکل زیر هست: public File getAlbumStorageDir(Context context, String albumName) { // Get the directory for the app's private pictures directory. File file = new File(context.getExternalFilesDir( Environment.DIRECTORY_PICTURES), albumName); if (!file.mkdirs()) { Log.e(LOG_TAG, "Directory not created"); } return file; } برای حالت دوم میتونید با اضافه کردن یک نقطه در ابتدای نام فولدر اون رو مخفی کنید: File file = new File(Environment.getExternalStorageDirectory().getPath() + "/.Image/"); file.mkdirs(); اگر هم یمخواید که پوشه در گالری به نمایش در نیاد باید که یک فایل با عنوان: .nomedia در پوشه مربوطه قرار بدید... ولی حالت اول به مراتب قویتر و بهتر هست...
  23. به SDK Manager برید و مطمئن بشید که HAXM آپدیت یا نصب شده... اگر مشکل پا برجا بود باید به صورت جدا گانه اون رو نصب کنید (که خیلی بعیده مجبور به این کار بشید) در هر صورت بهتون پیشنهاد میکنم برای شبیه سازی از emulator خود اندروید استادیو استفاده نکنید و در عوض از geny motion استفاده کنید...
  24. درون پوشه bin ببینید فایل قابل اجرا رو گذاشتن یا نه؟
  25. خیر، sdk رو نگهدارید نیازی به حذف اون نیست...