Farzad Sarseifi

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

    2,192
  • تاریخ عضویت

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

  • Days Won

    214

تمامی ارسال های Farzad Sarseifi

  1. در این آموزش نحوه zip و unzip کردن پوشه ها در حافظه sdcard انجام میشود 1) ابتدا Permission های زیر را در فایل Manifest اعمال کنید: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 2) تابع زیر را برای zip کردن قرار دهید: public void zip(String[] _files, String zipFileName) { try { BufferedInputStream origin = null; FileOutputStream dest = new FileOutputStream(zipFileName); ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream( dest)); byte data[] = new byte[bUFFER]; for (int i = 0; i < _files.length; i++) { Log.v("Compress", "Adding: " + _files); FileInputStream fi = new FileInputStream(_files); origin = new BufferedInputStream(fi, BUFFER); ZipEntry entry = new ZipEntry(_files.substring(_files.lastIndexOf("/") + 1)); out.putNextEntry(entry); int count; while ((count = origin.read(data, 0, BUFFER)) != -1) { out.write(data, 0, count); } origin.close(); } out.close(); } catch (Exception e) { e.printStackTrace(); } } 3) از فشرده خارج کردن فایل zip : public void unzip(String _zipFile, String _targetLocation) { //create target location folder if not exist dirChecker(_targetLocatioan); try { FileInputStream fin = new FileInputStream(_zipFile); ZipInputStream zin = new ZipInputStream(fin); ZipEntry ze = null; while ((ze = zin.getNextEntry()) != null) { //create dir if required while unzipping if (ze.isDirectory()) { dirChecker(ze.getName()); } else { FileOutputStream fout = new FileOutputStream(_targetLocation + ze.getName()); for (int c = zin.read(); c != -1; c = zin.read()) { fout.write©; } zin.closeEntry(); fout.close(); } } zin.close(); } catch (Exception e) { System.out.println(e); } }
  2. سلام شما باید تصاویر خود را در فولدر های زیر قرار دهید drawable-mdpi drawable-hdpi drawable-xhdpi drawable-xxhdpi drawable-xxxhdpi
  3. چه کدی نوشتید که داره ارور میگیره ؟
  4. اشکال از کتابخانه هایی هستش که import کردید. تصویر ارور رو با دقت بخونید مشخصه ارور
  5. سلام فی لتر شکن نصب کنید gradle رو انلاین کنید و سپس sync
  6. اندروید

    این خطای شما که توی کد میبینم مربوط به ConstraintLayout میباشد و باید درستش کنید
  7. اندروید

    Gradle رو شما باید دوباره sync کنید با زدن گزینه Try again در تصویر بالا
  8. این خطا میگه که نمی تونه دیتابیس رو باز کنه آیا مطمئن هستید دیتایسی وجود داره که بتونه ازش بخونه و یا داخلش بنویسه ؟
  9. همچنان میدانید در بخش اول دیتابیس به توضیفی از sqlite پرداختیم.در صورتی مقاله اول را مطالعه نکرده اید،حتما آن را مطالعه کنید. ابتدا یک پروژه جدید را ایجاد کنید و اسم آن را مثلا dbAndroid بگذارید. سپس ورژن اندروید خود را مشخص کنید...که در این پروژه 2.3.3 را در نظر گرفته ایم در مرحله آخر نام پکیج و اکتیویتی خود را وارد کنید. دکمه finish را بزنید تا پروژه شما اماده شود. اولین قدم برای اینکه بتوانیم از sqlite استفاده کنیم این است که یک کلاس جدید را ایجاد کنید.برای اینکار روی نام پکیچ کلیک راست و گزینه new ->class را انتخاب کنید تا کادر زیر ظاهر شود. بعد از ایجاد کردن کلاس باید از کلاس SQLiteOpenHelper ارث بری کنیم .بعد از اینکار رنگ قرمزی روی نام کلاس ظاهر میشود که برای این میباشد که حتما باید توابع سازنده را ایجاد کنید.که بعد از اینکار سه تابع که در تصویر نشان داده شده اضافه میشوند. بعد از اینکار ها بهتر است در قسمت general متغیر هایی را بصورت سراسری تعریف کنیم تا در کلاس های دیگر نیز بتوانیم فراخوانی کنیم.ابتدا در تابع onCreate دستور مربوطه به ایجاد جدول را بنویسید و در تابع onUpgrade هم دستور مربوط به پاک کردن اطلاعات جدول را بنویسید.بعد از اینکار ها میتونید در هر جای برنامه فقط با صدا زدن نام کلاس و ایجاد کردن یک شی از آن میتوانیم از دیتابیس اندروید به راحتی استفاده کنید بعد از نوشتن دستورات بالا به سراغ طراحی کردن یک UI ساده میرویم تا با وارد کردن اطلاعات در دو EditText اطلاعات را در دیتابیس ذخیره کنید خروجی UI بدین صورت میباشد. کار بدین صورت میباشد که وقتی کاربر روی دکمه save کلیک کرد اطلاعات در دیتابیس ذخیره میشود در خط 13 : ابتدا باید یک شی جدید از کلاس قبلی را ایجاد کنیم خط 14 : یک متغیر از نوع SQLiteDatabase را تعریف میکنیم تا بتوانیم عملیات های مختلف پایگاه داده را انجام دهیم خط 15 : برای اینکه بتوانیم اطلاعات را در مکانی قرار دهیم بعد ذخیره شود از ContentValues استفاده میکنیم در تابع OnCreate هم ابتدا خاصیت مربوط به دکمه را در حالتی وقتی که روی آن کلیک کردیم قرار میدهیم بعد از این کارها نوبت به نوشتن کدهای ثبت اطلاعات میباشد ، بعد از انتخاب دکمه مربوطه یک پیغام چاپ میشود مینی بر اینکه اطلاعات ثبت شد. خط 33: در این خط ما به شی db میگوییم که میتواند که اطلاعات را در دیتابیس بنویسد خط 34: در این خط شی content را ایجاد میکنیم تا مقادیر را در آن قرار دهیم خط های 35 و 36 مقادیر مربوط به فیلدهای name,lname را قرار میدهد خط 37 : اطلاعات در دیتابیس ذخیره میکند خط 38 : یک پیغام را توسط Toast چاپ میکند
  10. دانلود Build Tools 26.0.2 برای اندروید استودیو 3 یکی از ابزهای مورد نیاز برنامه نویسان اندروید در ورژن 3 اندروید استودیو داشتن build tools 26.0.2 میباشد که در اندروید استودیو 3 موجود نمیباشد و باید بطور جداگانه دانلود شده و در فولدر build tools اندروید استودیو قرار داده شود دریافت از انجمن اندروید ایران 26.0.2.zip
  11. در این پست آموزشی قصد داریم نحوه تبدیلات تاریخ(شمسی،میلادی) را مورد بررسی قرار دهیم تا بتوانیم این امکان را در پیاده سازی نماییم. برای اینکار یک کلاسی را استفاده میکنیم که مدیر وب سایت kamyarns آن را ایجاد کرده است و قصد داریم در این آموزش نحوه استفاده از این کلاس را آموزش دهیم از طریق لینک زیر نیز میتوانید به کد دسترسی پیدا کنید https://github.com/dc0d/Roozh/blob/master/Java/src/roozh/main/Roozh.java ابتد کد زیر را به عنوان یک کلاس ( Class ) وارد پروژه خود کنید: public class Roozh { private int day, month, year; private int jY, jM, jD; private int gY, gM, gD; private int leap, march; /** * Calculates the Julian Day number (JG2JD) from Gregorian or Julian * calendar dates. This integer number corresponds to the noon of the date * (i.e. 12 hours of Universal Time). The procedure was tested to be good * since 1 March, -100100 (of both the calendars) up to a few millions * (10**6) years into the future. The algorithm is based on D.A. Hatcher, * Q.Jl.R.Astron.Soc. 25(1984), 53-55 slightly modified by me (K.M. * Borkowski, Post.Astron. 25(1987), 275-279). * * @param year * int * @param month * int * @param day * int * @param J1G0 * to be set to 1 for Julian and to 0 for Gregorian calendar * @return Julian Day number */ private int JG2JD(int year, int month, int day, int J1G0) { int jd = (1461 * (year + 4800 + (month - 14) / 12)) / 4 + (367 * (month - 2 - 12 * ((month - 14) / 12))) / 12 - (3 * ((year + 4900 + (month - 14) / 12) / 100)) / 4 + day - 32075; if (J1G0 == 0) jd = jd - (year + 100100 + (month - 8) / 6) / 100 * 3 / 4 + 752; return jd; } /** * Calculates Gregorian and Julian calendar dates from the Julian Day number * (JD) for the period since JD=-34839655 (i.e. the year -100100 of both the * calendars) to some millions (10**6) years ahead of the present. The * algorithm is based on D.A. Hatcher, Q.Jl.R.Astron.Soc. 25(1984), 53-55 * slightly modified by me (K.M. Borkowski, Post.Astron. 25(1987), 275-279). * * @param JD * Julian day number as int * @param J1G0 * to be set to 1 for Julian and to 0 for Gregorian calendar */ private void JD2JG(int JD, int J1G0) { int i, j; j = 4 * JD + 139361631; if (J1G0 == 0) { j = j + (4 * JD + 183187720) / 146097 * 3 / 4 * 4 - 3908; } i = (j % 1461) / 4 * 5 + 308; gD = (i % 153) / 5 + 1; gM = ((i / 153) % 12) + 1; gY = j / 1461 - 100100 + (8 - gM) / 6; } /** * Converts the Julian Day number to a date in the Jalali calendar * * @param JDN * the Julian Day number */ private void JD2Jal(int JDN) { JD2JG(JDN, 0); jY = gY - 621; JalCal(jY); int JDN1F = JG2JD(gY, 3, march, 0); int k = JDN - JDN1F; if (k >= 0) { if (k <= 185) { jM = 1 + k / 31; jD = (k % 31) + 1; return; } else { k = k - 186; } } else { jY = jY - 1; k = k + 179; if (leap == 1) k = k + 1; } jM = 7 + k / 30; jD = (k % 30) + 1; } /** * Converts a date of the Jalali calendar to the Julian Day Number * * @param Jy * Jalali year as int * @param Jm * Jalali month as int * @param Jd * Jalali day as int * @return Julian day number */ private int Jal2JD(int jY, int jM, int jD) { JalCal(jY); int jd = JG2JD(gY, 3, march, 1) + (jM - 1) * 31 - jM / 7 * (jM - 7) + jD - 1; return jd; } /** * This procedure determines if the Jalali (Persian) year is leap (366-day * long) or is the common year (365 days), and finds the day in March * (Gregorian calendar) of the first day of the Jalali year (jY) * * @param jY * Jalali calendar year (-61 to 3177) */ private void JalCal(int jY) { march = 0; leap = 0; int[] breaks = { -61, 9, 38, 199, 426, 686, 756, 818, 1111, 1181, 1210, 1635, 2060, 2097, 2192, 2262, 2324, 2394, 2456, 3178 }; gY = jY + 621; int leapJ = -14; int jp = breaks[0]; int jump = 0; for (int j = 1; j <= 19; j++) { int jm = breaks[j]; jump = jm - jp; if (jY < jm) { int N = jY - jp; leapJ = leapJ + N / 33 * 8 + (N % 33 + 3) / 4; if ((jump % 33) == 4 && (jump - N) == 4) leapJ = leapJ + 1; int leapG = (gY / 4) - (gY / 100 + 1) * 3 / 4 - 150; march = 20 + leapJ - leapG; if ((jump - N) < 6) N = N - jump + (jump + 4) / 33 * 33; leap = ((((N + 1) % 33) - 1) % 4); if (leap == -1) leap = 4; break; } leapJ = leapJ + jump / 33 * 8 + (jump % 33) / 4; jp = jm; } } /** * Modified toString() method that represents date string * * @return Date as String */ @Override public String toString() { return String.format("%04d-%02d-%02d", getYear(), getMonth(), getDay()); } /** * Converts Gregorian date to Persian(Jalali) date * * @param year * int * @param month * int * @param day * int */ public void GregorianToPersian(int year, int month, int day) { int jd = JG2JD(year, month, day, 0); JD2Jal(jd); this.year = jY; this.month = jM; this.day = jD; } /** * Converts Persian(Jalali) date to Gregorian date * * @param year * int * @param month * int * @param day * int */ public void PersianToGregorian(int year, int month, int day) { int jd = Jal2JD(year, month, day); JD2JG(jd, 0); this.year = gY; this.month = gM; this.day = gD; } /** * Get manipulated day * * @return Day as int */ public int getDay() { return day; } /** * Get manipulated month * * @return Month as int */ public int getMonth() { return month; } /** * Get manipulated year * * @return Year as int */ public int getYear() { return year; } } فراخوانی: 1-برای فراخوانی و استفاده از این کلاس کافیست ابتدا از آن یک شی جدید بسازید ، سپس تاریخ ها را وارد نمایید تا خروجی را براساس داده های وارد شده برگرداند. Roozh jCal = new Roozh(); 2- در مرحله بعدی باید تعیین نماییم قصد داریم چه تاریخی را تبدیل نماییم.این کلاس دارای دو تابع بدین صورت میباشد. 1-)تبدیل تاریخ شمسی به میلادی: jCal.PersianToGregorian(Year,Month,Day); 2-)تبدیل تاریخ میلادی به شمسی: jCal.GregorianToPersian(m_year, m_Month, m_day); نکته:مقدار ورودی برای پارامترهای این توابع باید بصورت Int باشد 3-خروجی: برای نمایش و بدست آوردن خروجی از این کلاس کافیست فقط از دستور زیر استفاده کنید: jCal.toString(); convertDB.pdf convertDB.pdf
  12. شما باید Dependency Appcompat خود را بروز نمایید
  13. مقاله آپدیت شد
  14. کتابخانه Lottie در اندروید آیا همیشه نمایش انیمیش برای شما یک دغدغه بوده؟ چجوری انیمیشن های حرفه ای رو در اندروید نمایش دهیم؟؟ راه حل اینجاس ؟ Lottie کتابخانه Lottie در اندروید این امکان را فراهم می آورد که انیمیشن های افکتر افکت را با خروجی json نمایش دهید که باعث میشود حجم اپلیکیشن بسیار پایین باشد و از سرعت نیز به مشکلی برخورد نکنید لینک اصلی کتابخانه https://github.com/airbnb/lottie-android دانلود Dependency compile 'com.airbnb.android:lottie:2.5.0-rc1' دانلود کتابخانه از سرور انجمن اندروید ایران lottie-android-master.zip
  15. خب برای اینکار شما با سرویس BroadCastReciver متن پیغام از میگیرد و میتوند با یک interface دیتارو به داخل ویجت EditText بفرستید و یا استفاده از کتابخانه EventBus
  16. شما با استفاده از SurfaceView اینکار را میتوانید انجام دهید public class VideoServer extends Activity implements SurfaceHolder.Callback { TextView testView; Camera camera; SurfaceView surfaceView; SurfaceHolder surfaceHolder; PictureCallback rawCallback; ShutterCallback shutterCallback; PictureCallback jpegCallback; private final String tag = "VideoServer"; Button start, stop, capture; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); start = (Button)findViewById(R.id.btn_start); start.setOnClickListener(new Button.OnClickListener() { public void onClick(View arg0) { start_camera(); } }); stop = (Button)findViewById(R.id.btn_stop); capture = (Button) findViewById(R.id.capture); stop.setOnClickListener(new Button.OnClickListener() { public void onClick(View arg0) { stop_camera(); } }); capture.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub captureImage(); } }); surfaceView = (SurfaceView)findViewById(R.id.surfaceView1); surfaceHolder = surfaceView.getHolder(); surfaceHolder.addCallback(this); surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); rawCallback = new PictureCallback() { public void onPictureTaken(byte[] data, Camera camera) { Log.d("Log", "onPictureTaken - raw"); } }; /** Handles data for jpeg picture */ shutterCallback = new ShutterCallback() { public void onShutter() { Log.i("Log", "onShutter'd"); } }; jpegCallback = new PictureCallback() { public void onPictureTaken(byte[] data, Camera camera) { FileOutputStream outStream = null; try { outStream = new FileOutputStream(String.format( "/sdcard/%d.jpg", System.currentTimeMillis())); outStream.write(data); outStream.close(); Log.d("Log", "onPictureTaken - wrote bytes: " + data.length); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { } Log.d("Log", "onPictureTaken - jpeg"); } }; } private void captureImage() { // TODO Auto-generated method stub camera.takePicture(shutterCallback, rawCallback, jpegCallback); } private void start_camera() { try{ camera = Camera.open(); }catch(RuntimeException e){ Log.e(tag, "init_camera: " + e); return; } Camera.Parameters param; param = camera.getParameters(); //modify parameter param.setPreviewFrameRate(20); param.setPreviewSize(176, 144); camera.setParameters(param); try { camera.setPreviewDisplay(surfaceHolder); camera.startPreview(); //camera.takePicture(shutter, raw, jpeg) } catch (Exception e) { Log.e(tag, "init_camera: " + e); return; } } private void stop_camera() { camera.stopPreview(); camera.release(); } public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) { // TODO Auto-generated method stub } public void surfaceCreated(SurfaceHolder holder) { // TODO Auto-generated method stub } public void surfaceDestroyed(SurfaceHolder holder) { // TODO Auto-generated method stub } }
  17. شما باید ابتدا شماره تلفن را از کاربر بگیرید و به سمت سرور انتقال دهید و سپس در سمت سرور از شرکت های سرویس دهنده sms یک api بگیرید و برای شماره مورد نظر یک پیغام را ارسال کنید. پیغام معمولا میتواند کد تایید باشد
  18. همون تب x86 Images کافیه و مرحله رو next بزنید .گزینه Nougat را انتخاب کنید
  19. لطفا یک اسکرین شات بزارید Gradle رو آنلاین کنید و sync کنید تا بروز شود sdk شما
  20. کتاب آموزشی Kotlin Language Documentation عنوان کتاب:Kotlin Language Documentation حجم:1.42 مگابایت نویسنده: Kotlin چرا این کتاب را بخونم: Kotlin provides the ability to target JavaScript. It does so by transpiling Kotlin to JavaScript. The current implementation targets ECMAScript 5.1 but there are plans to eventually target ECMAScript 2015 also. When you choose the JavaScript target, any Kotlin code that is part of the project as well as the standard library that ships with Kotlin is transpiled to JavaScript. However, this excludes the JDK and any JVM or Java framework or library used. Any file that is not Kotlin will be ignored during compilation. The Kotlin compiler tries to comply with the following goals: Provide output that is optimal in size Provide output that is readable JavaScript Provide interoperability with existing module systems Provide the same functionality in the standard library whether targeting JavaScript or the JVM (to the largest possible degree). You may want to compile Kotlin to JavaScript in the following scenarios: Creating Kotlin code that targets client-side JavaScript Interacting with DOM elements. Kotlin provides a series of statically typed interfaces to interact with the Document Object Model, allowing creation and update of DOM elements. Interacting with graphics such as WebGL. You can use Kotlin to create graphical elements on a web page using WebGL. Creating Kotlin code that targets server-side JavaScript Working with server-side technology. You can use Kotlin to interact with server-side JavaScript such as node.js Kotlin can be used together with existing third-party libraries and frameworks, such as JQuery or ReactJS. To access third-party frameworks with a strongly-typed API, you can convert TypeScript definitions from the Definitely Typed type definitions repository to Kotlin using the ts2kt tool. Alternatively, you can use the dynamic type to access any framework without strong typing. Kotlin is also compatible with CommonJS, AMD and UMD, making interaction with different module systems straightforward. To find out how to start using Kotlin for JavaScript, please refer to the tutorials. دانلود کتاب kotlin-docs.pdf
  21. شما میتوانید بدیت صورت کار کنید <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/sub_screens_aus_hl" android:state_pressed="true"/> <item android:drawable="@drawable/sub_screens_aus" android:state_checked="true"/> <item android:drawable="@drawable/sub_screens_aus" android:state_focused="true" /> <item android:drawable="@drawable/sub_screens_aus_dis" /> </selector> و سپس <RadioButton android:button="@drawable/aus" android:layout_height="120dp" android:layout_width="wrap_content" />
  22. از سرویس خاصی استفاده کرده اید ؟ کتابخونه ای را اضاافه کرده اید که این خطا اتفاق می افتد ؟
  23. میتونید یکبار که کدهارو گرفته یک کپی ازش بگیرید و دفعات بعد از آن فایل استفاده کنید
  24. سلام لطفا JDK8 را نصب کنید