رفتن به مطلب
انجمن اندروید ایران | آموزش برنامه نویسی اندروید و موبایل

پست های پیشنهاد شده

در اندروید 4 روش برای ذخیره اطلاعات وجود دارد :

1- Shared preferences

2- Sqlite Databases

3- Content Provider

4- Files

که بیشتر بر روی Sqlite(http://www.sqlite.org) کار خواهیم کرد و بقیه را در آموزش های بعدی معرفی خواهم کرد،بحث دیتابیس بدلیل گستردگی، نمی توان در یک آموزش بیشتر مباحث را شرح داد پس مرحله به مرحله پیش می رویم و در مرحله اول با ساختار دیتابیس و پیشنیازهای اولیه کار خواهیم کرد.

دیتابیس Sqlite :

Sqlite یک موتور دیتابیسی کوچک ولی قوی بود که توسط دکتر ریچارد هیپ در سال 2000 میلادی ایجاد شد. Sqlite ابتدا توسط اپل برای iphone ، موبایل های Symbian ،موزیلا فایرفاکس ، Skype ، PHP ، Adobe Air ، Mac OS X ، Solaries و بیشتر محیط های برنامه نویسی دیگر نیز استفاده می شد.که در اندروید نیز از همین دیتابیس استفاده خواهد شد.

برای مدیریت دیتابیس sqlite باید از برنامه های زیر استفاده کنید :

1- SqliteAdmin

2- sqliteBrowser

3- یک ADD-ONS Mozilla به نام SQLite Manager

4- و . . .

[align=center]6838_sqlite.png

توانایی های Sqlite عبارتند از :

[/align][align=center]i5869_type.png[/align]

بیشتر این ایتم های بررسی خواهند شد و مثال های کاربردی نیز ارائه خواهد شد و برای شروع با متدها و کلاس های دیتابیس آشنا خواهیم شد.

- چگونه دیتابیس را باز کنیم

روش اول)

public staticSQLiteDatabase.openDatabase(                            
Stringpath, SQLiteDatabase.CursorFactoryfactory, intflags )
 

پارامتر ها :

Path : مسیر دیتابیس

Factory : یک متد اختیاری برای وقتی که Cursor یک شرط را فراخوانی می کند استفاده می شود( cursor بعدا بررسی خواهد شد)

Flags : برای کنترل کردن حالت دسترسی به دیتابیس

که سه حالت دارد :

OPEN_READWRITE-	OPEN_READONLY-	CREATE_IF_NECESSARY
 

مثال 1 ) ایجاد کردن دیتابیس Sqlite :

[/align][align=center]w1592_newdb.png

شرح کدها :

ابتدا باید یک متغیر از نوع SQLiteDatabase با اسم db بصورت عمومی اعلان کنیم، تا بتوانیم در قسمت های دیگر کلاس ازش استفاده کنیم.

سپس در متد OnCreate باید دیتابیس باز کنیم( دیتابیس که قبلا وجود دارد) اگر وجود نداشت آنرا ایجاد خواهد کرد.

ارگومان

"/data/data/cis493.sqldatabases/myfriendsDB"

مسیر دیتابیس را که با نام myfriendsDB ایجاد کرده ایم را باز می کند. و پوشه های data که آمده ، برای این است که در حین اجرای برنامه در آن مسیر قرار گرفته.برای دستیابی به این مسیر در ایکلیپس باید آیکن DDMS را که در بالای برنامه قرار دارد را انتخاب کرده ، سپس در کادر باز شده روی تب File Exploree رفته و می توانید مسیر را مانند نمونه بالا پیدا کنید که باید در مسیر data نام پروژه خود را انتخاب و سپس در پوشه database نام دیتابیس قرار داده شده را مشاهده کنید.

[/align][align=center]m8329_path.png

- متد db.close(); : بستن دیتابیس

روش دوم) روش دوم برای بازکردن/ ایجاد کردن دیتابیس در داخل برنامه بصورت زیر میباشد

[/align][align=center]v7357_open.png[/align]

- اجرای دستورات :

بعد از اینکه دیتابیس باز/ایجاد شد ، می توان روی دیتابیس اعمال : ایجاد جداول،حذف جداول، افزودن اطلاعات و ... قابل انجام خواهد بود.

1- ایجاد جدول :

کلا برای کار با sqlite باید با زبان sql آشنایی کافی داشته باشید.برای ایجاد جدول مانند زیر از دستور :

create table tblAMIGO( recIDinteger PRIMARY KEY autoincrement, name text, phone text );
 

استفاده می کنیم.این دستور یک جدول با نام tblAMIGO را که دارای سه فیلد میباشد ایجاد می کند.

نوشتن دستور در برنامه نویسی :

db.execSQL("create    table    tblAMIGO("+ " recID     integer    PRIMARY KEY autoincrement, "+ " name   text, "+ " phone text );   "    );
 

شی db را قبلا ایجاد کرده ایم و توسط متد execSQL می توان دستورات sql را نوشت.از این متد برای اجرای دستور استفاده می شود.

2- افزودن اطلاعات : برای این کار دقیقا مانند مثال بالا عمل می کنید و دستور insert را اجرا می کنید :

db.execSQL( "insert into tblAMIGO(name, phone) values ('AAA', '555' );" );

این خط باعث افزودن یک رکورد اطلاعاتی به جدول مربوطه می شود. که فیلد اول بصورت یکتا میباشد ، فیلد دوم AAA و فیلد سوم 555 در آن قرار می گیرد.

مثال های زیر هم :

db.execSQL( "insert into tblAMIGO(name, phone) values ('BBB', '777' );" );

db.execSQL( "insert into tblAMIGO(name, phone) values ('CCC', '999' );" );

دو رکورد در آن قرار می دهند.

** برای افزودن اطلاعات به جدول مثلا یک اطلاعات خاصی که کابر وارد کند باید یک textview را تعریف کرد و در دستور

db.execSQL( "insert into tblAMIGO(name, phone) values (t1.getText(), '777' );" );

اصلاعات آن را در فیلد مربوطه قرار داد.

فیلدهای پشتیبان کننده Sqlite :

text,varchar, integer, float, numeric, date, time, timestamp, blob, boolean

که بیشترشون مشخص هستند و نیاز به توضیح خاصی در مورد کاربردشون نیست.

بهتره همیشه موقعی که دستورات نوشته بشه درون یک try /catch نوشته بشه و برنامه crash نکنه و بتونید برنامه را مدیریت کنید تا از بروز خطا و خروج از برنامه جلوگیری بشه.

مانند مثال زیر )

try{
//perform your database operations here ...}
catch(SQLiteException e){
//report problem
}finally{
db.endTransaction();
}
 
 
لینک ارسال
به اشتراک گذاری در سایت های دیگر
  • 2 ماه بعد...

سلام این برنامه هایی که گفتی رو میشه برای دانلود بگذاری همین sqladmin و دو تای دیگه رو چون من رفتم تو سایتش هیچی نفهمیدم نمیدونم کدومو دانلود کنم 

مرسی

لینک ارسال
به اشتراک گذاری در سایت های دیگر
  • 3 هفته بعد...

سلام ممنون از توضیحات خوبتون

میشه بگید اگر بخواهیم دیتیابیس رو از طریق sqllit  بسازیم باید کدوم لینک رو دانلود کنیم و اگر از طریق خود برنامه

مثل این کد این دیتابیس دقیقا کجا ساخته میشه و اگر بخواهیم بهش مسیر دلخواه بدیم چطوری هست؟

514x100http://www.uploadtak.com/images/v7357_open.png[/img]

لینک ارسال
به اشتراک گذاری در سایت های دیگر
  • 3 ماه بعد...

سلام

من خواستم از دستور insert استفاده کنم بهم این خطا رو داد:

DBError.png

چیکارش باید بکنم؟

db.execSQL("insert into doctor( name,family,Specialties,Address, phone) values (txtName.getText(),txtFamily.getText(),txtSpecialize.getText(),txtAddress.getText(),txtPhone.getText() );");
لینک ارسال
به اشتراک گذاری در سایت های دیگر

این دستور اشتباه میباشد. برای افزودن به دیتابیس از آموزش دوم دیتابیس اندروید استفاده کنید.

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر
  • 4 ماه بعد...
  • 2 هفته بعد...

سلام

من تازه دارم اندرويد ياد ميگيرم ميخوام يه برنامه اندرويدي با کد نويسي بنويسم که جزوه درس انگليسمون است,مشکلي که دارم نميدونم چه جوري بايد متن اين جزورو وارد برنامه کنم لطفا کمک کنيد.

لینک ارسال
به اشتراک گذاری در سایت های دیگر
  • 1 ماه بعد...

سلام

من و دوستام داریم یه نرم افزار طراحی میکنیم که داخلش از دیتابیس استفاده میشه

چند تا جدول داریم که هر کدوم از بچه ها وظیفه دارن جدول مربوط به خودشون رو پر کنند (اطلاعات فارسی)

بانکمون هم با sqlite درست کردیم

حالا سوال اینجاست :

با sqlitebrowser_200_b1_winر میشه جداول رو بین بانک انتقال داد

فقط یه مشکلی داره اونم اینه که وقتی جداول رو import می کنم تمام متن های فارسیم خراب میشه

پیشنهاد شما برای تقسیم کار و فارسی نوشتن چیه؟؟

شاد باشید.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام ...

دوستان تصاویر پست اول گویا از روی سرور حذف شدن ...

درصورت امکان لینک ها رو تصحیح کنید ...

باتشکـــــــر :rolleyes:

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام

من و دوستام داریم یه نرم افزار طراحی میکنیم که داخلش از دیتابیس استفاده میشه

چند تا جدول داریم که هر کدوم از بچه ها وظیفه دارن جدول مربوط به خودشون رو پر کنند (اطلاعات فارسی)

بانکمون هم با sqlite درست کردیم

حالا سوال اینجاست :

با sqlitebrowser_200_b1_winر میشه جداول رو بین بانک انتقال داد

فقط یه مشکلی داره اونم اینه که وقتی جداول رو import می کنم تمام متن های فارسیم خراب میشه

پیشنهاد شما برای تقسیم کار و فارسی نوشتن چیه؟؟

شاد باشید.

توسط یکی از برنامه های مدیریت sqllite یک جدول ایجاد کن با ستون های مورد نظر و توی اون داده های فارسی وارد کن و بعدش از همون یک export بگیر با فرومت csv  یا xml یا text    و یا sql و بعد اون فایل رو باز کن و شبیه اون سطر ها بقیه داده هاتو وارد کن و بعد import! 

اول تست کن اگه اوکی بود به هر کدام  از بروبچ یک فایل بده توش داده ها رو وارد کنند! یا توی اکسل بنویسن و ازشون بگیر و تبدیل کن!


سلام

من تازه دارم اندرويد ياد ميگيرم ميخوام يه برنامه اندرويدي با کد نويسي بنويسم که جزوه درس انگليسمون است,مشکلي که دارم نميدونم چه جوري بايد متن اين جزورو وارد برنامه کنم لطفا کمک کنيد.

اخه مشکلت رو مطرح کن ببینیم چیه ؟ 

مشکل کار با sqllite ?  یا حجم زیاد جزوه ؟ یا تایپش ؟ یا چیز دیگه ؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

با سلام من با نرم افزار navicat for sqlite یه دیتابیس درست کردم

به اون یه سری فیلد اضافه کردم که شامل title , body هستش

در واقع برنامه من برای زبان انگلیسیه که یه سری جملات رو با معنیشون داره (من قصد درست کردن دیکشنری ندارم)

قسمت تایتل خود جمله و قمست بادی معنیشه

.

.

.

حالا راهنمایی ای که من از شما میخوام اینه که چجوری میتونم برای برنامه خودم یه قسمت برای جستجو قرار بدم که بتونه داخل دیتابیس جستجو کنه و نتایج رو نشون بده

در ضمن کدهام رو به این صورت نوشتم ( من برنامه هام رو با Basic for android درست میکنم)

If File.Exists(File.DirInternal,"hekeyat.db")=False Then	File.Copy(File.DirAssets,"hekayat.db",File.DirInternal,"hekayat.db")End Ifsql1.Initialize(File.DirInternal,"hekayat.db",False)ListView1.TwoLinesLayout.ItemHeight=100dipListView1.TwoLinesLayout.SecondLabel.Height=100dip	Dim cur1 As CursorTry	cur1=sql1.ExecQuery("SELECT * FROM hekayat")	For j=0 To cur1.RowCount-1		cur1.Position=j		ListView1.AddTwoLines(cur1.GetString("sTitle"),cur1.GetString("sBody"))	NextCatchi=0End Try
لینک ارسال
به اشتراک گذاری در سایت های دیگر
  • 1 ماه بعد...

سلام

من می خواهم یه نوع داده برای فایل در پایگاه داده تعریف کنم، باید چه نوع داده گذاشت؟ آیا نوع Blob??

در ضمن در کلاس شی گرا

[shcode=java]

public Blob getSaveSound(){

        return SaveSound;

    }

    public void setSaveSound(Blob savesound){

        this.SaveSound =  savesound;

    }

[/shcode]

آیا از نوع Blob درست است؟

[[shcode=java]

[align=left]public Ava (Parcel ino){

        id = ino.readInt();

        NameSound = ino.readString();

        URL = ino.readString();

        SaveSound = ino.readint();

        BookMark = ino.readInt();

       

    }

[/shcode]

  SaveSound = ino.readint(); آخرش readint خطا میاد؟ یاید چی نوعی قرار داد؟

با تشکر

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بهتره خود عکس را در دیتابیس ذخیره کنید و نام تصاویر را ذخیره کنید،چون blob تصاویر بصورت باینری ذخیره میشوند و دوباره باید از باینری اطلاعات را بخوانید.

روش کارتون درست هستش و چون از Parcelable استفاده کرده اید میتوانید از  object هاتون رو استفاده کنید.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام

ممنون از توضیحاتون

نمی خواهم عکس استفاده کنم، بلکه می خواهم صوتی بزارم تا انو بخونه

یعنی اگر از object استفاده کنم غیر از عکس مثلا صوتی در پایگاه خوانده میشه؟ و بقیه مشکلی پیش نمیاد؟

ممنون

لینک ارسال
به اشتراک گذاری در سایت های دیگر
  • 1 ماه بعد...

من برای کاراموزی دانشگاه دوره برنامه نویسی اندروید رو گذروندم و الان باید پروژه اش رو تا دهم شهریور تحویل بدم . پروژه ای که به من دادند برنامه تغذیه کودک هستش که بر اساس ماه به مادر گفته میشه چه غذایی باید به کودکش که بین 0-1 ساله است داده بشه .البته بخش های دیگری هم داره که فعلا مد نظر من نیست . استادمون گفتند حتما باید از sqlite studio  استفاده کنیم . من این نرم افزار رو دانلود و نصب کردم و توش پایگاه داده ام رو ساختم . یک جدول با نام تغذیه درست کردم که دو ستون داره یکی ایدی ماه هستش و دیگری متن تغذیه مناسب که برای هر ماه حداقل 10-15 خط هستش . مادر با ورود به برنامه فهرست ماهها رو جلوش میبینه و با کلیک بر روی هرکدوم از ماهها باید اطلاعات متن از دیتابیس خونده بشه و برای مادر نمایش داده بشه . من اصلا نمیدونم  چطور باید اینکارو انجام بدم دکمه های ماه رو در xml ساخته ام و قسمت on clickرو هم نوشتم اما نمیدونم چطور باید متن رو از دیتابیس بگیرم و نمایش بدم میشه خواهشا کمکم کنید ؟ در واقع من نمیدونم چه تابعی باید برای خوندن متن هام از دیتابیس و نمایشش در textview قرار گرفته در layout بنویسم ؟ ایا باید از cursor استفاده کنم ؟

تو این قسمت از برنامه من هیچ نوشتنی در دیتابیس ندارم و فقط باید بخونم در ضمن همونطور که استادمون گفته بودند من یک java class جدا برای نوشتن توابعم ساخته ام و در بقیه activity ها فقط این توابعو فراخوانی میکنم ......ممنون میشم از هرکسی که در حد توانش کمکم کنه huh.gifhuh.gifhuh.gifhuh.gifhuh.gifhuh.gifhuh.gifhuh.gifhuh.gifhuh.gif

لینک ارسال
به اشتراک گذاری در سایت های دیگر
سلام

دوست عزیز شما پست استفاده از دیتابیس خارجی رو تو سایت پیدا کنین احتمالا مشکلتون حل میشه

لینک ارسال
به اشتراک گذاری در سایت های دیگر
  • 3 ماه بعد...

سلام یک سوال

من در پایگاه داده ها،  100 تا رکود دارم،

برنامه ی نوشته بشه که همه فیلد ها به طور همزمان آپدیت شه، مثلا در ستون اولی، همه سطر ها عدد یک است، وقتی دکمه زده شد، همه رو به عدد صفر آپدیت بشه

از چه روشی استفاده کنم؟

با تشکر

لینک ارسال
به اشتراک گذاری در سایت های دیگر
سلام

دوست عزیز شما میتونی از کد زیر استفاده کنی

update tbl set id=0 where id=1

اگه بخوای چندتا فیلد و همزمان مقدارشونو عوض کنی با کاما اونا رو از هم جدا کن

لینک ارسال
به اشتراک گذاری در سایت های دیگر

این کدی گفتی کد دستوری پایگاه داده است

منظورم این نیست که 100 تا رکورد جداگانه بنویسیم!؟؟؟!!!!

این کد زیر ببنید، فقط می تونه یک رکورد اپدیت کنه

[shcode=java]

       //---- update a contact

       public boolean updateContact(long rowld, String name)

       {

           ContentValues arg = new ContentValues();

           arg.put(KEY_NAME, name);

          //arg.put(KEY_EMAIL, email);

          return db.update(DATABASE_TABLE, arg, KEY_ROWID + "=" + rowld, null) > 0;

          

       }

[/shcode]

روش دیگه هم هست، اگر از روش شی گرا باشه

اینم فقط یک رکورد اپدیت می کنه

[shcode=java]

    // ---updates a contact---

    public boolean updateContact(AvaSh up_ava) {

        ContentValues argsa = new ContentValues();

 

            argsa.put(KEY_ID, up_ava.getId());

            argsa.put(KEY_NAME, up_ava.getName());

            argsa.put(KEY_Famil, up_ava.getfamil());

            argsa.put(KEY_Faal_boolean, up_ava.getfaal());

   

           

        return db.update(DATABASE_TABLE_ALL, argsa, KEY_ID + "=" + up_ava.getId(),

                null) > 0;

    }

[/shcode]

چی کدی باید  جایگزن کنیم، که همه رکود همزمان آپدیت شه؟

با تشکر

لینک ارسال
به اشتراک گذاری در سایت های دیگر
سلام

خب شما روشتون فرق میکنه توی کد اخری که گذاشتین ببینین گفتین

[shcode=java]KEY_ID + "=" + up_ava.getId(),[/shcode]

این فقط واسه ایدیه توی قسمت بالا رو نگاه کنین نوشتین

[shcode=java]argsa.put(KEY_ID, up_ava.getId());[/shcode]

شما دارین این فیلد و اپدیت میکنین برای بقیه هم باید ادامه همین خط اول که گفتیم بنویسین.یه چیز دیگه هم اینکه شما دارین یک پارامتر و میفرستین برای اپدیت باید به تعداد فیلدهاتون پارامتر بفرستین

این لینک و هم ببین یه روش دیگه ست

http://androidituts.com/android-sqlite-database-insert-example/

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام

فک کنم خوب میتوجه نشدی

منم گفتم دیگه که اون دو روش فقط یک فیلد آپدیت می کنه

حالا چی کار کنیم که همه فیلدها در ستون چهارمی (KEY_Faal_boolean) اپدیت بشه؟؟؟؟ از حلقه For که میشه استفاده کرد؟؟

 باتشکر

لینک ارسال
به اشتراک گذاری در سایت های دیگر
  • 1 ماه بعد...
  • 4 هفته بعد...

سلام  یه سوال فوری داشتممن برای اندروید تو سایت با لینک زیر

http://android-learn.ir/

ثبت نام کردم 

امروز تازه این سایتو دیدم

می خوام بدونم خدایی اینجا میتونم اندروید رو یاد بگیرم؟؟

ممنون

لینک ارسال
به اشتراک گذاری در سایت های دیگر

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

  • مطالب مشابه

    • توسط Farzad Sarseifi
      آموزش پیاده سازی دیتابیس اندروید همراه با مثال عملی
      در این اموزش میتوانید یک دیتابیس اندروید ایجاد کنید که توانایی افزودن اطلاعات،ویرایش اطلاعات ،حذف و لیست گیری اطلاعات باشید.
       
      ابتدا  یک کلاس برای ایجاد SqliteopenHelper دیتایس و جداول ایجاد میکنیم و متدهای مورد نظر را نیز در ادامه مینویسیم
      import java.util.ArrayList; import java.util.HashMap; import java.util.Hashtable; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.DatabaseUtils; import android.database.sqlite.SQLiteOpenHelper; import android.database.sqlite.SQLiteDatabase; public class DBHelper extends SQLiteOpenHelper { public static final String DATABASE_NAME = "MyDBName.db"; public static final String CONTACTS_TABLE_NAME = "contacts"; public static final String CONTACTS_COLUMN_ID = "id"; public static final String CONTACTS_COLUMN_NAME = "name"; public static final String CONTACTS_COLUMN_EMAIL = "email"; public static final String CONTACTS_COLUMN_PHONE = "phone"; private HashMap hp; public DBHelper(Context context) { super(context, DATABASE_NAME , null, 1); } @Override public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub db.execSQL( "create table contacts " + "(id integer primary key, name text,phone text,email text)" ); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub db.execSQL("DROP TABLE IF EXISTS contacts"); onCreate(db); } public boolean insertContact (String name, String phone, String email) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues contentValues = new ContentValues(); contentValues.put("name", name); contentValues.put("phone", phone); contentValues.put("email", email); db.insert("contacts", null, contentValues); return true; } public Cursor getData(int id) { SQLiteDatabase db = this.getReadableDatabase(); Cursor res = db.rawQuery( "select * from contacts where id="+id+"", null ); return res; } public int numberOfRows(){ SQLiteDatabase db = this.getReadableDatabase(); int numRows = (int) DatabaseUtils.queryNumEntries(db, CONTACTS_TABLE_NAME); return numRows; } public boolean updateContact (Integer id, String name, String phone, String email) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues contentValues = new ContentValues(); contentValues.put("name", name); contentValues.put("phone", phone); contentValues.put("email", email); db.update("contacts", contentValues, "id = ? ", new String[] { Integer.toString(id) } ); return true; } public Integer deleteContact (Integer id) { SQLiteDatabase db = this.getWritableDatabase(); return db.delete("contacts", "id = ? ", new String[] { Integer.toString(id) }); } public ArrayList<String> getAllCotacts() { ArrayList<String> array_list = new ArrayList<String>(); //hp = new HashMap(); SQLiteDatabase db = this.getReadableDatabase(); Cursor res = db.rawQuery( "select * from contacts", null ); res.moveToFirst(); while(res.isAfterLast() == false){ array_list.add(res.getString(res.getColumnIndex(CONTACTS_COLUMN_NAME))); res.moveToNext(); } return array_list; } }  
      سپس واسط کاربری گرافیکی Layout را طراحی میکنیم  activity_main.xml
      <?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/scrollView1" android:layout_width="match_parent" android:layout_height="wrap_content" tools:context=".MainActivity" > <LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="370dp"> <EditText android:id="@+id/editTextName" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" android:inputType="text" > </EditText> <EditText android:id="@+id/editTextEmail" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="22dp" android:ems="10" android:inputType="textEmailAddress" /> <EditText android:id="@+id/edit_phone" android:layout_width="match_parent" android:layout_height="wrap_content" /> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="28dp" android:text="@string/save" /> </LinearLayout> </ScrollView>
      برای ذخیره اطلاعات در دیتابیس.میبایستی در اکتیویتی دیتابیس را new کنید تا بتوانید که اطلاعات را در دیتابیس فراخوانی کنید
      افزودن اطلاعات :
      public class MainActivity extends AppCompatActivity { DBHelper mydb; EditText editTextName,editTextEmail,edit_phone; Button button1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); editTextName=(EditText)findViewById(R.id.editTextName); editTextEmail=(EditText)findViewById(R.id.editTextEmail); edit_phone=(EditText)findViewById(R.id.edit_phone); button1=(Button)findViewById(R.id.button1); mydb = new DBHelper(this); button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String name=editTextName.getText().toString(); String email=editTextEmail.getText().toString(); String phone=edit_phone.getText().toString(); mydb.insertContact(name,email,phone); } }); }  
      بزودی آموزش تکمیل میگردد.
       
      دوره آموزشی اندروید
      http://android-learn.ir/online-learning/android-development-training/guruPrograms/1-android-programming/2-programming-mobile-applications-for-android
       
       
       
       
       
       
       
    • توسط elecomco
      وقتی شما یک اپلیکیشن اندروید درست می کنید، باید یه جوری بفهمید که آیا برنامه ای که ساخته اید درست کار می کند یا نه؟ در این مقاله می خواهیم شما را با نحوه اشکال زدایی پروژه با ADB اندروید استودیو آشنا کنیم.   
      اجرا و اشکال زدایی یا دیباگ اپلیکیشن در یک دستگاه سخت افزاری با ADB اندروید 
      یکی از مسائل مهم بعد از ساخت برنامه اندروید، این است که همیشه قبل از انتشار اپلیکیشن برای کاربران، برنامه را بر روی یک دستگاه واقعی آزمایش کنید. به همین منظور در این مقاله می خواهیم شما را با نحوه تنظیم محیط توسعه اندروید یا همان پلتفرم اندروید استودیو (Android Studio) و دستگاه اندروید برای آزمایش و اشکال زدایی از طریق اتصال ( Android Debug Bridge  (ADB آشنا کنیم.
      Android Debug Bridge که با نام ADB اندروید یا پل اشکال زدایی اندروید نیز شناخته می شود یک ابزار تحت خط فرمان جهت ارتباط و کنترل شبیه ساز (Emulator) یا دستگاه اندرویدی متصل به سیستم است و دستورات کاربردی متعددی نظیر نصب برنامه بر روی محیط شبیه ساز ، دسترسی به فایل های مستقر بر روی شبیه ساز و … را برای برنامه نویس فراهم می کند تا بتواند اپلیکیشن خود را تست و اشکال زدایی کند.
      با استفاده از شبیه ساز اندروید (Android emulator)، می توانید برنامه خود را در نسخه های مختلف دستگاه های اندرویدی  با اندازه های مختلف صفحه نمایش آزمایش کنید.
      تنظیم دستگاه برای توسعه اپلیکیشن اندروید ساخته شده 
      قبل از شروع اشکال زدایی در دستگاه، چند کار وجود دارد که باید انجام دهید:
      Settings اپلیکیشن را باز کنید. سپس گزینه Developer options را انتخاب کنید. در نهایت USB debugging را انتخاب کنید. سیستم خود را برای شناسایی دستگاه خود تنظیم کنید. macOS: به تنظیمات اضافی لازم نیست. Ubuntu Linux: برای نصب پکیج adb از apt-get install استفاده کنید. این مجموعه ای پیش فرض از قوانین udev با حفظ جامعه برای همه دستگاه های اندروید را به شما می دهد. اطمینان حاصل کنید که در گروه plugdev هستید. اگر پیام خطای زیر را مشاهده کردید ، adb شما را در گروه plugdev پیدا نکرد:
      error: insufficient permissions for device: udev requires plugdev group membership از idاستفاده کنید تا ببینید چه گروه هایی در آن هستید. از  sudo usermod -aG plugdev $LOGNAME استفاده کنید تا خود را به گروه plugdev اضافه کنید.
      مثال زیر نحوه نصب بسته ابزارهای Android adb را نشان می دهد.
      error: insufficient permissions for device: udev requires plugdev group membership ویندوز: درایور USB را برای ADB نصب کنید. Chrome OS: به پیکربندی اضافی لازم نیست. به دستگاه خود متصل شوید 
      هنگامی که به USB تنظیم و وصل شده اید، می توانید بر روی Run در اندروید استودیو (Android Studio) کلیک کنید تا برنامه خود را روی دستگاه ایجاد و اجرا کنید.
      برای صدور دستورات همچنین می توانید از ADB اندروید استفاده کنید:
      تأیید کنید که دستگاه شما با اجرای دستور adb devices از فهرست  android_sdk/platform-tools/ متصل است. در صورت اتصال، دستگاه ذکر شده را مشاهده خواهید کرد. برای هدف قرار دادن دستگاه خود ، هر  adb command  را با فلگ -d صادر کنید. عیب یابی اتصال دستگاه با Connection Assistant
      Connection Assistant دستورالعمل های گام به گام برای کمک به شما در تنظیم و استفاده از دستگاه از طریق اتصال ADB فراهم می کند.
      برای شروع Tools > Connection Assistant را انتخاب کنید.
      Connection Assistant دستورالعمل ها، کنترل های in-context و لیستی از دستگاه های متصل را در یک سری صفحه در پنل Assistant ارائه می دهد. از دکمه های Next و Previous در پایین پنل Assistant استفاده کنید تا در صورت لزوم از طریق صفحات استفاده کنید:
      دستگاه خود را از طریق USB متصل کنید: Connection Assistant با این کار از شما خواسته می خواهد که دستگاه خود را از طریق USB متصل کنید و یک دکمه Rescan USB را فراهم می کند که با استفاده از آن می توانید اسکن جدیدی را برای دستگاه های متصل آغاز کنید. فعال کردن اشکال زدایی USB: ابزار Connection Assistan به شما می گوید چگونه می توانید USB را در گزینه های on-device developer فعال کنید. راه اندازی مجدد سرور ADB اندروید: سرانجام، اگر هنوز دستگاه خود را در لیست دستگاه های موجود نمی بینی، می توانید از دکمه Restart ADB server در آخرین صفحه Connection Assistan استفاده کنید. راه اندازی مجدد سرور ADB همچنین باعث می شود ADB اندروید دوباره دستگاه ها را اسکن کند. اگر هنوز دستگاه خود را در لیست دستگاههای موجود نمی بینید، مراحل عیب یابی را در قسمت بعدی این صفحه امتحان کنید. مشکلات اتصال USB را برطرف کنید
      اگر Connection Assistan دستگاه شما را از طریق USB تشخیص نمی دهد، می توانید مراحل عیب یابی زیر را برای حل این مشکل امتحان کنید:
      بررسی کنید که اندروید استودیو بتواند به Android Emulator متصل شود.
      برای بررسی اینکه آیا این مسئله به دلیل وجود مشکل اتصال بین Android Studio و Android Emulator ایجاد شده است ، این مراحل را دنبال کنید:
      AVD Manager را باز کنید. اگر قبلاً آنرا ندارید ، یک AVD جدید ایجاد کنید. شبیه ساز را با استفاده از AVD خود اجرا کنید. یکی از موارد زیر را انجام دهید: اگر اندروید استودیو (Android Studio) نمی تواند به شبیه ساز متصل شود ، آخرین ابزارهای Platform SDK را دانلود کنید و دوباره امتحان کنید. اگر شبیه ساز با موفقیت شروع شد ، کابل USB را بررسی کنید. کابل USB را بررسی کنید
      برای بررسی اینکه آیا مشکل ناشی از کابل USB معیوب ایجاد شده است ، مراحل موجود در این بخش را دنبال کنید.
      اگر کابل USB دیگری دارید:
      دستگاه را با استفاده از کابل ثانویه وصل کنید. بررسی کنید آیا دستیار اتصال اکنون می تواند دستگاه را تشخیص دهد یا خیر. اگر دستگاه شناسایی نشد ، کابل اولیه را دوباره امتحان کنید. اگر دستگاه هنوز شناسایی نشده است ، فرض کنید که مشکل دستگاه است و بررسی کنید که دستگاه برای توسعه تنظیم شده است یا خیر. اگر کابل USB دیگری ندارید اما دستگاه Android دیگری دارید:
      دستگاه ثانویه را به رایانه متصل کنید. اگر دستیار اتصال می تواند دستگاه ثانویه را تشخیص دهد ، فرض کنید که مشکل دستگاه اصلی است و بررسی کنید که آیا دستگاه برای توسعه تنظیم شده است یا خیر.
      اگر دستگاه ثانویه شناسایی نشود ، ممکن است مشکل در کابل USB باشد. بررسی کنید که دستگاه برای توسعه تنظیم شده است یا خیر 
      برای بررسی اینکه آیا مشکل ناشی از تنظیمات دستگاه ایجاد شده است ، این مراحل را دنبال کنید:
      مراحل موجود در بخش تنظیم دستگاه برای توسعه را دنبال کنید.  اگر این مشکل را برطرف نکرد، برای کمک به پشتیبانی مشتری OEM دستگاه تماس بگیرید. به نماینده پشتیبانی مشتری بگویید که دستگاه با استفاده از ADB به Android Studio وصل نخواهد شد. کلید امنیتی RSA 
      وقتی دستگاهی را اجرا می کنید که دارای سیستم عامل Android 4.2.2 (سطح API 17) یا بالاتر است، سیستم از طریق کادر محاوره ای به شما نشان می دهد که آیا می خواهید یک کلید RSA را بپذیرید که امکان اشکال زدایی از طریق این رایانه را بپذیرد یا خیر. این مکانیسم امنیتی از دستگاههای کاربر محافظت می کند زیرا تضمین می کند اشکال زدایی USB و سایر دستورات adb را نمی توان اجرا کرد مگر اینکه شما قادر به باز کردن قفل دستگاه و تأیید این پیام باشید.
    • توسط Farzad Sarseifi
      انجمن اندروید ایران با همکاری فرانش برگزار میکند:
      تاریخ برگزاری : 3 آبان 1395
      مدرس : فرزاد سرسیفی
      مکان: مصلی تهرانی،غرفه فرانش
      عنوان درسی : امنیت در اندروید
      "شرکت برای عموم رایگان میباشد"
      با سپاس فراوان
      فرزاد سرسیفی
    • توسط Farzad Sarseifi
      در این تاپیک آموزشی، از ابتدا آموزش برنامه نویسی اندروید را شروع خواهیم نمود ،یکی از مشکلات برنامه نویسان اندروید کم یا نبود آموزش های اصولی اندروید میباشد ،بر همین اساس تصمیم بر آن داشتیم بطور جامع آموزش های فارسی را منتشر نماییم .
      بیشتر کاربران انجمن برنامه نویسی اندروید، کم و بیش با این مشکل رو به رو بوده اند که به چه صورتی اندروید را شروع کنند و شروع به آموزش اندروید بگیرند.بر این اساس در این تاپیک بطور جامع آموزش های اندروید قرار داده خواهد شد..

      این تاپیک آموزشی هر چند روز یکبار بروز رسانی خواهد شد و آموزش ها جدیدتر قرار داده خواهد شد
       
       
       
      منو در اندروید
       
      ذخیره سازی اطلاعات در اندروید
       
      فرگمنت و گوگل مپ در اندروید
       
      وب سرویس در اندروید
      آموزش های متریال دیزاین در اندروید
       
       
       
       
      آموزش های کاتلین :
       

       
       
      با تشکر
      انجمن برنامه نویسی اندروید-پی سی دروید
  • فایل

×
×
  • اضافه کردن...