Persian Software Engineers – Telegram
Persian Software Engineers
1.9K subscribers
353 photos
14 videos
84 files
303 links
تجربیات شخصی یک مهندس نرم افزار در آلمان‌.
کانال یوتیوب:
https://www.youtube.com/@Dev_Germany
ادمین کانال :
@mohamad_germany
Download Telegram
سلام به همه دوستان گرامی و ممنون از عزیزانی که از ما حمایت کردن . تا الان شما بخش های
●آموزش های جلسه ای خانم مقاری
●اعماق اندروید
●کتابخانه های مفید
رو تا حالا تجربه کردین با هشتگ های
#android_pdf
#color_picker #لایبرری #سورس_کد
#اعماق_اندروید
از امروز اگر باز از ما حمایت کنین و کانالو به دوستاتون معرفی کنین و 5 ستاره بدین ! بخش#قطعه_کد رو می خواهیم اضافه کنیم و تکه کد های مفید که تو هر برنامه ای ممکنه نیاز داشته باشه رو معرفی و کامل شرح بدیم. در ضمن کاملا به صورت اختصاصی 😉 اگر هنوز به کانال ما رای ندادین به لینک زیر مراجعه کنین و بعد از زدن start بر روی 5 ستاره در پایین صفحه و سپس /skip بزنین ممنونم از حماییتون
Ahoura Team
👇👇👇👇👇👇
https://telegram.me/tgchannelbot?start=androiddevelop
#code_snippet
#auto_start_app_when_boot_is_completed
#androiddevelop
#قطعه_کد
با نام خدا اولین مقاله از بخش قطعه کد رو تقدیمتون می کنیم .
این بخش نیاز به چند پیش زمینه داره که در حین آموزش یاد می گیرین! در برنامه نویسی اندروید شما می تونین به بیشتر قابلیت های گوشی و حالات مختلف گوشی دسترسی داشته باشین به شرط گرفتن اجازش از کاربر که موقع نصب از کاربران اجازش گرفته میشه !یکی از حالات که برای برنامه نویسا مورد نیازه موقع بالا اومدن گوشیه که مانند استارتاپ برای کامپیوتر می مونه که مثلا برنامه ی آنتی ویروس شما وقتی سیستم عاملتون بالا میومد فعال میشد و یه تصویر به این عنوان که آنتی ویروس اجرا شده بهتون نمایش میداد و خیالتون راحت می شد !در اندروید به این حالت Boot Completed می گویند که اگر بخواهیم در این حالت برنامه ما کاری رو انجام بده باید یه واسطه این بین باشه و به برنامه ما خبر بده 📣 اینجاست که Broad cast receiver به کمک ما میاد ! Broadcasting به معنی جا به جایی سیگنالهای ویدئویی و صوتی هست (یکی از معانی) حالا ما می تونیم برای تفهیم بهتر این تعبیرو به کار ببریم که این Broascast receiver ما چون receiver یعنی دریافت کننده است ! سیگنالی که از سمت سیستم عامل موقع کامل شدن بوت میفرسته رو دریافت می کنه ! و حالا می تونین عملیات مورد نظرمونو انجام بدیم . خب حالا ما میاین این عملیات رو با استفاده از Service ها در اندروید انجام میدیم .خب Services در اندروید به چه معنی هستند ؟ سرویس ها یک جزء برنامه هستند که می تونند عملیات های که زمان اجرای طولانی ای رو دارند کاملا در پس زمینه اجرا کنند بدون این که کاربر با برنامه تعامل داشته باشه !یک جزء دیگر از برنامه می تونه یه سرویسو استارت کنه و اون سرویس به کار خودش ادامه بده حتی اگر کاربر بین برنامه های مختلف در حال جا به جایی باشه ! خب پیش نیازهای این قطعه کد رو تا جایی که تونستم ساده براتون بیان کردم و این ک ممکنه کمی با تعریف اصلی فرق کنه ولی اینجا هدفمون فهمیدن هست و در مورد هر کدوم تخصصی صحبت میشه ولی 90 درصد درسته 😉
خب ما برای این که برناممون موقع کامل شدن بوت سیستم عامل یه سرویس رو اجرا کنه سه مرحله پیش رو داریم !
1-ساخت Broadcast Receiver(که بالا کامل توضیح دادیم چی هست!) .
ساخت یک کلاس broadcast receiver که میاد متد   
 BroadcastReceiver.OnReceive()
رو extend می کنه معنی اکستند کردن توسعه دادن میشه یعنی ما میایم شخصی سازی های خودمون رو تو اون حالت انجام می دیم و در اصل در جاوا هر چیزی که ما بیایم extend ش کنیم داریم از کلاس اصلیش ارث می بریم و در بحث OOP مطرحه ! بگذریم! وقتی که بوت گوشی کامل میشه ما میایم سرویس رو صدا میزنیم به صورت زیر :
public void onReceive(Context context, Intent intent) { if (intent.getAction().equalsIgnoreCase(Intent.ACTION_BOOT_COMPLETED)) { Intent serviceIntent = new Intent(context, AutoStartUp.class); context.startService(serviceIntent); } }
مرحله دوم : ساخت یک سرویس
این سرویس از طریق broadcast receiver راه اندازی میشه و متد
   onCreate()
وقتی که سرویس راه اندازی شد فراخوانی میشه که در اینجا یه Toast نمایش داده می شود .
public void onCreate() { super.onCreate(); Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show(); // do something when the service is created }
مرحله سوم : اضافه کردن دسترسی های مورد نیاز در AndroidManifest.xml

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>

@androiddevelop

<receiver android:name=".BootComplete" android:enabled="true" android:exported="false" > <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver> <service android:name=".AutoStartUp" > </service>
@androiddevelop
حالا وقتی که گوشی رو ریستارت کنین موقع بالا اومدن گوشیتون این Toast نوتیفیکشن رو مشاهده می کنین ! خسته نباشین .کدهای کامل :

BootComplete.java

import android.content.Context; import android.content.BroadcastReceiver; import android.content.Intent; public class BootComplete extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equalsIgnoreCase(Intent.ACTION_BOOT_COMPLETED)) { Intent serviceIntent = new Intent(context, AutoStartUp.class); context.startService(serviceIntent); } } } }

AutoStartUp.java


import android.app.Service; import android.os.IBinder; import android.widget.Toast; import android.content.Intent; public class AutoStartUp extends Service { @Override public IBinder onBind(Intent intent) { return null; } @Override public void onCreate() { super.onCreate(); Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show(); // do something when the service is created } }
@androiddevelop

AndroidManifest.xml


<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.androidautostartup" android:versionCode="1" android:versionName="1.0" > <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" > </uses-permission> <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="18" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <receiver android:name=".BootComplete" android:enabled="true" android:exported="false" > <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver> <service android:name=".AutoStartUp" > </service> <activity android:name="com.example.androidautostartup.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
و در بالا هم سورس کد برنامه که فایل بالا رو می تونین توی Ide تون ایمپورت کنین و برنامرو تست کنین !!
این آموزش برای اولین بار از طریق کانال @androiddevelop ارائه میشه و توسط اینجانب @mohamadghaffari نوشته شده است لطفا اگر می خواهین برای دوستاتون بفرستین حتما forward کنین چندین ساعت وقت و چند سال تجربه برای این اموزش ها صرف می کنیم و رایگان در خدمت شماست پس لطفا مثل ما کپی رایت رو رعایت کنین !
منابعی که در این آموزش ازش استفاده کردم علاوه بر تجربیات شخصی !
http://fa.wikipedia.org/
http://www.compiletimeerror.com/2014/12/android-autostart-app-after-boot-with.html?m=1
http://developer.android.com
اگر مطلب براتون مفید بود و قصد ادامه یافتن این بخش هستین در لینک زیر به ربات 5 ستاره بدین و در صفحه شخصی من نظراتتون رو در بیان کنین :
https://telegram.me/tgchannelbot?start=androiddevelop
امشب ساعت 10 و نیم منتظر جلسه هشتم آموزش های خانم مقاری باشین
@androiddevelop
سر فصل های این جلسه :
●دسته بندی drawable برای عکس های با رزولوشن متفاوت
●دسته بندی layout برای گوشی ها با سایزهای مختلف
●ایجاد صفحات برای حالت landscape
●دادن ایکون به برنامه
@androiddevelop
با سلام. مقاری هستم و با اموزش هشتم از مجموعه اموزشای صفر تا صد کانال در خدمت شما دوستان هستم
توی این جلسه بیشتر قرار هست یک سری توضیحات مرور بشه.
اما توضیحات لازم و مهمی هست.
خب اول بگم که من دیزاین برنامه رو بصورت زیر تغییر دادم.. کار خاصی هم نکردم عکسها رو عوض کردم فقط و به دکمه هام یک مقدار margin دادم تا از هم فاصله بگیرند. اصل کار صفحه شطرنجی زمینه هست که به دلیل خاصی گذاشتم تا چیزی رو نشونتون بدم
Forwarded from Deleted Account
حالا بریم سراغ ادامه درس. در ادامه جلسه قبل میخواهیم روی دیزاین همه بخش ها کار کنیم و بریم در آخر سراغ کد نویسی که احتمالا برای جلسات بعدی خواهد بود. اما اول یک دور میخواهم موضوع پروژه ای که قرار داشتیم رو بگم. من پروژه ای میخواستم در نظر بگیرم که اخرش به Sqlite منتهی شود. یعنی پایگاه داده پیشفرض اندرود. خب چیزی که انتخاب کردم در نهایت یک برنامه است برای ذخیره کردن اطلاعات افراد. مثلا فک کنید دوستانتون. میخواهیم نام و نام خانوادگیشان و تاریخ تولد و چنین چیزهایی را ذخیره کنیم. بعدا بتوانیم در یه listView ببینیم آنها را و همینطور تغییر دهیم یا حذف کنیم . در صفحاتشان به آنها sms یا ایمیل بدهیم، زنگ بزنیم و...همینطور قابلیت سرچ بگذاریم.
خلاصه هر چیزی که شد در این برنامه می گنجانیم. حتی بزور و بی ربط !
مهم اصلا محتوا نیست؛ مهم کدها و نکاتی هست که قرار هست یاد بگیرید چه توی دیزاین چه ابزارها و چه کدنویسی.
خب اول یه نکته ای به شما گفتم اگر یادتان باشد. اینکه این دکمه ها در هرسایز صفحه ای مناسب نیستند. جلسه قبل سایز را دادیم 170 که البته من در این دیزاین جدید سایز را دادم 150.
اما الان همین را ببینید در یک گوشی کوچکتر و یک تبلت:
خب میبینید هم عکس بک گراند که برای همین شطرنجی دادم تا متوجه بشید، شکل بدی پیدا کرده، هم دکمه ها نسبت به صفحه بد شکل شدند.
خب راه هایی هست برای حل اینگونه مسائل. من خورد خورد به شما میگم. ببینید اندروید یک راه خیلیی خووبی برای اینکار در نظر گرفته. اینکه بیاید و برای هر دسته سایز گوشی یک دیزاین جدا انجام بدید. خیلی راحت.
اما چطور؟ ما که یک پوشه Res داریم و یک layout. فقط میایم بازم پوشه layout میسازیم.
البته این رو بگم که اینکار مسلما کار شما رو سخت میکند. اما بسته به استفاده تان دارد. گاها میخواهید یک برنامه ای را برای فروش بسازید مثلا بگذارید توی بازار خب باید کاری کنید هرکسی دانلودش کرد راضی باشد.
گاها اما نه شما برای یک فردی دارید یک برنامه ای مینویسید این فرد هم در نظرش هست که من مثلا یک تبلت دارم 10 اینچ برای من برنامه ات را در این تبلت بگذار. اینطور وقتها خودتان را خسته نکنید برای همان 10 اینچ بزنید.
اما خب من میخواهم روش استاندارد را بگم. روی پوشه ی res راست کلیک کنید و بزنید new و بعد android resource directory
و اسم پوشه تان را بدید layout-land. حالا باید به ازای هر layout ای که در پوشه layout اتان دارید و میخواهید در حالت landscape یک نمایش دیگری داشته باشه اینجا هم یک layout بسازید. دقیقا به همان نام.
مثلا دیدید خیلی برنامه ها را وقتی land میکنید جور دیگری میشود نمایش صفحاتش. چون از نظر عرضی فضای بیشتری خواهید داشت. مثلا نمایش دکمه ها عوض میشود و یا جای ابزارها تغییر میکند و....