جستجو در انجمن

در حال نمایش نتایج برای برچسب های 'آموزش برنامه نویسی اندروید'.



تنظیمات بیشتر جستجو

  • جستجو بر اساس برچسب

    برچسب ها را با , از یکدیگر جدا نمایید.
  • جستجو بر اساس نویسنده

نوع محتوا


برنامه نویسی اندروید | آموزش برنامه نویسی اندروید | آموزش اندروید

  • اندروید
    • ابزار های برنامه نویسی اندروید
    • آموزش برنامه نویسی اندروید
    • رفع مشکلات و سوالات
    • امنیت در اندروید
    • پروژه های اندروید
  • پشتیبانی اندروید
    • اندروید Lollipop
    • اندروید marshmallow
    • اندروید nougat
    • اندروید Oreo
  • کاتلین (Kotlin)
    • آموزش های برنامه نویسی Kotlin
    • سوالات و رفع مشکلات Kotlin
  • مباحث مرتبط با اندروید
    • ابزارها و سایتهای مفید
    • گرافیک موبایل
    • آموزش های ویدئویی
    • برنامه نویسی جاوا
  • تکنولوژی های اندروید
    • وب موبایل
    • توسعه اندروید با #C
    • توسعه اندروید با Basic4Android
  • متفرقه
    • اپلیکیش های ایرانی
    • برنامه نویسی
    • درخواست همکاری
    • مباحث متفرقه
    • مهارتهای فروش و بازاریابی
  • پشتیبانی محصولات مارکت
    • پرسش و پاسخ مرتبط با مارکت انجمن اندروید ایران
    • پشتیبانی مارکت پروژه های اندروید
    • پشتیبانی مارکت آموزش اندروید
    • پشتیبانی مارکت گرافیک موبایل
  • انجمن اندروید ایران
    • اخبار و اعلانات
    • صندوق پيشنهادات و انتقادات
    • تازه‌های دنیای کامپیوتر و فناوری
    • قوانین انجمن تخصصی اندروید ایران

دسته ها

  • پروژه اندروید
    • سورس پروژه اندروید
    • کامپوننت های اندروید
    • کتابخانه های اندروید
  • آموزش اندروید
    • فیلم آموزشی کاربردی
    • مقالات آموزشی اندروید
  • گرافیک موبایل
    • قالب طراحی اپلیکیشن
  • اپلیکیشن های اندروید
    • کاربردی
    • کسب و کار
    • آموزش
    • کتاب‌ها و منابع
    • ویدئو و رسانه
    • بازی‌

تقویم ها

  • Community Calendar

160 نتیجه پیدا شد

  1. Spinner یکی از ویجت های کاربردی و پراستفاده در برنامه های اندرویدی میباشد و بصورت یک منوی بازشونده عمل میکند که میتوانید یک یا چند آیتم را انتخاب کنید. به روش های مختلف میتوانید در Spinner آیتم اضافه کنید مثلا ارایه،xml ،دیتابیس ,..... میتوانید ویجت خود را کنترل نمایید در این تاپیک کلیه روش ها مورد استفاده قرار میگیرند.برای شروع از آرایه استفاده میکنیم 1-لود کردن آرایه در Spinner : ابتدا باید در XML آن را تعریف کنیم: <?xml version="1.0" encoding="utf-8"?> <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <Spinner android:id="@+id/spinner1" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout> سپس در اکتیویتی خود باید لیستی را تعریف کرده و در Adapter قرار دهیم: Spinner spinner1 = (Spinner) findViewById(R.id.spinner2); List list = new ArrayList(); list.add("Android"); list.add("BADA"); list.add("Tizen"); ArrayAdapter dataAdapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, list); dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner1.setAdapter(dataAdapter);
  2. برای شروع برنامه نویسی اندروید ، به نرم افزاهایی نیاز داریم که بسته به سیستم عامل خود با نسخه مربوطه را نصب کنید،تا برنامه نویسی &nbsp;اندروید را شروع کنیم. 1-جاوا : ابتدا باید جاوا JDK 8 را روی سیستم خود نصب کنید.برای دانلود جاوا به سایت جاوا مراجعه نمایید و آن را دانلود کنید. برای اینکه مطمئن شوید که جاوا بدرستی روی سیستم نصب شده است.میتوانید دستور زیر را در cmd وارد نمایید: Java -version 2-IDE(محیط برنامه نویسی) : برای اینکه برنامه نویسی به اندروید را شروع کنیم،باید IDE موردنیاز را تهیه نماید.پیشنهاد گوگل نرم افزار رایگان اندروید استودیو میباشد،که از سایت اصلی اندروید میتوانید دریافت نمایید. https://developer.android.com/studio/index.html 3-SDK اندروید : برای دانلود SDK اندروید میتوانید از سایت خود اندروید آن را دانلود نمایید،اما به علت تحریم بودن برای ایران،به راحتی نمی توانید دانلود نمایید.برای دانلود میتوانید به نسخه های که در نت موجود میباشد، میتوانید استفاده نمایید
  3. سلام من میخوام یک قسمت برای سکه برای کاربران درست کنم که با انجام کاری یا زدن روی دکمه ای اون عدد زیاد بشه این تیکه کدشو کسی داره؟ و باید برای باز کردن قفل یک قسمت یک مقدار ثابتی سکه داشته باشه مثلا ۵۰تا سکه باید داشته باشه تا به اون قسمت دست رسی داشته باشه من باید آموزش این نوع قسمتارو کجا ببینم یا اگه میشه همینجا کامل راهنمایی کنید ممنون میشم.
  4. اجرای اولین پروژه اندروید ابتدا برنامه Android studio رو باز کنید، سپس مراحل زیر رو انجام بدید : 1- از منوی فایل گزینه New و سپس Android Project را انتخاب کنید 2-در کادر ظاهر شده ابتدا نام پروژه خود را بنویسید بعد گزینه Next را انتخاب کنید 3- در کادر بعدی باید حدهاق API را انتخاب کنید. در این باید تعیین کنید که این برنامه رو قصد دارید برای چه نسخه ای از اندروید بنویسید . بیشتر گوشی های در حال حاضر اندروید 2.3.3 را دارند. هر چند میتوانید هر کدام را که خواستی انتخاب کنید در مرحله آخر نیز باید در قسمت ApplicatonName همان نام اولیه داده شده را که وارد کردید وارد کنید در قسمت PackageName : باید نام پکیج اصلی برنامه رو بنویسید که باید حتما از سه قسمت تشکیل شده باشند و با نقطه از هم جدا میشوند در قسمت Create Activity : نام اکیتیویتی اصلی برنامه رو باید وارد کنید(در حین نوشتن برنامه میتوانید آن را تغییر دهید) در این مرحله اسم اکتیویتی و لایوت شروع کننده برنامه را وارد کنید و سپس گزینه finish را انتخاب کنید ورود به محیط اندروید استودیو در این حالت اندروید استودیو در حال ساخت پروژه اندروید میباشد
  5. انجمن اندروید ایران با همکاری فرانش برگزار میکند: تاریخ برگزاری : 3 آبان 1395 مدرس : فرزاد سرسیفی مکان: مصلی تهرانی،غرفه فرانش عنوان درسی : امنیت در اندروید "شرکت برای عموم رایگان میباشد" با سپاس فراوان فرزاد سرسیفی
  6. با سلام خدمت همه کاربران و مدیران انجمن p30droid این اولین پست منه و خیلی علاقه مند به یادگیری برنامه نویسی اندروید دارم ، (رایگان / پولی) درخواستی که از عزیزان دارم اگه لطف کنید پاسخ کاملی بدین ممنون میشم من تقریبا طراحی سایت بلدم و درصد یادگیریم بد نیست ، میخواستم بدون بهترین برنامه برای استارت کارم اندروید استودیو هست ؟ دنبال آموزشی کامل هستم (رایگان یا پولی فرقی نداره) فقط مدیران یا کاربران تایید کنن ، آموزشی همراه با ساخت یک پروژه از 0 تا 100 تشکر
  7. آیا تا به حال شده که بعد از ارائه اپلیکشن پیغامهایی از طرف کاربران دریافت کنید که ناشی از بسته شدن اپ در حین کار باشه؟ در اینگونه مواقع علاوه بر زمانبر بودن پیدا کردن خطا، شاهد ریزش شدید کاربران اپ خواهید بود. پس بهتر است قبل از ارائه اپ در بازار یا Google Play تمهیداتی را برای اطلاع از پیغامهای احتمالی در نظر بگیرید. یکی از ابزارهای بسیار مفید استفاده کردن از کتبخانه هایی هست مه برای انجام این کار در نظر گرفته شده است، به عنوان مثال کتابخانه ACRA این کار را با ارسال ایمیل برای شما به راحتی انجام میدهد. استفاده کردن از این کتابخانه بسیار راحت هست. در قدم اول باید کتابخانه ACRA را به عنوان dependency به build.gradle اضافه کنید: compile 'ch.acra:acra:4.9.2' در قدم بعدی کلاس Application را بسازید و متدهای مربوطه برای ACRA را در آن پیاده سازی کنید: @ReportsCrashes( formUri = "", mailTo = "yourmail@yourdomain.com", customReportContent = { ReportField.APP_VERSION_CODE, ReportField.APP_VERSION_NAME, ReportField.ANDROID_VERSION, ReportField.PHONE_MODEL, ReportField.BRAND, ReportField.CUSTOM_DATA, ReportField.INITIAL_CONFIGURATION, ReportField.CRASH_CONFIGURATION, ReportField.USER_CRASH_DATE, ReportField.STACK_TRACE, ReportField.LOGCAT}, resToastText = R.string.crash_toast_text, mode = ReportingInteractionMode.TOAST) public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); ACRA.init(this); } } در بخش ReportField همانطور که میبینید، اطلاعاتی که قرار است به ایمیلتان ارسال گردد را وارد میکنیم. در قدم آخر فایل Manifest را باز کرده و دسترسی های مربوطه و همچنین کلاس Application را در تگ application وارد کنید: <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.acrademo"> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.READ_LOGS" /> <application android:name=".MyApplication" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> برای تست عملکرد کدها، یک دکمه بسازید و سپس کدهایی را برای آن وارد کنید که باعث کرش شدن اپ گردد... public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void onCrash(View view){ throw new RuntimeException("App Crashed"); } } منبع: www.asifmoinulislam.com
  8. سلام در این بخش آموزشی ظبط کردم که به وسیله ان می توانید یک تایید موبایل مانند واتساپ ایجاد کنید من سعی کردم آموزش کامل روان و ساده باشه برای همین از جملات سخت و غییر قابل درک استفاده نکرده ام این آموزش به وسیله کتاب خانه رتروفیت می باشد در سمت سرور من از دیتا بیس استفاده نکردم شما میتوانید به راحتی از ان استفاده کنید امید وارم آموزش مفید و کاربردی باشد لینک دانلود : دانلود
  9. برای ارسال اطلاعات از یک اکتیوینی دیگر باید بدین روش اعمال کنیم،مثلا وقتی روی دکمه ای کلیک شد ، به صفحه مورد نظر رفته و اطلاعات همراه با آن intent فرستاده میشود. در این نمونه مثال دو مقدار url و name که رشته ای هستند برای صفحه بعد فرستاده میشود Intent i = new Intent(getApplicationContext(), list.class); i.putExtra("url", txt_url.getText()); i.putExtra("name", txt_name.getText()); startActivity(i); سپس باید در صفحه وارد شده مقداری که ارسال شده است را بگیریم : Bundle extras = getIntent().getExtras(); if (extras != null) { _url = extras.getStringurl _name = extras.getString("name");}
  10. سلام یه مشکلی دارم خیلی وقته گیرشم لطفا کسی اگر آشناست به این قضیه کمک کنه. زمانی که کد رنگ رو تو RelativeLayout مینوسم eror میده و یا یه پوشه از drawable میزارم اما Linear اینطور نیست و مشکلی نداره. یه عکس گذاشتم اونی که خط قرمز زیرش کشیده.....ممنون از شما
  11. دانلود کتاب Android Development with Kotlin امروزه روند توسعه نرم افزار اندروید بسیار گسترده شده است. در طول چند سال اخیر، ما شاهد چگونگی پیشرفت ابزارهای مختلفی هستیم تا زندگی ما را ساده‌تر کند. با این حال، یکی از عناصر اصلی فرآیند توسعه نرم افزار اندروید یعنی جاوا در طول این مدت تغییر زیادی نکرده است. پلتفرم اندروید خود را با نسخه‌های جدیدتر جاوا سازگار می‌کند، ولی برای استفاده از آن ها، ما باید مدت زمان بسیار زیادی را صبر کنیم تا دستگاه‌های جدید اندرویدی به فروش مناسب بازار دست یابند. همچنین، توسعه برنامه‌ها با جاوا چالش‌های خود را به همراه دارد، چرا که جاوا زبانی قدیمی با بسیاری از مشکلات طراحی است که به واسطه محدودیت‌های سازگاری با نسخه‌های قدیمی، نمی‌توانند به سادگی حل شوند. از سویی دیگر Kotlin، زبانی جدید ولی پایدار است که بر روی همه‌ی دستگاه‌های اندرویدی اجرا می‌شود و بسیاری از مشکلاتی که جاوا قادر به حل آن نبود را حل می‌کند. Kotlin زبان فوق العاده ای است که زندگی توسعه دهنده را بسیار راحت‌تر می‌کند و اجازه می‌دهد تا کد امن تر، بیان گر‌تر و خلاصه‌تر ایجاد شود. کتاب توسعه اندروید با Kotlin، راهنمایی عملی است که به شما کمک می‌کند تا با استفاده از زبان Kotlin، روند توسعه اندروید را بهبود داده و به آن سرعت بخشید. ما میان برها و پیشرفت‌های زیاد نسبت به جاوا و راه‌های جدیدی حل مسائل رایج را ارائه دادیم. در پایان این کتاب، شما با ویژگی‌ها و ابزار‌های Kotlin آشنا خواهید شد و شما قادر خواهید بود که برنامه ای اندرویدی را با کاملا با Kotlin توسعه دهید. What You Will Learn Run a Kotlin application and understand the integration with Android Studio Incorporate Kotlin into new/existing Android Java based project Learn about Kotlin type system to deal with null safety and immutability Define various types of classes and deal with properties Define collections and transform them in functional way Define extensions, new behaviours to existing libraries and Android framework classes Use generic type variance modifiers to define subtyping relationship between generic types Build a sample application Table of Contents 1: BEGINNING YOUR KOTLIN ADVENTURE 2: LAYING A FOUNDATION 3: PLAYING WITH FUNCTIONS 4: CLASSES AND OBJECTS 5: FUNCTIONS AS FIRST-CLASS CITIZENS 6: GENERICS ARE YOUR FRIENDS 7: EXTENSION FUNCTIONS AND PROPERTIES 8: DELEGATES 9: MAKING YOUR MARVEL GALLERY APPLICATION دانلود Packt.Android.Development.with.Kotlin.epub
  12. همچنان میدانید در بخش اول دیتابیس به توضیفی از 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 چاپ میکند
  13. در این پست آموزشی قصد داریم نحوه تبدیلات تاریخ(شمسی،میلادی) را مورد بررسی قرار دهیم تا بتوانیم این امکان را در پیاده سازی نماییم. برای اینکار یک کلاسی را استفاده میکنیم که مدیر وب سایت 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
  14. به مناسبت دومین سالگرد انجمن برنامه نویسی اندروید پی سی دروید،آموزش گام به گام برنامه نویسی اندروید از پایه را آماده کرده ایم امید است بتوانیم سهمی کوچک در پیشرفت تمامی کاربران گرامی انجمن پی سی دروید را داشته باشیم. این فایل آموزشی در 80 صفحه و پنج فصل تدوین شده است سرفصل ها: معماری و ساختار سیستم عامل اندروید آموزش زبان جاوا Layout در اندروید آموزش کاربردی برنامه نویسی اندروید مارکتینگ اندروید لینک دانلود: http://p30droid.com/Uploader/do.php?id=528 با احترام فرزاد سرسیفی مدیر انجمن برنامه نویسی اندروید p30droid.com
  15. تا به حال نرم افزار های زیادی از قبیل توییتر(twitter) , گوگل پلاس (+google) , جیمیل (gmail) را در اندروید دیده‌ایم که باswipe/pull down ( کشیدن صفحه به سمت پایین) محتوای خود را بروز میکنند . زمانی که صفحه را از بالا به پایین میکشیم یک محتوای جدیدی به ما نشان داده می‌شود یا اینکه محتوای قبلی بروزرسانی خواهد شد. در این آموزش میخواهیم کار با SwipeRefreshLayout را آموزش دهیم. این لایه به ما کمک می‌کند که طراحی اصولی (material designn) و کاربر پسندی را در برنامه های خود داشته باشیم. در یک آموزش مختصر با ما باشید تا به طور ساده با نحوه کار SwipeRefreshLayout (کشیدن صفحه به سمت پایین) آشنا شویم. این مثال نحوه ی Refresh(تازه سازی) کردن صفحه با استفاده از SwipeRefreshLayout را به شما نشان میدهد.مراحل را طبق زیر دنبال کنید. 1-با استفاده ار اندروید استودیو یک پروژه ی جدید با نام Swipe تحت بسته ی com.example.Swipeایجاد کنید. نحوه ی ایجاد پروژه ی جدید در بخش آموزشی ساخت اولین پروژه در اندروید استودیو توضیح داده شده است. 2- محتوای فایل res/layout/activity_main.xml را مانند آنچه در ادامه آمده است تغییر دهید. 3-محتوای فایل اکتیویتی اصلی java/com.example.sendemail/MainActivity.java را به منظور اجرای کدهای دلخواه پس از انجام عمل swipe/pull downn (کشیدن صفحه به سمت پایین)مانند آنچه در ادامه آمده است تغییر دهید. محتوای زیر مربوط به فایل res/layout/activity_main.xml می باشد. <?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/mySwipe" android:layout_width="match_parent" android:layout_height="match_parent" > <!-- کد خود را اینجا وارد کنید--> </android.support.v4.widget.SwipeRefreshLayout> این لایه(بالا) از کتابخانه‌ی زیر است. android.support.v4.widget در کد بالا ما لایه‌ی SwipeRefreshLayout را به عنوان لایه‌ی والد یا ریشه استفاده کرده ایم و درون آن می‌توانیم لایه ها و عناصر دیگر را به کار ببریم.به عنوان مثال میتوان به صورت زیر نوشت. <?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/mySwipe" android:layout_width="match_parent" android:layout_height="match_parent" > <ScrollView android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:text="من یک متن هستم" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="16dp" android:gravity="center"/> </ScrollView> </android.support.v4.widget.SwipeRefreshLayout> معمولا درون این لایه یک recyclerView یا listView به کار می‌رود که در صورت تازه سازی (refresh) مقادیر آیتم ها دچار تغییر شوند(آیتم جدیدی وارد لیست شده یا از آن حذف شود). همچنین این لایه می‌تواند به عنوان یک لایه ی فرزند ظاهر شود. حالا نوبت این است که در اکتیویتی (activity) خود این لایه را وصل کنیم و از آن استفاده کنیم.در زیر محتوای فایل java/com.example.location/MainActivity.java آورده شده است. package com.example.Swipe; import android.os.Bundle; import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { SwipeRefreshLayout mySwipe; @Override protected void onCreate(Bundle savedInstanceState) { ;( super.onCreate(savedInstanceState ;( setContentView(R.layout.activity_main ;( mySwipe = (SwipeRefreshLayout) findViewById(R.id.mySwipe () mySwipe.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener { @Override () public void onRefresh{ //اعمالی را که میخواهیم هنگام تازه سازی انجام شود ;( mySwipe.setRefreshing(false } ;({ } } داخل کد بالا ما با صدا زدن متد setOnRefreshListener با ورودی رابط (interface) OnRefreshListener می‌توان متد onRefresh را بازنویسی (override) کرده و داخل آن هر عملی که برای تازه سازی لازم است انجام داد. برای مثال زمانی که ما برنامه ای متصل به اینترنت داریم و میخواهیم با swipe کردن مقادیر را بروزرسانی کنیم در متد onRefresh میتوانیم وضعیت اتصال به اینترنت را چک کنیم و اگر متصل بود دیتا را از اینترنت دریافت کرده و مقادیر محتوای صفحه را بروزرسانی کنیم. در اخر کد با نوشتن mySwipe.setRefreshing(false) انیمیشن ایجاد شده را متوقف میکنیم.اگر در جایی از برنامه بخواهیم خاصیت swipe pull down و انیمیشن را غیر فعال کنیم میتوانیم از دستور setEnabled(false) استفاده کنیم.
  16. دوازدهمین دوره آموزشی برنامه نویسی اندروید(پیشرفته) دوره برنامه نویسی اندروید یکی از جذاب ترین دوره های آموزشی میباشد که مخاطبان دوره میتوانند در این دوره اصول طراحی اپلیکیشن های تحت اندروید را طراحی و پیاده سازی نموده و شروع به کسب درآمد در حوزه اپلیکیشن های موبایل نمایند.کاربران این دوره میتوانند با کسب مهارت های مطرح شده در سرفصلهای دوره گام بزرگ و سریعی جهت ورود به بازار اپلیکیشن های اندرویدی برداشته و با انتشار برنامه های طراحی شده خود در فضای مجاری کسب درآمد کنند.هم اینک ده ها هزار نرم افزار تحت موبایل در فضای اینترنتی منتشر شده که تعداد بی شماری از این نرم افزارها با دانلود های حیرت آور منبع درآمدهای چندین میلیونی برای طراح خود بوده اند.اگر قصد ورود به بازار نرم افزارهای موبایل دارید هم اینک در دروه آموزشی برنامه نویسی اندروید شرکت کنید. اهداف کلی این دوره: پیاده سازی ORM دیتابیس سرویس های Background در اندروید آشنایی با کتابخانه های مفید و پرکاربرد اندروید آشنایی با Fragment پیاده سازی وب سرویس پیاده سازی Api های گوگل پیاده سازی FireBase در اندروید پیاده سازی Push Notification در اندروید تست اپلیکیشن Junit و Espresso مهندسی معکول و خروجی نهایی اپلیکیشن ثبت نام دوره اندروید مشخصات دوره : مدرس (مدرسان) : فرزاد سرسیفی پیشنیاز: آشنایی با مفاهیم برنامه نویسی - آشنایی با زبان جاوا مدت زمان دوره: 10 جلسه ( کارگاه کاملا عملی تحت پروژه) به صورت کارگاهی (در مجموع 40 ساعت)(10 نفر) تاریخ برگزاری: (دوره از 12 آبان ماه 1396 به مدت 10 جلسه - روزهای جمعه 14 الی 18) مدرک: در پایان دوره مدرک پایان دوره از طرف انستیتو آموزشگاه اندروید ایران ارائه میگردد. سه دانشجو نمونه اول به شرکت های معروف ایرانی جهت همکاری معرفی می گردند. به دانشجویانی که در دوره های قبلی آموزشگاه اندروید ایران حضور داشتند 20 درصد تخفیف داده خواهد شد به شرکت کنندگان در دوره کد ویژه خرید محصولات شاپ دروید داده می شود و می توانند برای همیشه محصولات این فروشگاه را با تخفیف 50 درصدی تهیه کنند. ویژگی : آموزش در لابراتوار مجهز به سیستم های روز به صورت شبکه تحت NetSupport و متصل به اینترنت و کاملا اینتراکتیو تحت پروژه عملی انجام خواهد گرفت. مکان برگزاری : این دوره آموزشی با همکاری آموزشگاه ویستا برگزار خواهد شد راهنمای ثبت نام: جهت کسب هر نوع اطلاعاتی در خصوص دوره میتوانید با ایمیل info@android-learn.ir وشماره های تماس ۸۸۵۰۸۰۸۰ -۸۸۵۵۴۲۱۷ -۸۸۵۵۴۲۱۳ تلگرام همراه 09100046764 تماس حاصل نمایید. ثبت نام دوره اندروید سرفصلهای دوره آموزشی برنامه نویسی اندروید پیشرفته به صورت کاملا عملی: پردازش های پس زمینه ای سرویس های پس زمینه Service BroadCastReciver AlramManager ذخیره سازی اطلاعات با دیتابیس SQLite ORM و realm آشنایی با ORM های استفاده از Sugar ORM آموزش و پیاده سازی دیتابیس Realm در اندروید Notification در اندروید پیاده سازی Notification در اندروید Notification های سفارشی طراحی واسط کاربری برای Notification آشنایی با Pending Intent پیاده سازی Push Notification با استفاد از OneSignal Firebase Firebase امکانات Firebase در اندروید پیاده سازی Register و Login در Firebase پیاده سازی Push Notification Crash Reporting وب سرویس ها در اندروید آشنایی با وب سرویس JSON آشنایی با JSON Array آشنایی با JSON Object آشنایی با Retrofit دریافت اطلاعات وب سرویس Retrofit ارسال اطلاعات به سرور Retrofit Image Loader Gson,Jackson json parsing پیاده سازی MVP Pattern در اندروید مفهوم Pattern در برنامه نویسی انواع Pattern های رایج در برنامه نویسی اندروید آشنایی با MVP Pattern در اندروید پیاده سازی MVP در اندروید پیاده سازی Dependency Injection در اندروید مفهوم Dependency Injection در برنامه نویسی انواع کتابخانه های رایج در DI برنامه نویسی اندروید آشنایی با کتابخانه Dagger 2 آشنایی با تغییرات اندرویدM و N Shade Animation CordinatorLayout Permission in Android 6 آشنایی با Kotlin معرفی kotlin پیاده سازی kotlin در اندروید استودیو ایجاد App Widgets برای اپلیکیشن معرفی widget در اندروید هدف از پیاده سازی App widgets در اندروید ارتباط بین App Widgets و اپلیکیشن پیاده سازی App Widgets در اپلیکیشن ایجاد کتابخانه در اندروید معرفی مفهوم کتابخانه در اندروید انواع کتابخانه های قابل پشتیبانی در اندروید ایجاد کتابخانه در اندروید Import کردن کتابخانه به پروژه و استفاده از آن Flavor در اندروید استودیو آشنایی با flavor در اندروید استودیو ایجاد چند خروجی از اپلکیشن ایجاد خروجی های free,purchase,paid برای اپلیکیشن Testing اپلیکیشن آشنایی با مفهوم Test در مهندسی نرم افزار آشنایی با کتابخانه Junit آشنایی با کتابخانه Espresso در Test Driven Android اندروید خروجی اندروید ایجاد کلید Sign در اندروید مهندسی معکوس اپلیکیشن های اندروید آشنایی با Proguard در اندروید انتشار اپلیکیشن در گوگل پلی این دوره توصیه میشود به : اشخاصی كه علاقه مند به آشنایی و كار حرفه ای با اندروید هستند. اشخاصی كه قصد فراگیری كامل طراحی اپلیکیشن های موبایل از ابتدا توسط اندروید دارند. اشخاصی كه قصد راه اندازی اپلیکیشن موبایل شخصی خود توسط اندروید دارند. اشخاصی كه میخواهند با فراگیری حرفه ای شروع به كسب درآمد نموده و به عنوان توسعه دهنده اندروید فعالیت كنند. شركتها و سازمانهایی كه قصد راه اندازی اپلیکیشن موبایل اندروید اختصاصی خود را دارند. دانشجویان رشته های كامپیوتر كه قصد فراگیری كامل توسعه اپلیکیشن های اندروید دارند. اشخاصی كه قصد پیاده سازی ایده های اپلیکیشن های موبایل را در قالب اندروید دارند. اشخاصی كه قصد دارند وب سایت خود را به اپلیکیشن های موبایل اندروید تبدیل كنند. و... ثبت نام دوره اندروید
  17. سلام دوستان توی این تاپیک بهترین کتاب های آموزش اندروید رو میزارم البته از نظر خودم PROFESSIONAL ANDROID™ 4 APPLICATION DEVELOPMENT دانلود: https://it-ebooks.info/book/718 این کتاب 868 صفحه داره و حجمش 27 مگه ولی ارزش دانلود رو داره و البته به زبان انگلیسی فهرست مطالبش رو میزارم تا با سرچ کردن تو انجمن بشه این کتاب رو پیدا کرد Hello, Android Getting Started Creating Applications and Activities Building User Interfaces Intents and Broadcast Receivers Using Internet Resources Files, Saving State, and Preferences Databases and Content Providers Working in the Background Expanding the User Experience Advanced User Experience Hardware Sensors Maps, Geocoding, and Location-Based Services Invading the Home Screen Audio, Video, and Using the Bluetooth, NFC, Networks, and Wi-Fi Telephony and SMS Advanced Android Development Monetizing, Promoting, and Distributing Application
  18. با سلام خدمت دوستان عزیز خیلی از دوستان رو دیدم که تلاش میکردن سورس تلگرام را بدون خطا اجرا کنند ولی با مشکل برخورد میکردند تصمیم گرفتم این فیلم آموزشی رو ظبط کنم و برای یاد گیری عزیزان روی سایت قرار بدم با این ففیلم آموزشی شما میتوانید بدون هیچ مشکلی سورس تلگرام را بر روی شبیه ساز و هر نوع گوشی دیگری اجرا کنید آموزش پولی هستش که رایگان شده توسط صاحب آموزش لینک دانلود :دانلود TelegramSource_errors.mp4
  19. ویجت یک برنامه ی کوچک و یا یک کنترل از برنامه ی اندروید شما می باشد که در صفحه ی home قرار گرفته است. ویجت ها می توانند به راحتی در دسترس باشند، چرا که به شما اجازه می دهند تا برنامه های مورد علاقه ی خود را روی صفحه home قرار دهید تا به سرعت به آنها دسترسی داشته باشید. احتمالا چند ویجت متداول از جمله ویجت موسیقی، آب و هوا و ساعت، را دیده اید. ویجت ها می توانند انواع مختلفی داشته باشند از قبیل ویجت اطلاعات، ویجت های مجموعه، ویجت های کنترل و ویجت های چندگانه. اندروید یک چارچوب کامل به ما ارائه می دهد تا ویجت های خود را گسترش دهیم. Widget - XML file برای ایجاد یک ویجت کاربردی، ابتدا چیزی که نیاز دارید، شی Object AppWidgetProviderInfo است که شما در یک فایل XML ویجت جداگانه تعریف می کنید. برای انجام این کار، بر روی پروژه خود راست کلیک کرده و یک پوشه جدید به نام xml ایجاد کنید. حالا روی پوشه تازه ایجاد شده راست کلیک کرده و یک فایل XML جدید ایجاد کنید. نوع منبع فایل XML باید به AppWidgetProvider تنظیم شود. در فایل xml برخی از خواص را به صورت زیر تعریف می کنید: <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" android:minWidth="146dp" android:updatePeriodMillis="0" android:minHeight="146dp" android:initialLayout="@layout/activity_main"> </appwidget-provider> Widget - Layout file حالا شما باید طرح ویجت خود را در فایل پیش فرض XML خود تعریف کنید. شما می توانید قطعات را برای تولید xml خودکار بکشید. Widget - Java file پس از تعریف طرح، در حال حاضر یک فایل JAVA جدید ایجاد کنید یا از موجود استفاده کنید و آن را با کلاس AppWidgetProvider گسترش دهید و روش بهروزرسانی آن را به صورت زیر تعریف کنید. در روش به روز رسانی، شما باید شیء دو کلاس را که PendingIntent و RemoteViews هستند تعریف کنید. نحو آن : PendingIntent pending = PendingIntent.getActivity(context, 0, intent, 0); RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.activity_main); Widget - Manifest file شما همچنین باید AppWidgetProvider را در فایل manifest خود به شرح زیر اعلام کنید: <receiver android:name="ExampleAppWidgetProvider" > <intent-filter> <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> </intent-filter> <meta-data android:name="android.appwidget.provider" android:resource="@xml/example_appwidget_info" /> </receiver> MainActivity.java package com.example.omidza.myapplication; import android.app.PendingIntent; import android.appwidget.AppWidgetManager; import android.appwidget.AppWidgetProvider; import android.content.Context; import android.content.Intent; import android.net.Uri; import android.widget.RemoteViews; import android.widget.Toast; public class MainActivity extends AppWidgetProvider{ public void onUpdate(Context context, AppWidgetManager appWidgetManager,int[] appWidgetIds) { for(int i=0; i<appWidgetIds.length; i++){ int currentWidgetId = appWidgetIds[i]; String url = "http://www.tutorialspoint.com"; Intent intent = new Intent(Intent.ACTION_VIEW); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setData(Uri.parse(url)); PendingIntent pending = PendingIntent.getActivity(context, 0,intent, 0); RemoteViews views = new RemoteViews(context.getPackageName(),R.layout.activity_main); views.setOnClickPendingIntent(R.id.button, pending); appWidgetManager.updateAppWidget(currentWidgetId,views); Toast.makeText(context, "widget added", Toast.LENGTH_SHORT).show(); } } } res/layout/activity_main.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity" android:transitionGroup="true"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Tutorials point" android:id="@+id/textView" android:layout_centerHorizontal="true" android:textColor="#ff3412ff" android:textSize="35dp" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Widget" android:id="@+id/button" android:layout_centerHorizontal="true" android:layout_marginTop="61dp" android:layout_below="@+id/textView" /> </RelativeLayout> res/xml/mywidget.xml. <?xml version="1.0" encoding="utf-8"?> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" android:minWidth="146dp" android:updatePeriodMillis="0" android:minHeight="146dp" android:initialLayout="@layout/activity_main"> </appwidget-provider> AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.omidza.myapplication" > <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <receiver android:name=".MainActivity"> <intent-filter> <action android:name="android.appwidget.action.APPWIDGET_UPDATE"></action> </intent-filter> <meta-data android:name="android.appwidget.provider" android:resource="@xml/mywidget"></meta-data> </receiver> </application> </manifest>
  20. سلام یه مدت پیش داشتم توی اینترنت گشت میزدم که به یک کتابخانه ای خیلی خوبی برخورد کردم که کار رو برای ارتباط با سرور بهتر از هر کتاب خانه ای راحت تر کرده اینجا آموزش این کتاب خانه رو به صورت متنی قرار خواهم داد ولی بعدا به صورت ویدئو در قالب یک پروژه کامل این کتاب خانه رو آموزش میدم. ویژگی های مهم این کتاب خانه جدا کردن متد های پست ، گت ، داشتن دانلود منیجر در خود کتاب خانه ، و هم چنین آپلود منیجر که این کتاب خونه رو از همه متمایز کرده و سرعت خوبی هم داره خب بریم سر آموزش اول مییایم به وسیله گردل کتاب خونه رو به پروژه اضافه میکنیم compile 'com.amitshekhar.android:android-networking:1.0.0' بعد به منی فیست دسترسی به اینترنت رو میدیم <uses-permission android:name="android.permission.INTERNET" /> بعد از اضافه شدن کتابخانه به پروژه و تعریف دسترسی حالا توی اکتیویتی که میخوایم عملیات ارسال و دریافت رو انجام بدیم اول میای کد زیر رو توی بخش OnCreate پروژه قرار میدیم تا کتابخانه اینشیالایز بشه AndroidNetworking.initialize(getApplicationContext()); بعد از این که کتابخانه آماده شد حالا میریم سراغ متد های ارسال و دریافت ابتدا متد GET AndroidNetworking.get("http://yourDomin.com/{pageNumber}") .addPathParameter("pageNumber", "0") .addQueryParameter("limit", "3") .addHeaders("token", "1234") .setTag("test") .setPriority(Priority.LOW) .build() .getAsJSONArray(new JSONArrayRequestListener() { @Override public void onResponse(JSONArray response) { // do anything with response } @Override public void onError(ANError error) { // handle error } }); بجای yourDomin.com باید ادرس دامنه و فایل رو قرار بدید مقادیر ارسالی رو در این سه بخش قرار میدیم .addPathParameter("pageNumber", "0") .addQueryParameter("limit", "3") .addHeaders("token", "1234") البته این سه پارامتر قابل اضافه شدن هستند حالا متد Post AndroidNetworking.post("http://yourDomin.com/createAnUser") .addBodyParameter("firstname", "Amit") .addBodyParameter("lastname", "Shekhar") .setTag("test") .setPriority(Priority.MEDIUM) .build() .getAsJSONObject(new JSONObjectRequestListener() { @Override public void onResponse(JSONObject response) { // do anything with response } @Override public void onError(ANError error) { // handle error } }); شما میتوانید مقادیر رو در پارمتر addBodyParameter قرار بدید البته شما میتونید اطلاعات رو به صورت یک فایل ، ابجکت و جیسون هم بفرستید در زیل سه نوع ارسال وجود دارد User user = new User(); user.firstname = "Amit"; user.lastname = "Shekhar"; AndroidNetworking.post("http://yourDomin.com/createUser") .addBodyParameter(user) // posting java object .setTag("test") .setPriority(Priority.MEDIUM) .build() .getAsJSONArray(new JSONArrayRequestListener() { @Override public void onResponse(JSONArray response) { // do anything with response } @Override public void onError(ANError error) { // handle error } }); JSONObject jsonObject = new JSONObject(); try { jsonObject.put("firstname", "Amit"); jsonObject.put("lastname", "Shekhar"); } catch (JSONException e) { e.printStackTrace(); } AndroidNetworking.post("hhttp://yourDomin.com/createUser") .addJSONObjectBody(jsonObject) // posting json .setTag("test") .setPriority(Priority.MEDIUM) .build() .getAsJSONArray(new JSONArrayRequestListener() { @Override public void onResponse(JSONArray response) { // do anything with response } @Override public void onError(ANError error) { // handle error } }); AndroidNetworking.post("http://yourDomin.com/postFile") .addFileBody(file) // posting any type of file .setTag("test") .setPriority(Priority.MEDIUM) .build() .getAsJSONObject(new JSONObjectRequestListener() { @Override public void onResponse(JSONObject response) { // do anything with response } @Override public void onError(ANError error) { // handle error } }); خوب مقادیر برگشتی در متد زیر به صورت یک جیسون ابجکت برگشت داده میشوند ( این متد در خود متد گت و پست هست ) .getAsJSONObject(new JSONObjectRequestListener() { @Override public void onResponse(JSONObject response) { // do anything with response } @Override public void onError(ANError error) { // handle error } }); در صورتی که جواب برگشت داده شد در onResponse به صورت جییسون ابجکت ذخیره میشود و اگر خطای رخ داد در متد onError برگشت داده میشود خب حالا اگر میخواید یک فایلی رو از ادرسی دانلود کنید میتونید از متد ذیل استفاده کنید AndroidNetworking.download(url,dirPath,fileName) .setTag("downloadTest") .setPriority(Priority.MEDIUM) .build() .setDownloadProgressListener(new DownloadProgressListener() { @Override public void onProgress(long bytesDownloaded, long totalBytes) { // do anything with progress } }) .startDownload(new DownloadListener() { @Override public void onDownloadComplete() { // do anything after completion } @Override public void onError(ANError error) { // handle error } }); url ادرس فایل dirPath ادرس محل ذخیره فایل fileName نمای که میخواید فایل بر روی دیوایس ذخیره بشه متد setDownloadProgressListener وضعیت دانلود رو برمیگردونه متد startDownload زمانی که دانلود شروع شد منتظر میشه که دانلود به پایان میرسه یا خیر که دو متد داره متد onDownloadComplete زمانی که دانلود به اتمام ریسدو فایل دانلود شد مقداریرو بر میگردونه و اگر خطای رخ داد توسط متد onError برگشت داده میشه برای آپلود میتونید از متد زیر استفاده کنید AndroidNetworking.upload(url) .addMultipartFile("image",file) .addMultipartParameter("key","value") .setTag("uploadTest") .setPriority(Priority.HIGH) .build() .setUploadProgressListener(new UploadProgressListener() { @Override public void onProgress(long bytesUploaded, long totalBytes) { // do anything with progress } }) .getAsJSONObject(new JSONObjectRequestListener() { @Override public void onResponse(JSONObject response) { // do anything with response } @Override public void onError(ANError error) { // handle error } }); فایل را به وسیله متد addMultipartFile میتوانید ارسال کنید نمایش تصویر به صورت مستقیم از اینترنت به وسیله این کتابخانه میتونید تصویری رو بدون نیزا به کتابخانه های مانند پیکاسو و گلید در ایمیج ویوی خود تابخانه نمایش بدید <com.androidnetworking.widget.ANImageView android:id="@+id/imageView" android:layout_width="100dp" android:layout_height="100dp" android:layout_gravity="center" /> imageView.setDefaultImageResId(R.drawable.default); imageView.setErrorImageResId(R.drawable.error); imageView.setImageUrl(imageUrl); گرفتن Bitmap از ادرس همراه با یکسری مقادیر AndroidNetworking.get(imageUrl) .setTag("imageRequestTag") .setPriority(Priority.MEDIUM) .setBitmapMaxHeight(100) .setBitmapMaxWidth(100) .setBitmapConfig(Bitmap.Config.ARGB_8888) .build() .getAsBitmap(new BitmapRequestListener() { @Override public void onResponse(Bitmap bitmap) { // do anything with bitmap } @Override public void onError(ANError error) { // handle error } }); خب تا اینجا متد های مهم این کتاتخانه رو گفتم البته متد های دیگری هم داره که ادرس مستقیم کتابخانه رو میزارم تا استفاده کنید https://github.com/amitshekhariitbhu/Fast-Android-Networking امید وارم که این کتابخانه و این آموزش مفید باشد
  21. دوره برنامه نویسی اندروید یکی از جذاب ترین دوره های آموزشی میباشد که مخاطبان دوره میتوانند در این دوره اصول طراحی اپلیکیشن های تحت اندروید را طراحی و پیاده سازی نموده و شروع به کسب درآمد در حوزه اپلیکیشن های موبایل نمایند.کاربران این دوره میتوانند با کسب مهارت های مطرح شده در سرفصلهای دوره گام بزرگ و سریعی جهت ورود به بازار اپلیکیشن های اندرویدی برداشته و با انتشار برنامه های طراحی شده خود در فضای مجاری کسب درآمد کنند.هم اینک ده ها هزار نرم افزار تحت موبایل در فضای اینترنتی منتشر شده که تعداد بی شماری از این نرم افزارها با دانلود های حیرت آور منبع درآمدهای چندین میلیونی برای طراح خود بوده اند.اگر قصد ورود به بازار نرم افزارهای موبایل دارید هم اینک در دروه آموزشی برنامه نویسی اندروید شرکت کنید. ثبت نام در دوره اهداف کلی این دوره: آموزش سیستم عامل اندروید آشنایی با UIاندروید، براساس XML اشنایی کامل با ساختار اندروید و پیاده سازی انواع اپلیکیشن پیاده سازی دیتابیس SQLite تسلط به وب سرویس های وب در اندروید آشنایی با فرگمنت طراحی برنامه برای دستگاه های اندرویدی توانایی ورود به بازار کار طراحی اپلیکیشن اندروید ثبت نام در دوره مشخصات دوره : مدرس (مدرسان) : فرزاد سرسیفی پیشنیاز: آشنایی با مفاهیم برنامه نویسی - آشنایی با زبان جاوا مدت زمان دوره: 9 جلسه ( کارگاه کاملا عملی تحت پروژه) به صورت کارگاهی (در مجموع 36 ساعت)(ظرفیت 10 نفر) تاریخ برگزاری: (دوره از 6 شهریور ماه 1396 به مدت 9 جلسه - روزهای دوشنبه 17 الی 21 و چهارشنبه ساعت 17 الی 21 ) مدرک: در پایان دوره مدرک پایان دوره از طرف انستیتو آموزشگاه اندروید ایران ارائه میگردد. سه دانشجو نمونه اول به شرکت های معروف ایرانی جهت همکاری معرفی می گردند. به شرکت کنندگان در دوره کد ویژه خرید محصولات شاپ دروید داده می شود و می توانند برای همیشه محصولات این فروشگاه را با تخفیف 50 درصدی تهیه کنند. ویژگی : آموزش در لابراتوار مجهز به سیستم های روز به صورت شبکه تحت NetSupport و متصل به اینترنت و کاملا اینتراکتیو تحت پروژه عملی انجام خواهد گرفت. مکان برگزاری : این دوره آموزشی با همکاری آموزشگاه ویستا برگزار خواهد شد ثبت نام در دوره راهنمای ثبت نام: ثبت نام خود را میتوانید از طریق فرم زیر انجام دهید.پس از واریز وجه نام شما در لیست ثبت نام قرار خواهد گرفت و قبل از شروع دوره با شما تماس حاصل خواهد شد و از طریق پیامک اطلاع رسانی میشود. جهت کسب هر نوع اطلاعاتی در خصوص دوره میتوانید با ایمیل info@android-learn.ir وشماره های تماس ۸۸۵۰۸۰۸۰ -۸۸۵۵۴۲۱۷ -۸۸۵۵۴۲۱۳ تلگرام همراه 09100046764 تماس حاصل نمایید. سرفصلهای دوره آموزشی برنامه نویسی اندروید به صورت کاملا عملی: ثبت نام در دوره فصل اول)فریمورک اندروید و راه اندازی اندروید استودیو آشنایی با اندروید لایه های نرم افزاری اندروید کتابخانه های اندروید ورژن های مختلف اندروید از ابتدا تا Marshmellow نصب و راه اندای اندروید استودیو نیازمندی مورد نیاز برای اندروید استودیو آشنایی با اندروید استودیو ماشین مجازی اندروید AVD ماشین مجازی genymotion آشنایی با دیباگ پروژه در اندروید استودیو فصل دوم) SDK اندروید و اکتیویتی ساختار پروژه های اندروید آشنایی با فایل مانیفست ساختار فایل مانیفست آشنایی با SDK اندروید آشنایی با اکتیوتی و مفهوم اکتویتی در اپلیکیشن های اندروید چرخه حیات اکتیوتی Life Cycle فصل سوم) فرگمنت،View ها و ListView آشنایی با فرگمنت View ها در اندروید آشنایی با ویجت های اندروید سایر استاندارد تصاویر در اندروید فصل چهارم)Intent ها و Intent filters آشنایی با Intent انتقال اطلاعات توسط Intent ارتباط بین اکتیویتی ها با Intent Register کردن IntentFilter فصل پنجم) Layout های اندروید و View های سفارشی آشنایی با مفاهیم Layout طراحی واسط کاربری برای سایز های مختلف Layout های چند زبانه ساخت View های سفارشی فصل ششم) منابع اندروید،Theme و متریال دیزاین معرفی منابع اندروید Theme های اندروید Style ها بکار گیری Material Design در طراحی اپلیکیشن Shape and Selector فصل هفتم)Ui اندروید-دیالوگ ها،منوها و WebView دیالوگ ها AlertDialog دیالوگ های سفارشی اکتیویتی دیالوگ ها منوها OptionMenu ContextMenu نمایشگر داخلی WebView فصل هشتم)ذخیره سازی اطلاعات و پردازش های پس زمینه ای روش های ذخیره سازی اطلاعات در اندروید خواندن و نوشتن در فایل SharedPrefrences ارتباط با اینترنت سرویس های پس زمینه Service BroadCastReciver فصل نهم)ذخیره سازی اطلاعات با دیتابیس Sqlite معرفی دیتابیس در اندروید پیاده سازی دیتابیس Sqlite در اندروید افزودن اطلاعات به دیتابیس ویرایش اطلاعات در دیتابیس حذف اطلاعات در دیتابیس نمایش اطلاعات در دیتابیس فصل دهم)Notification در اندروید پیاده سازی Notification در اندروید Notification های سفارشی طراحی واسط کاربری برای Notification آشنایی با Pending Intent Notification در اندروید 5 فصل یازدهم)Sms،شبکه ها ،بلوتوث ، wifi،ویبره ارسال SMS دریافت پیامک روشن کردن بلوتوث روشن کردن Wifi Detect کردن wifi کنترل کردن ویبره دستگاه فصل دوازدهم)وب سرویس ها- JSON مفهوم وب سرویس انواع وب سرویس ها ارتباط با وب سرویس آشنایی با وب سرویس JSON آشنایی با JSON Array آشنایی با JSON Object آشنایی با Volley دریافت اطلاعات وب سرویس Volley ارسال اطلاعات به سرور Volley Image Loader volley Image Loader Picasoo آشنایی با HttpGet و HttpPost آشنایی با HttpResponse ثبت نام در دوره فصل سیزدهم)گوگل مپ و موقعیت یابی گوگل مپ گوگل مپ ورژن دو آشنایی با Google Play Service Api گوگل مپ آشنایی با Keytool برای تعریف Sha تعریف api در مانیفست افزودن Permission های مورد استفاده به مانیفست آشنایی با MarkerOptions ایجاد نقاط(point) روی نقشه آشنایی با CameraOption تنظیم کردن Zoom نقشه ایجاد نماهای Normal،Satellite،Terrain،Hybrid بدست آوردن مکان جاری و نمایش آن روی نقشه آشنایی با Lat و Lang آشنایی با LocationListener بدست آوردن موقیت جاری از روی GPS و Internet فصل چهاردهم)آشنایی با تغییرات اندروید5 Material Design Toolbar MenuDrawer Shade Animation CardView and RecycleBinView FloatingActionButton SnackBar CordinatorLayout این دوره توصیه میشود به : اشخاصی كه علاقه مند به آشنایی و كار حرفه ای با اندروید هستند. اشخاصی كه قصد فراگیری كامل طراحی اپلیکیشن های موبایل از ابتدا توسط اندروید دارند. اشخاصی كه قصد راه اندازی اپلیکیشن موبایل شخصی خود توسط اندروید دارند. اشخاصی كه میخواهند با فراگیری حرفه ای شروع به كسب درآمد نموده و به عنوان توسعه دهنده اندروید فعالیت كنند. شركتها و سازمانهایی كه قصد راه اندازی اپلیکیشن موبایل اندروید اختصاصی خود را دارند. دانشجویان رشته های كامپیوتر كه قصد فراگیری كامل توسعه اپلیکیشن های اندروید دارند. اشخاصی كه قصد پیاده سازی ایده های اپلیکیشن های موبایل را در قالب اندروید دارند. اشخاصی كه قصد دارند وب سایت خود را به اپلیکیشن های موبایل اندروید تبدیل كنند. و... دانشجویان موفق دوره های قبلی آموزشگاه اندروید ایران نام و نام خانوادگی تاریخ دوره رزومه و برنامه های تولید شده محسن جهانی بهار 93 مصاحبه با وب سایت appvs علیرضا غمخوار مرداد 93 توسعه دهنده شرکت رهنما.برنامه تولید شده کفش دوزک گروه برنامه نویسی ادامدن تابستان 94 https://cafebazaar.ir/developer/noorali/?l=fa دانشجویان گذرانند این دوره قابلیت پیاده سازی اپلیکیش های به صورتی تحت دیتابیس و کاملا پویا را خواهند داشت و آماده ورود به بازار کار میباشند. ثبت نام در دوره
  22. درود به همه کاربران انجمن اندروید ایران به عنوان یکی دیگر از هدایای سری جدید انجمن اندروید ایران پروژه کتاب ساز اندروید را برای شما آماده و در اختیار شما عزیزان قرار گرفت. از آنجایی که هدف انجمن اندروید ایران فقط و فقط خدمت به اندروید ایران است و رشد و توسعه آن در گرو همکاری همه عزیزان است لذا به عنوان یک عضو کوچک از این خانواده بزرگ تلاش خود را انجام میدهیم تا خدمتی صادقانه به شما عزیزان ارائه دهیم. چندین وقت بود نیاز بود راهی آسان برای ساخت و ایجاد اپلیکیشن های بر پایه تولید محتوا ایجاد شود،بر همین دلیل انجمن پی سی دروید این نیاز را با ارائه روش "کتاب ساز اندروید" نیز برای توسعه دهندگان گرامی اندروید رفع خواهد کرد. امید است دوستان گرامی بتواند اپلیکیشن های جذابی را در آینده تولید نمایند و باعت پیشرفت صنعت موبایل در کشور باشد از امکانات این کتاب ساز : ورق زدن صفخات بصورت راست به چپ قرار دادن تصاویر و متون در صفحات قرار دادن متون فارسی و ... امکان قرار دادن نامحدود صفحات استفاده از دیتابیس برای نمایش اطلاعات برای استفاده از این پروژه باید حتما کتابخانه FilpBook را نیز به پروژه خود اضافه کنید،کتابخانه مورد نظر نیز در پیوست قرار گرفته است. دانلود پروژه: http://p30droid.com/Uploader/do.php?id=359 کتابخانه پروژه: http://p30droid.com/Uploader/do.php?id=360 پیروز و سربلند باشید. انجمن اندروید ایران
  23. نصب پلاگین Kotlin در اندروید استودیو در صورتی که نسخه اندروید استودیو کمتر از 3 باشد حتما میبایستی پلاگین Kotlin را در اندروید استودیو نصب کنید از منوی پلاگین های intellij گزینه plugin را نصب کنید روی گزینه Install jetBrains Plugin کلیک کنید سپس در کادر زیر Kotlin را جستجو کنید سپس گزینه install را انتخاب کنید تا پلاگین Kotlin بر روی اندروید استودیو نصب کنید و بتوانید از Kotlin در برنامه نویسی اندروید استفاده کنید
  24. کتابخانه BottomNavigationView در داخل کتابخانه deisgn از ورژن 25 به بالاتر وجود دارد داکیومنت گوگل : https://developer.android.com/reference/android/support/design/widget/BottomNavigationView.html برای پیاده سازی استفاده از BottomNavigationView میابیستی مراحل زیر را بطور کامل انجام دهید : 1- ابتدا Dependencyها را در فایل app->build.gradle وارد نمایید compile 'com.android.support:appcompat-v7:25.1.0' compile 'com.android.support:design:25.1.0' compile 'com.android.support:support-v4:25.1.0' 2- فرگمنت ها : همانطور که مطلع هستید برای نمایش تب های هر کدام از گزینه های BottomNavigationView میبایستی فرگمنت های مربوطه را طراحی کرد. در این مثال فرض میگیریم 3 تب داریم پس باید 3 فرگمنت ایجاد کنیم. Fragment 1: fragment_item_one.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.truiton.bottomnavigation.ItemOneFragment"> <ImageView android:id="@+id/truiton_image" android:layout_width="300dp" android:layout_height="300dp" android:layout_centerInParent="true" android:src="@mipmap/truiton"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/truiton_image" android:layout_centerHorizontal="true" android:text="Fragment 1" android:textSize="30sp"/> </RelativeLayout> import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class ItemOneFragment extends Fragment { public static ItemOneFragment newInstance() { ItemOneFragment fragment = new ItemOneFragment(); return fragment; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_item_one, container, false); } } Fragment 2: fragment_item_two.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.truiton.bottomnavigation.ItemTwoFragment"> <ImageView android:id="@+id/truiton_image" android:layout_width="300dp" android:layout_height="300dp" android:layout_centerInParent="true" android:src="@mipmap/truiton"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/truiton_image" android:layout_centerHorizontal="true" android:text="Fragment 2" android:textSize="30sp"/> </RelativeLayout> import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class ItemTwoFragment extends Fragment { public static ItemTwoFragment newInstance() { ItemTwoFragment fragment = new ItemTwoFragment(); return fragment; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_item_two, container, false); } } Fragment 3: fragment_item_three.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.truiton.bottomnavigation.ItemThreeFragment"> <ImageView android:id="@+id/truiton_image" android:layout_width="300dp" android:layout_height="300dp" android:layout_centerInParent="true" android:src="@mipmap/truiton"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/truiton_image" android:layout_centerHorizontal="true" android:text="Fragment 3" android:textSize="30sp"/> </RelativeLayout> import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class ItemThreeFragment extends Fragment { public static ItemThreeFragment newInstance() { ItemThreeFragment fragment = new ItemThreeFragment(); return fragment; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_item_three, container, false); } } 3- منو ها: در این مرحله میبایستی منوها را ایجاد نمایید از مسیر res->menu bottom_navigation_items.xml <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/action_item1" android:icon="@drawable/ic_account_box_black_24dp" android:title="@string/item_1"/> <item android:id="@+id/action_item2" android:icon="@drawable/ic_account_circle_black_24dp" android:title="@string/item_2"/> <item android:id="@+id/action_item3" android:icon="@drawable/ic_assignment_ind_black_24dp" android:title="@string/item_3"/> </menu> 4- در این مرحله طراحی ظاهر کاربری اکتیویتی اصلی را انجام میدهیم : در این مرحله از تگ BottomNavigationView استفاده میکنیم <?xml version="1.0" encoding="utf-8"?> <RelativeLayout android:id="@+id/activity_main" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.truiton.bottomnavigation.MainActivity"> <FrameLayout android:id="@+id/frame_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_above="@+id/navigation" android:animateLayoutChanges="true"> </FrameLayout> <android.support.design.widget.BottomNavigationView android:id="@+id/navigation" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:background="@color/colorPrimary" app:itemIconTint="@color/nav_item_state_list" app:itemTextColor="@color/nav_item_state_list" app:menu="@menu/bottom_navigation_items"/> </RelativeLayout> 5- در این مرحله میبایستی BottomNavigation را در اکتیویتی تعریف نماییم import android.os.Bundle; import android.support.annotation.NonNull; import android.support.design.widget.BottomNavigationView; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentTransaction; import android.support.v7.app.AppCompatActivity; import android.view.MenuItem; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); BottomNavigationView bottomNavigationView = (BottomNavigationView) findViewById(R.id.navigation); bottomNavigationView.setOnNavigationItemSelectedListener (new BottomNavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(@NonNull MenuItem item) { Fragment selectedFragment = null; switch (item.getItemId()) { case R.id.action_item1: selectedFragment = ItemOneFragment.newInstance(); break; case R.id.action_item2: selectedFragment = ItemTwoFragment.newInstance(); break; case R.id.action_item3: selectedFragment = ItemThreeFragment.newInstance(); break; } FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); transaction.replace(R.id.frame_layout, selectedFragment); transaction.commit(); return true; } }); //Manually displaying the first fragment - one time only FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); transaction.replace(R.id.frame_layout, ItemOneFragment.newInstance()); transaction.commit(); //Used to select an item programmatically //bottomNavigationView.getMenu().getItem(2).setChecked(true); } } خروجی : با سپاس فرزاد سرسیفی
  25. مشاهده فایل سورس پروژه ذکرشمار ذکرشمار نرم افزاری است برای ارتباط با خدا. این نرم افزار شامل ذکر ایام هفته و تعدادی اذکار صوتی دیگر است. شما می توانید از این اذکار زیبا برای خود تسبیحی بسازید و حتی می توانید ذکر دلخواه خود را به آن اضافه کنید. به این ترتیب ذکر ویاد خدا همیشه و همه جا همراه شما و گره گشای مشکلات شما خواهد بود. البته لازم به ذکر است که تعداد اذکار در این نسخه که نسخه اولیه می باشد، محدود است اما امید است که به لطف خدا در نسخه های بعدی افزایش یابد. این برنامه بدین صورت عمل میکند که با حرکت انگشت دانه های تسبیح حرکت میکنند و بعد از 33 حرکت تسبیح تمام میشود و به اول تسبیح برمیگردیم.همچنین دارای ویبره بعد انداختن هر دانه تسبیح همراه با شمارنده تعداد تسبیح های انداخته شده میباشد. دریافت نسخه دمو : Tasbih.apk ارسال کننده Farzad Sarseifi ارسال ۱۷/۰۳/۳۱ دسته سورس پروژه اندروید