مقالات تخصصي طراحي اپ موبايل
مرجع رسمي مقالات طراحي اپليكيشن

يك پوشه مقر داده را از دستگاه خويش به host اسكن فرماييد :

adb pull
ابزار sqlite3 را از مسير tools شروع فرماييد، طراحي اپليكيشن در حاليكه پوشه مقر داده را معين ميكنيد :

sqlite3
ابزار پلتفرم :

اين ابزار براي پناه خصوصيت هاي واپسين پلتفرم اندرويد فردي سازي ميگردند (customized) . ابزار پلتفرم معمولا هر وقتي كه يك پلتفرم SDK تازه نصب نماييد، آپ تو ديت ميشوند. رايا پارس هر آپ تو ديت پلتفرم با پلتفرم هاي سابق خيس هماهنگ ميباشد.

بعضا از اين ابزار در ليست تحت ارائه گرديده اند.

(Android Debug bridge (ADB ، پل گونه هاي زداي اندرويد
(Android Interface definition language (AIDL، لهجه تعريف‌و‌تمجيد اينترفيس اندرويد
aapt, dexdump و dex و غيره


ادامه مطلب
امتیاز:
بازدید:
برچسب: طراحي اپليكيشن،
موضوع:
[ ۳۰ آبان ۱۴۰۱ ] [ ۱۰:۵۹:۵۹ ] [ حامد ] [ نظرات (0) ]

Progress bar ها براي علامت دادن معيار گسترش يك عمل (task) به عمل مي‌روند.
هنگامي كه شما در حالا لود (آپلود) يا اين كه دانلود كردن چيزي از وب مي باشيد، طراحي اپليكيشن عالي ميباشد كه جلو رفتن لود يا اين كه دانلود (progress of download/upload) به يوزر اكران داده گردد.

در اندرويد كلاسي به اسم ProgressDialog وجود دارااست كه به شما قابليت ساخت‌و‌ساز Progress bar را مي‌دهد. براي ايفا اين شغل مي بايست يك آبجكت از اين كلاس را تحت عنوان مثال در لحاظ بگيريد، راياپارس كه سينتكس آن مانند ذيل ميباشد :

ProgressDialog progress = new ProgressDialog(this);
حال ميتوانيم برخي از خصوصيت هاي اين ديالوگ، به عنوان مثال استايل و متن آن را تهيه و تنظيم كنيم :

progress.setMesغير مجاز مي باشدe("Downloading Music :) ");
progress.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progress.setIndeterminate(true);
خلال اين مشي ها، سياق هاي ديگري وجود دارا‌هستند كه بوسيله دسته ProgressDialog ارائه مي گردند :

()getMax : اين روال بيشترين مقدار يك progress را گزارش مي‌دهد.
(incrementProgressBy(int diff اين سياق Progress bar را بر پايه ي معيار اختلاف ، كه تحت عنوان پارامتر عبور كرده اند، ارتقا ميدهد.
(setIndeterminate(boolean indeterminate : اين سياق نشانگر Progress را تحت عنوان معلوم (determinate) يا اين كه نامعين، تهيه مي نمايد.
(setMax(int max : اين سياق بيشترين مقدار يك progress dialog را تهيه و تنظيم مي نمايد.
(setProgress(int value : اين مشي براي به روز progress dialog با تعدادي مقدار معلوم، به كارگيري ميشود.
(show(Context context, CharSequence title, CharSequence mesغير مجاز مي باشدe : اين سياق يك اسلوب استاتيك ميباشد كه براي اكران progress dialog به كار گيري مي گردد.


ادامه مطلب
امتیاز:
بازدید:
برچسب: طراحي اپليكيشن،
موضوع:
[ ۲۹ آبان ۱۴۰۱ ] [ ۱۰:۵۹:۲۸ ] [ حامد ] [ نظرات (0) ]

يك نرم افزار اندرويدي مي تواند بر روي دستگاه هاي متفاوت طراحي اپليكيشن در بخش ها گوناگون عالم نصب شود ؛ به خواسته جالب خيس كردن محيط اندرويدي بايد نرم افزار كاربردي شما مشمول متن (text) و شماره ها (number) و فايل ها و غيره باشد و در مسير هاي مطلوب مطابق وضعيت محلي آيتم استعمال قرار گيرد.

در اين نوشته‌ي علمي ما توضيح خواهيم اعطا كرد كه چه‌گونه قادر خواهيم بود نرم افزار خويش را دارنده محل و مكان كنيم يا اصلاطحا Localize كنيم . بر پايه ي مكان هاي مختلف ما رديف هاي مصرف شده در نرم‌افزار را ، راياپارس  محلي مي كنيم ؛ پيرو بخش هاي ديگر را نيز مي توانيم لوكلايز كنيم.

Localizing Strings :
به مراد localize كردن حرفه ها (string) در نرم افزار فايل جديدي را باطن فايل res بانام values-local ساخته و در نصيب لوكال كه جايگزين ريجن مي خواهد شد قرار مي گيرد.

براي نمونه براي مرزوبوم ايتاليا فولدر values-it در فايل res ساخته شود.
كه در زير نشانه داده گرديده:

صرفا يكبار فايل ساخته مي خواهد شد ؛ .بعد از آن strings.xml را از فايل پيش فرض به فايل تشكيل‌شده كپي كنيد و موضوعش را تغيير دهيد.
براي نمونه اينجانب value از فن hello_world را تغيير داده ايم.

Italy, res/values-it/strings.xml:
<;?xml version="1.0" encoding="utf-8"?>

Ciao mondo!

French, res/values-it/strings.xml:
<;?xml version="1.0" encoding="utf-8"?>

Bonjour le monde !

ضمن لهجه يك ناحيه كد مرتبط با آن نصيب نيز در ليست زير داده گرديده‌است :

Afrikanns

Code: af. Folder name: values-af

Arabic

Code: ar. Folder name: values-ar

Bengali

Code: bn. Folder name: values-bn

Czech

Code: cs. Folder name: values-cs

Chinese

Code: zh. Folder name: values-zh

German

Code: de. Folder name: values-de

French

Code: fr. Folder name: values-fr

Japanese

Code: ja. Folder name: values-ja


ادامه مطلب
امتیاز:
بازدید:
برچسب: طراحي اپليكيشن،
موضوع:
[ ۲۸ آبان ۱۴۰۱ ] [ ۱۰:۵۹:۱۰ ] [ حامد ] [ نظرات (0) ]

CRUD مخفف كلمه و واژه هاي Create در معناي «ساختن»، Read در معناي «تلاوت»، Update در معناي «آپ تو ديت رساني» و Delete در معناي «حذف كردن» ميباشد و اشاره به دستوراتي در SQL دارا‌هستند  طراحي اپليكيشن كه براي تغيير‌و تحول اطلاعات به كارگيري مي‌شوند.

در كد تحت عمليات Create (ساختن) را مي‌بينيد. راياپارس يك شي از فرآورده User و يك شي از مال Organization ميسازيم و آنها‌را از روش يك تراكنش (Transaction) در ديتابيس ذخيره مي‌كنيم:

// Mohamadreza Amani
// Email: help4usr@gmail.com
final Organization organization = new Organization();
organization.setName("Android");

final User user = new User();
user.setName("Mohamadreza Amani");

// Get the DAO
final UserDao userDao = ((MyDatabaseApplication) getApplicationContext()).getMyDatabase().userDao();

// Define the task
((MyDatabaseApplication) getApplicationContext()).getMyDatabase().runInTransaction(new Runnable() {
@Override
public void run() {
userDao.insertOrganization(organization);
userDao.insertUser(user);
}
});

 

كوئري ديتابيس

همه كوئري ها بايستي در كلاس هاي مرتبط با دسترسي به اطلاعات (DAO) نوشته شوند.

در صورتي بخواهيم به شكلي درباره استفاده كننده (User) جست و جو كنيم كه اسم سازمان (Organization) اورا نيز بدست آوريم. ميتوانيم به طور ذيل كوئري را بنويسيم:

// declare inner join here
@Query("SELECT User.*, Organization.name AS organization_name FROM User INNER JOIN Organization " +
"ON User.organization_id = Organization.id WHERE User.id = :id")
public UserWithOrganization getWithOrgById(int id);
در كوئري بالا بجاي به كار گيري از (organization.name) از organization_name به كارگيري كرديم و براي اينكار از سخن AS به كار گيري كرديم. با اينكار مي قدرت اختلال همنام بودن رديف ها در جدول هاي گوناگون را حل كرد به عنوان مثالً هر دو جدول Organization و User ستوني به اسم name دارا‌هستند. براي به كارگيري از مقدار بازگشتي اين روال كه مشتمل بر User و organization_name ميباشد مي بايست كلاس جديدي بسازيم. اسم اين كلاس را در كد بالا UserWithOrganization گذاشتيم كه كد آن به طور تحت ميباشد. اين كلاس بايستي دربرگيرنده فيلد هايي باشد كه در فرمان select بالا تعيين كرديم يعني مجموع رديف هاي جدول user و organization_name :

// Mohamadreza Amani
// Email: help4usr@gmail.com
class UserWithOrganization {
// @Embedded نشان گذاري
// با حفظ كپسوله سازي ، آبجكت كاربر را در اين شي قرار مي دهد
@Embedded User user;

// organization_name renamed during SELECT query w/ Organization.name AS organizaiton_name
@ColumnInfo(name = "organization_name")
String organizationName;

}
بعداز به كارگيري از نماد گذاري Embedded@ براي User ميتوانيد به آحاد صفات كلاس User درون كلاس بالا دسترسي داشته باشيد:

UserWithOrganization userWithOrg = new UserWithOrganization();
User user = userWithOrg.user;
فرض فرمائيد كه مي‌خواهيم تك تك رديف هاي جدول Organization را كوئري كنيم و در كنار جدول User باطن يك كلاس داشته باشيم. نقص‌ اينجاست كه هر دوي جدول هاي Organization و User رديف هاي همنام مثل id دارا‌هستند. نحوه رفع اين خلل به كارگيري از الگوي prefix يا اين كه پيشوندي ميباشد. به طور ذيل:

// Mohamadreza Amani
// Email: help4usr@gmail.com
class UserWithOrganization {
// @Embedded نشان گذاري
// با حفظ كپسوله سازي ، آبجكت كاربر را در اين شي قرار مي دهد
@Embedded User user;

//Organization تمام فيلد هاي جدول
// پيشوند مي گيرند:
//( org_id, org_name, …)
@Embedded(prefix="org_") Organization organization;

}
روال درون كلاس DAO براي به چنگ آوردن اطلاعات از نوع بالا به طور پايين مي گردد:

// declare inner join here
@Query("SELECT User.*, Organization.name AS org_name, Organization.id as org_id FROM User INNER JOIN Organization " +
"ON User.organization_id = Organization.id WHERE User.id = :id")
public UserWithOrganization getWithOrgById(int id);
اين كوئري را مي قدرت با امداد AsyncTask به طور ذيل استفاده نمود:

final UserDao userDao = ((MyDatabaseApplication) getApplicationContext()).getMyDatabase().userDao();

AsyncTask.execute(new Runnable() {
@Override
public void run() {
UserWithOrganization userWithOrganization = userDao.getWithOrgById(1);
});
};


ادامه مطلب
امتیاز:
بازدید:
برچسب: طراحي اپليكيشن،
موضوع:
[ ۲۶ آبان ۱۴۰۱ ] [ ۱۰:۴۸:۴۱ ] [ حامد ] [ نظرات (0) ]

درين نوشته‌علمي راجع به IDE هايي كه به طور بدون‌پول دردسترس ما مي‌باشند طراحي اپليكيشن كه به به عبارتي روش ي به كار گيري ي Android Studio موثر مي‌باشند و در بسط ي نرم افزار هاي اندرويد به ما امداد مي نمايند، حرف خوا‌هيم كرد. اصول شغل مجموع IDE ها يك كدام از ميباشد و به ما به عبارتي خروجي Android Studio را مي‌دهند. راياپارس بدين ترتيب اذن دهيد بعضا از شايسته ترين IDE هاي بسط ي اندرويد را كه دردسترس ما مي باشند پژوهش كنيم و تفاوت هاي آنها را با IDE پيش فرض كه Android Studio ميباشد تحقيق كنيم.

IDE كه به Integrated Development Environment(اطراف گسترش ي تجميع گرديده) اشاره داراست يك راه‌حل اثر گذار براي برنامه نويس ها يا اين كه بسط دهندگان براي توسعه و گسترش ي سريع و سهل و آسان نرم‌افزار براي گوشي هاي اندرويدي يا اين كه بقيه دستگاه ها ميباشد. IDE هاي بسط ي اندرويد يك پلت هيبت ميباشد كه از آن نرم افزار هاي اندرويد گسترش مييابند كه به آساني از پياده سازي ، كد ، كامپايل ، آزمايش ، ديباگ(در شكل وجود اشتباه) و پكيج كردن نرم افزار اندرويدي تشكيل مي گردد. براي گسترش ي نرم افزار اندرويد، گوگل Android Studio IDE را سفارش مي نمايد. اين IDE ها يك layout قشنگ براي برنامه نويس ها ارائه مي‌دهد كه به آنان در مفيد ساختن نرم افزار خويش ياري مي نمايد.

ضمن اين ميتوانيد از IDE هاي ديگر نيز به كار گيري فرماييد. اين بدين معنا ميباشد كه نيازي وجود ندارد از به عبارتي IDE كه گوگل ارائه ميدهد به كارگيري نمائيد و مي‌توانيد از IDE هاي ديگر كه به سادگي در وب دردسترس ميباشد به كار گيري نماييد.

شايسته ترين IDE هاي گسترش ي اندرويد

در‌اين نوشته‌ي‌علمي راجع به IDE هايي كه به طور مجاني دردسترس ما مي‌باشند كه به به عبارتي نحوه ي به كار گيري ي Android Studio اثر گذار مي باشند و در بسط ي نرم افزار هاي اندرويد به ما امداد مي نمايند، سخن خوا‌هيم كرد. اصول فعاليت مجموع IDE ها يك كدام از ميباشد و به ما به عبارتي خروجي Android Studio را مي‌دهند. به اين ترتيب اذن دهيد برخي از شايسته ترين IDE هاي گسترش ي اندرويد را كه دردسترس ما ميباشند پژوهش كنيم و تفاوت هاي آن‌ها را با IDE پيش فرض كه Android Studio ميباشد رسيدگي كنيم.

Android Studio

اين گزينه IDE پيش فرض و قانوني گوگل براي بسط ي اندرويد ميباشد. اين گزينه به ما در ارائه ي ابزار هاي تصادفي براي ايجاد كرد اپليكشن دستگاه هاي اندرويدي ياري مي نمايد. كد براي گسترش ي يك نرم افزار اندرويدي با به كار گيري از android studio به طور بدون‌پول دردسترس ميباشد. واپسين ورژن ي Android Studio ، 3.0.1 ميباشد و به طور مجاني در وب در دسترس ميباشد. Android studio خصوصيت هاي متنوعي را به برنامه نويس ها ارائه مي‌دهد و سود وري را در حين پيشرفت ي يك نرم افزار اندرويدي ارتقا مي‌دهد. يك مشابه ساز سريع و سرشار از مشخصات نيز در Android Studio دردسترس ميباشد. اين IDE يك گوشه و كنار واحد ارائه ميدهد كه قادر خواهيم بود در آن يك نرم افزار اندرويدري را توسعه و گسترش دهيم. Android Studio ابزار هاي گران و framework ها را نيز براي ما تسهيل مي نمايد.
يك يا اين كه تعداد بيشتري ماژول درحين كد زني يك نرم افزار اندرويدي وجود دارااست. هر ماژول دربردارنده پوشه هاي source code يا اين كه پوشه هاي منبع است. رابط كاربري Android Studio از يك سري حوزه‌ ي منطقي با توابع متعدد به كارگيري مي نمايد با اين اكنون اجرا عمليات در آن راحت ميباشد.


ادامه مطلب
امتیاز:
بازدید:
برچسب: طراحي اپليكيشن،
موضوع:
[ ۲۵ آبان ۱۴۰۱ ] [ ۱۱:۳۲:۵۵ ] [ حامد ] [ نظرات (0) ]

ضمن تغيير تحول جهت ، امرها بسيار اثر گذار ديگري نيز وجود دارا هستند  طراحي اپليكيشن كه در هنگام استعمال از emulator بايستي در ذهن داشته باشيد. اين اوامر عبارتند از :

Home : به شيت مهم بازمي خواهد شد.
F2 : موضوع ي منوي مربوطه را toggle مي نمايد.
F3 Log : از شيت تماس بيرون مي‌گردد
F4 : تماس را به نقطه پايان مي‌رساند.
F5 : كاوش
F6 : موقعيت trackball را toggle مي نمايد.
F7 : دكمه ي نيرو
F8 : كانال ي داده را toggle مي نمايد.
Ctrl+F5 : صداي زنگ را ارتقاء مي‌دهد.
Ctrl+F6 : صداي زنگ را كاهش مي‌دهد.

ارسال SMS :
شما ميتوانيد ارسال sms را نيز در emulator خويش قرار دهيد. راياپارس دو راه و روش براي اين قضيه وجود دارااست. مي‌توانيد از روش DDMS كه در Android studio پيدا مي گردد اعمال دهيد، يا اين كه از روش Telnet (كوشش كانال كه در ويندوز پيدا ميشود.)

ارسال SMS بوسيله Telnet:

telnet به صورت پيش فرض در ويندوز فعال وجود ندارد و براي به كار گيري از آن آغاز بايستي آن را فعال نمائيد. وقتي كه فعال شد، ميتوانيد به ommand prompt رفته و با تايپ telnet استعمال از آن را شروع فرمائيد .

براي ارسال sms به شماره ي AVD كه در بخش تيتر emulator به چشم ميخورد، اعتنا داشته باشيد كه مي‌تواند 5554 باشد. بعد از آن دستور ذيل را در بخش command prompt تايپ نمائيد :

telnet localhost 5554
بعداز تايپ دستور enter را فشار دهيد كه چيزي مانند تصوير تحت ظواهر گردد :

خواهيد مشاهده كرد كه به emulator متصل گرديده ايد. فعلا دستور تحت را تايپ نمائيد تا پيام ارسال خواهد شد :

sms send 1234 "hello"
بعداز تايپ اين امر enter را فشار دهيد. فعلا AVD را ببينيد. پيامي اخذ خواهيد كرد كه علامت ميدهد پيام متني جديدي داريد. مانند تصوير پايين :

 

برقراري تماس:
با به كار گيري از telent client ميتوانيد به راحتي از روش emulator خويش ارتباط تلفني برقرار فرمائيد. مي بايست از روش telnet به emulator خويش متصل گرديد، كه‌اين فرمان در بخش ارسال sms در فراتر توضيح داده شد. بعد از آن در پنجره ي telnet امر پايين را تايپ ميكنيد :

gsm call 1234

بعد از تايپ اين امر دكمه ي enter را فشار دهيد. در حال حاضر AVD را ملاحظه كنيد. شما تماسي از شماره ي تايپ گرديده در امر اخذ خواهيد كرد.


ادامه مطلب
امتیاز:
بازدید:
برچسب: طراحي اپليكيشن،
موضوع:
[ ۱۹ آبان ۱۴۰۱ ] [ ۱۰:۳۱:۵۶ ] [ حامد ] [ نظرات (0) ]

Progress bar ها براي نماد دادن ترازو توسعه يك عمل (task) به فعاليت مي‌روند.
زماني كه شما در حالا بارگذاري (آپلود) يا اين كه دانلود كردن چيزي از وب مي‌باشيد، طراحي اپليكيشن خوب ميباشد كه جلو رفتن لود يا اين كه دانلود (progress of download/upload) به يوزر اكران داده گردد.

در اندرويد كلاسي به اسم ProgressDialog وجود دارااست كه به شما قابليت توليد Progress bar را مي‌دهد. براي اعمال اين فعاليت مي بايست يك آبجكت از اين كلاس را تحت عنوان مثال در لحاظ بگيريد، راياپارس كه سينتكس آن مانند تحت است :

ProgressDialog progress = new ProgressDialog(this);
درحال حاضر خواهيم توانست برخي از خصوصيت هاي اين ديالوگ، مثلا استايل و متن آن را تهيه و تنظيم كنيم :

progress.setMesغير مجاز مي باشدe("Downloading Music :) ");
progress.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progress.setIndeterminate(true);
ضمن اين سياق ها، سياق هاي ديگري وجود دارا هستند كه بوسيله مجموعه ProgressDialog ارائه ميگردند :

()getMax : اين سياق بيشترين مقدار يك progress را گزارش ميدهد.
(incrementProgressBy(int diff اين اسلوب Progress bar را بر طبق معيار اختلاف ، كه تحت عنوان پارامتر عبور كرده اند، ارتقا مي‌دهد.
(setIndeterminate(boolean indeterminate : اين مشي نشانگر Progress را تحت عنوان مشخص (determinate) يا اين كه نامعين، تهيه و تنظيم مي نمايد.
(setMax(int max : اين روال بيشترين مقدار يك progress dialog را تهيه مي نمايد.
(setProgress(int value : اين اسلوب براي آپ تو ديت progress dialog با يك‌سري مقدار معين، به كارگيري ميگردد.
(show(Context context, CharSequence title, CharSequence mesغير مجاز مي باشدe : اين روال يك سياق استاتيك ميباشد كه براي اكران progress dialog به كار گيري مي گردد.

نمونه :

اين نمونه استعمال ي افقي از progress dialog را آرم ميدهد كه در واقع يك Progress bar ميباشد. اين نمونه يك Progress bar را مبني بر كليك رو دكمه آرم مي‌دهد.

براي اعمال نمونه مايحتاج ميباشد آن را روي يك دستگاه حقيقي و واقعي، بعد از گسترش ي نرم افزار ، انجام فرماييد، طبق پروسه پايين :

براي توليد يك نرم افزار ي اندرويد از اندرويد استوديو ذيل پكيج com.example. progressdialog استعمال مي‌كنيم .
پوشه src/MainActivity.java را براي اضافه كردن كد progress و اكران progress dialog spinning، تغيير تحول دهيد.
پوشه res/layout/activity_main.xml را براي اضافه كردن كد XML مربوطه تغيير‌و تحول دهيد.
نرم افزار را ايفا نمائيد، يك دستگاه اجرايي اندرويد تعيين فرمائيد و نرم افزار را روي آن نصب كرده و حاصل را نظارت نماييد.


ادامه مطلب
امتیاز:
بازدید:
برچسب: طراحي اپليكيشن،
موضوع:
[ ۱۸ آبان ۱۴۰۱ ] [ ۱۰:۱۲:۰۶ ] [ حامد ] [ نظرات (0) ]

براي به كارگيري از اين آناليز كننده ي املا ما يحتاج ميباشد طراحي اپليكيشن تا اينترفيس SpellCheckerSessionListener را جاري ساختن فرمائيد و سياق هاي آن را به فعاليت ببريد؛
سينتكس آن را مي‌توانيد در ذيل مشاهده كنيد :

public class HelloSpellCheckerActivity extends Activity implements SpellCheckerSessionListener {
@Override
public void onGetSuggestions(final SuggestionsInfo[] arg0) {
// TODO Auto-generated method stub
}

@Override
public void onGetSentenceSuggestions(SentenceSuggestionsInfo[] arg0) {
// TODO Auto-generated method stub
}
}
بعد از آن موردنياز ميباشد يك آبجكت  راياپارس از كلاس SpellCheckerSession ساخت‌و‌ساز نمائيد.
با فراخواني مشي newSpellCheckerSession از كلاس TextServicesManager ، آبجكت توليد گرديده ميتواند تحت عنوان مثال قرار بگيرد.
اين كلاس به مشي في مابين نرم افزار و خدمت هاي متن (text service) استيناف مي نمايد. همينطور نياز ميباشد كه خدمت سيستم را براي مثال گذاري آن درخواست فرماييد.
سينتكس آن در ذيل ارائه گرديده‌است :

private SpellCheckerSession mScs;
final TextServicesManager tsm = (TextServicesManager) getSystemService(
Context.TEXT_SERVICES_MANAGER_SERVICE);
mScs = tsm.newSpellCheckerSession(null, null, this, true);
واپسين كاري كه بايستي اجرا دهيد، فراخواني سياق getSuggestions است تا براي هر متن آيتم نظرتان توصيه (suggestion) داشته باشيد. سفارش ها به روال onGetSuggestions منتقل خواهند شد، جايي كه شما هر كاري كه ميخواهيد مي‌توانيد جاري ساختن دهيد.

mScs.getSuggestions(new TextInfo(editText1.getText().toString()), 3);
اين مشي دو پارامتر را تحت عنوان ورودي ميگيرد.
اولي پارامتر، فن اي به صورت آبجكت TextInfo ميباشد و دو‌مين پارامتر شماره ي cookie است كه براي مشخص و معلوم كردن سفارش ها به كار گيري ميگردد.
علاوه برا اين اسلوب ها ، اسلوب هاي ديگري به وسيله كلاس SpellCheckerSession و براي سفارش هاي عالي ارائه مي‌شوند. ليست اين مشي ها را در جدول تحت مشاهده ميكنيد :

()cancel : موقعيت پندينگ (pending) را لغو كرده و عمل تحليل كردن املا را ايفا مي نمايد.

()close : اين مشي session را به نقطه پايان رسانده و به TextServicesManagerService اذن مي‌دهد تا از آناليز كننده املا غير وابسته گردد.

(getSentenceSuggestions(TextInfo[] textInfos, int suggestionsLimit : پيشنهاداتي از جملا‌ت معلوم گرديده مي‌گيرد.

()getSpellChecker : داده ها spell checker service را كه مرتبط با اين session از تحليل كننده باشد، مي‌گيرد.

()isSessionDisconnected : اين روال True را بر مي گرداند در شرايطي كه اتصال به خدمت متن درين نصيب جدا گرديده باشد.

 

نمونه :

در اينجا مثالي ارائه ميشود كه به كارگيري از Spell Checker را توضيح ميدهد. اين نمونه نرم افزار اساس اي ساخت و ساز مي نمايد كه به شما اذن مي‌دهد از محاسبه كننده املا استعمال كرده و suggestion هايي اخذ فرماييد .

براي جاري ساختن اين نمونه ميتوانيد آن را روي يك دستگاه حقيقي و واقعي يا اين كه يك امولاتور هجرا نماييد.

براي ساخت يك نرم‌افزار ي اندرويد از اندرويد استوديو پايين پكيج com.example.hellospellchecker استعمال نماييد .
فولدر src/MainActivity.java را براي افزودنكد هاي ما يحتاج تغيير و تحول دهيد.
res/layout/main را براي اضافه كردن كامپوننت هاي XML مربوطه تغيير و تحول دهيد.
نرم افزار را انجام كرده و يك دستگاه اجرايي اندرويد تعيين نماييد، نرم افزار را روي آن نصب كرده و نتيجه ها را رسيدگي نماييد.

محتواي تغيير و تحول يافته ي پوشه src/MainActivity.java :

package com.example.sairamkrishna.myapplication;

import android.app.Activity;
import android.content.Context;
import android.سيستم عامل.Bundle;
import android.view.View;
import android.view.textservice.TextInfo;
import android.view.textservice.TextServicesManager;

import android.widget.Button;
import android.widget.EditText;

import android.view.textservice.SentenceSuggestionsInfo;
import android.view.textservice.SpellCheckerSession;
import android.view.textservice.SpellCheckerSession.SpellCheckerSessionListener;
import android.view.textservice.SuggestionsInfo;

import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity implements SpellCheckerSessionListener {
Button b1;
TextView tv1;
EditText ed1;
private SpellCheckerSession mScs;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

b1=(Button)findViewById(R.id.button);
tv1=(TextView)findViewById(R.id.textView3);

ed1=(EditText)findViewById(R.id.editText);
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(),
ed1.getText().toString(),Toast.LENGTH_SHORT).show();
mScs.getSuggestions(new TextInfo(ed1.getText().toString()), 3);
}
});
}

public void onResume() {
super.onResume();
final TextServicesManager tsm = (TextServicesManager)
getSystemService(Context.TEXT_SERVICES_MANAGER_SERVICE);
mScs = tsm.newSpellCheckerSession(null, null, this, true);
}

public void onPause() {
super.onPause();
if (mScs != null) {
mScs.close();
}
}

public void onGetSuggestions(final SuggestionsInfo[] arg0) {
final StringBuilder sb = new StringBuilder();

for (int i = 0; i < arg0.length; ++i) {
// Returned suggestions are contained in SuggestionsInfo
final int len = arg0[i].getSuggestionsCount();
sb.append('n');

for (int j = 0; j < len; ++j) {
sb.append("," + arg0[i].getSuggestionAt(j));
}

sb.append(" (" + len + ")");
}

runOnUiThread(new Runnable() {
public void run() {
tv1.append(sb.toString());
}
});
}

@Override
public void onGetSentenceSuggestions(SentenceSuggestionsInfo[] arg0) {
// TODO Auto-generated method stub
}
}
محتواي تغيير و تحول يافته ي res/layout/main.xml :


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:layout_height="wrap_content"
android:id="@+id/textview"
android:textSize="35dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />

android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Tutorials point"
android:id="@+id/textView"
android:layout_below="@+id/textview"
android:layout_centerHorizontal="true"
android:textColor="#ff7aff24"
android:textSize="35dp" />

android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Suggestions"
android:id="@+id/button"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true" />

android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editText"
android:hint="Enter Text"
android:layout_above="@+id/button"
android:layout_marginBottom="56dp"
android:focusable="true"
android:textColorHighlight="#ff7eff15"
android:textColorHint="#ffff25e6"
android:layout_alignRight="@+id/textview"
android:layout_alignEnd="@+id/textview"
android:layout_alignLeft="@+id/textview"
android:layout_alignStart="@+id/textview" />

android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView"
android:src="@drawable/abc"
android:layout_below="@+id/textView"
android:layout_centerHorizontal="true" />

android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Suggestions"
android:id="@+id/textView3"
android:textSize="25sp"
android:layout_below="@+id/imageView" />

 

محتواي res/values/string.xml:


My Application

محتواي فولدر AndroidManifest.xml:


package="com.example.sairamkrishna.myapplication" >

android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >

android:name=".MainActivity"
android:label="@string/app_name" >

 

درحال حاضر ميخواهيم نرم افزار متبوع را جاري ساختن كنيم .

فرض ميكنيم كه در هنگام اجرا پيكربندي گوشه و كنار ، AVD خويش را ساخت نموده ايد. براي اجراي نرم افزار از اندرويد استوديو ، يك كدام از فولدر هاي اكتيويتي نرم افزار را گشوده كرده و روي آيكون Run در نوار ابزار كليك نماييد. اندرويد استديو نرم افزار را روي AVD نصب كرده و آن را جاري ساختن مي نمايد. چنانچه كليه چيز در زمينه ي اپليكيشن و پيكربندي آن صحيح باشد، پنجره ي امولاتور تحت اكران داده گردد :


ادامه مطلب
امتیاز:
بازدید:
برچسب: طراحي اپليكيشن،
موضوع:
[ ۱۷ آبان ۱۴۰۱ ] [ ۱۰:۴۸:۲۳ ] [ حامد ] [ نظرات (0) ]

اندرويد دارنده دسته اي از view هاي (ابزارك هاي) مهم ميباشد طراحي اپليكيشن  و كلاس شالوده هر ابزارك Android كلاس View (با سخن V بلندمرتبه) ميباشد. تصوير پايين بخشي از سلسله مراتب view ها را نماد مي‌دهد:

دو طريق براي ساخت‌و‌ساز يك view از اندرويد و تهيه و تنظيم مقادير براي خصوصيت هاي آن وجود داراست:

از روش فولدر xml در پوشه هاي layout
از روش كد جاوا و يا اين كه كاتلين

فعاليت با view ها در كاتلين

از روش كد كاتلين مي اقتدار view به فولدر layout اضافه كرد.  راياپارس براي مثال در كد پايين TextView را بجاي پوشه layout قرار ميدهيم. در اكتيويتي اساسي خط setContentView(R.layout.activity_main) در سياق onCreate را با كد ذيل جايگزين نمائيد:

val email = TextView(this) // 1
email.text = "Hello Custom Views" // 2
setContentView(email) // 3
در اينجا شما يك TextView به ياري context بدست آمده از اكتيويتي مي سازيد
بجاي متن، عبارت « Hello Custom Views » را قرار مي دهيد
TextView را بجاي محتواي كاغذ قرار مي دهيد
در حالتي كه اپليكيشن را build و جاري ساختن فرماييد ميبينيد كه عبارت « Hello Custom Views » روي كاغذ نقش مي بندد. مثل تصوير تحت:


عمل با view ها در فولدر xml

درحال حاضر پوشه res/layout/activity_main.xml را گشوده نمائيد. براي استعمال از يك كدام از view هاي مهم اندرويد مانند TextView ، صرفا كافي ميباشد آن را از پنجره سمت چپ به باطن ويرايشگر بكشيد و آن را روي ويرايشگر بيندازيد ، يا اين كه به ويرايشگر متن XML برويد و خطوط ذيل را به كد XML اضافه نمائيد:

android:id="@+id/email"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello Custom Views"/>
مي‌توانيد بخش اعظمي از خصوصيت هاي اصلي از كلاس View را در XML تغيير تحول دهيد. برخي از اين صفات عبارتند از: id, layout_width, layout_height, alpha, visibility, elevation, padding, tag, و غيره.

براي تغيير و تحول يك خصوصيت ، مانند متن در TextView ، تنها اسم خصوصيت (android: text) را اضافه نمائيد و مانند واپسين خط قطعه كد پيشين ، كمي را به آن تخصيص دهيد (مثل متني كه اينجانب در كد وارد كرده ام: "Hello Custom Views").

در شرايطي كه در مرحله گذشته ()onCreate را تغيير تحول داده ايد، براي به كار گيري از فولدر xml لايوت بايستي كد setContentView (R.layout.activity_main) را به ()onCreate گشوده گردانيد براي اينكار onCreate در MainActivity را به شرايط نخستين گشوده گردانيد و كدي را كه تا قبل از اينً اضافه نموده ايد برداريد.


ادامه مطلب
امتیاز:
بازدید:
برچسب: طراحي اپليكيشن،
موضوع:
[ ۱۶ آبان ۱۴۰۱ ] [ ۱۰:۲۰:۱۹ ] [ حامد ] [ نظرات (0) ]

بكار گيري Maps SDK براي اندرويد به يك كليد API نياز دارااست. طراحي اپليكيشن براي تهيه كردن كليد API ، پروژه خويش را در شيت API & Services تصويب فرمائيد. كليد API به يك گواهينامه ديجيتال گره خورده ميباشد كه نرم‌افزار را به تاليف كننده آن متصل مي نمايد.

در‌اين نوشته‌ي علمي ، از كليد API براي مدرك گونه هاي زدايي (debug certificate) استعمال مي‌كنيم.  راياپارس سند گونه هاي زدايي از حيث پياده سازي ناامن ميباشد زيرا براي آزمايش اپليكيشن ميباشد. نرم‌افزار هاي منتشر گرديده اندرويدي كه از Maps SDK به كار گيري مي نمايند ، به كليد API دوم نياز دارا هستند: كليد مدرك نشر (release certificate).

Android Studio دارنده يك سرمشق براي اكتيويتي نقشه گوگل ميباشد كه كدهاي مفيدي را به طور اتومات ساخت‌و‌ساز مي نمايد. بخشي از كد اين سر مشق مشتمل بر يك فولدر google_maps_api.xml ميباشد. باطن اين پوشه لينكي ميباشد كه فراهم كردن كليد API را معمولي مي نمايد.

اين بخش دربرگيرنده سه مرحله ميباشد:

مرحله اوليه: ساختن پروژه Wander با الگوي نقشه ها
يك پروژه تازه Android Studio ساخت نمائيد.
الگوي « Google Maps Activity » را گزينش فرمائيد.

3. اسم پروژه را Wander بگذاريد.

4. دستكم سطح API (minimum API) را روي API 19 تهيه و تنظيم فرمائيد. مطمئن گرديد گويش Kotlin ميباشد.

5. روي Finish كليك نمائيد.

بعد از تشكيل داد اپليكيشن ، نگاهي به پروژه خويش و فايلهاي مرتبط با نقشه ها كه Android Studio براي شما ساخت‌و‌ساز مي نمايد ، بيندازيد:

google_maps_api.xml - شما براي نگه داشتن كليد API خويش از اين پوشه تنظيمات به كار گيري ميكنيد. الگوي انتخابي در مرحله قبلي دو پوشه google_maps_api.xml ساخت‌و‌ساز مي نمايد: يكي از براي انواع زدايي (debug) و ديگري براي تكثير (release). پوشه كليد API براي مدرك گونه هاي زدايي در فايل src/debug/res/values واقع گرديده است. پوشه كليد API براي مدرك تكثير در فولدر src/release/res/values قراردارد. درين نوشته ي علمي، شما صرفا از سند گونه هاي زدايي استعمال ميكنيد.

activity_maps.xml - اين فولدر layout مشتمل بر يك fragment ميباشد كه تك تك برگه را لبريز مي نمايد. كلاس SupportMapFragment يك پايين كلاس از كلاس Fragment ميباشد. SupportMapFragment بي آلايش ترين منش براي قرار دادن نقشه در يك اپ ميباشد. اين فرگمنت يك پوشش در نزديكي نماي نقشه ميباشد و به صورت اتوماتيك به رويدادهاي چرخه معاش (life cycle) نقشه پژوهش مي نمايد.


ادامه مطلب
امتیاز:
بازدید:
برچسب: طراحي اپليكيشن،
موضوع:
[ ۱۵ آبان ۱۴۰۱ ] [ ۱۱:۱۲:۲۹ ] [ حامد ] [ نظرات (0) ]
[ ۱ ][ ۲ ][ ۳ ][ ۴ ][ ۵ ][ ۶ ][ ۷ ][ ۸ ][ ۹ ][ ۱۰ ][ ۱۱ ][ ۱۲ ][ ۱۳ ][ ۱۴ ][ ۱۵ ][ ۱۶ ][ ۱۷ ][ ۱۸ ][ ۱۹ ][ ۲۰ ][ ۲۱ ][ ۲۲ ][ ۲۳ ][ ۲۴ ][ ۲۵ ][ ۲۶ ][ ۲۷ ][ ۲۸ ][ ۲۹ ][ ۳۰ ][ ۳۱ ][ ۳۲ ][ ۳۳ ][ ۳۴ ][ ۳۵ ][ ۳۶ ][ ۳۷ ][ ۳۸ ][ ۳۹ ][ ۴۰ ][ ۴۱ ][ ۴۲ ][ ۴۳ ][ ۴۴ ][ ۴۵ ][ ۴۶ ][ ۴۷ ][ ۴۸ ][ ۴۹ ][ ۵۰ ][ ۵۱ ][ ۵۲ ][ ۵۳ ][ ۵۴ ][ ۵۵ ][ ۵۶ ]
.: Weblog Themes By sitearia :.

درباره وبلاگ

نويسندگان
نظرسنجی
لینک های تبادلی
فاقد لینک
تبادل لینک اتوماتیک
لینک :
خبرنامه
عضویت لغو عضویت
پيوندهای روزانه
لينكي ثبت نشده است
پنل کاربری
نام کاربری :
پسورد :
عضویت
نام کاربری :
پسورد :
تکرار پسورد:
ایمیل :
نام اصلی :
آمار
امروز : ---
دیروز : ---
افراد آنلاین : ---
همه : ---
چت باکس
موضوعات وب
موضوعي ثبت نشده است
امکانات وب

سئو کار حرفه ای / خرید پیج اینستاگرام / باربری / دانلود نرم افزار اندروید  / شرکت خدمات نظافتی در مشهد / شرکت نظافت منزل و راه پله در مشهد / شرکت نظافت راه پله در مشهد / شرکت نظافت منزل در مشهد  /سایت ایرونی  / بازی اندروید  /  خدمات گرافیک آریا گستر  / فروش پیج آماده آریا گستر / نیازمندی های نظافتی / وکیل در مشهد / ارز دیجیتال / نیازمندی های قالیشویی / مبل شویی / املاک شمال  / آرد واحد تهران / فیزیوتراپی سیناطب / sell Instagram account safely / نیازمندی های گردشگری / نیازمندی های سالن زیبایی