مجموعه آموزشی پی استور - https://programstore.ir

آموزش رایگان ارتباط با سرور در اندروید – ارتباط با پایگاه داده Mysql با php در اندروید استادیو

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

مقدمه

همه ما می دانیم اندروید یکی از محبوب ترین سیستم عامل ها برای گوشی های همراه است و ارتباط از راه دور یا ریموت Remote از طریق این گوشی ها با یک سرور مزیت های فراوانی را می تواند داشته باشد. اکثر ارتباطات برنامه های اندرویدی بیشتر با پایگاه داده یک سرور است و این پایگاه داده ها اغلب بصورت Remote هستند. پایگاه داده از راه دور یا Remote به این معنی است که شما می توانید به داده های این پایگاه داده از مکان های دور دسترسی داشته باشید. بسیاری از برنامه های کاربردی برای ارسال داده ها از ماژول پایگاه داده Remote استفاده می کنند. در آموزش رایگان ارتباط با سرور در اندروید به شما نشان خواهیم داد که چگونه با استفاده از Android Studio، داده ها را به پایگاه داده از یک برنامه Android ارسال کنید.

ابزارهای مورد نیاز

برای اینکه بتوانیم با سرور در اندروید ارتباط برقرار کنیم به یک سری ابزار نیاز خواهیم داشت. مهم ترین ابزار ما تهیه یک سرور است. با توجه به محدودیت های هزینه، اکثر برنامه نویسان از سیستم های LocalHost استفاده می کنند که سیستم شما را به یک سرور تبدیل می کند. دو مورد از بهترین لوکال هاست های معروف Xamp و Wamp است که در آموزش رایگان ارتباط با سرور در اندروید از نرم افزار Xamp استفاده می کنیم. به طور کلی ابزارهای زیر را برای شروع کار لازم خواهیم داشت:

با دقت مراحل آموزش را برای ارسال داده ها به پایگاه داده MySQL در یک برنامه Android، با استفاده از Android Studio دنبال کنید تا روش کار را یاد بگیرید. در این آموزش فرض بر این است که شما با زبان جاوا و اصول برنامه نویسی اندروید آشنا هستید. اگر مبتدی هستید نگران نباشید در خلال آموزش منابع مهم آموزشی را از سایت های معتبری نظیر فرادرس [2] معرفی خواهیم کرد و در پایان آموزش نیز می توانید سورس کد های این آموزش را دانلود کنید.

راه اندازی سرور و پایگاه داده

در اولین مرحله از آموزش رایگان ارتباط با سرور در اندروید به سراغ راه اندازی سرور و پایگاه داده می رویم. همانطور که قبلاً هم گفتیم در این آموزش از Xamp برای شبیه سازی سرور استفاده می کنیم. پس Xamp را نصب کنید و طبق شکل زیر سرویس Apache و Mysql آن را استارت کنید:

Xamp را نصب کنید

پس از اطمینان از فعال بودن سرویس های Apache و Mysql در مرورگر خود به آدرس localhost/phpmyadmin بروید تا وارد بخش مدیریت پایگاه داده Mysql شوید. یک پایگاه داده با نام data_user ایجاد کنید تا بتوانیم جدولی در این پایگاه داده ایجاد کنیم.

پایگاه داده mysql

حال برای ایجاد جدول data_user در بخش SQL کد زیر را وارد کنید تا جدول ایجاد و مقادیری در آن وارد شود:

CREATE TABLE `user_info` (  
  `name` varchar(50) NOT NULL,  
  `email` varchar(50) NOT NULL  
) ENGINE=InnoDB DEFAULT CHARSET=latin1;  
  
--  
-- Dumping data for table `user_info`  
--  
  
INSERT INTO `user_info` (`name`, `email`) VALUES  
('', ''),  
('', ''),  
('', ''),  
('', ''),  
('', ''),  
('', ''),  
('', ''),  
('', ''),  
('', ''),  
('', ''),  
('', ''),  
('', ''),  
('', ''),  
('', '');  
  
/*!40101 SET [email protected]_CHARACTER_SET_CLIENT */;  
/*!40101 SET [email protected]_CHARACTER_SET_RESULTS */;  
/*!40101 SET [email protected]_COLLATION_CONNECTION */;

ایجاد جدول data_user

پس از ایجاد جدول لازم است یک فایل php نیز بنویسید که به پایگاه داده متصل شود و مثلاً یک عمل insert در پایگاه داده را انجام دهد. برای این منظور در مسیر C:\xampp\htdocs یک فولدر با نام app ایجاد کنید و یک فایل با نام Dbconfig.php بسازید و کدهای زیر را در آن قرار دهید:

<?php    
    $user_name = $_POST["name"];    
    $user_mail = $_POST["email"];    
    $user = "root";    
    $password = "";    
    $host ="localhost";    
    $db_name ="data_user";    
    $con = mysqli_connect($host,$user,$password,$db_name);    
    $sql = "insert into user_info values('".$user_name."','".$user_mail."');";    
    if(mysqli_query($con,$sql))    
    {    
        echo "Data inserted successfully....";    
    }    
    else     
    {    
        echo "some error occured";    
    }    
    mysqli_close($con);    
    ?>

خوب برای تست تکه کد php که آیا به پایگاه داده متصل است یا نه/ می توانید در مرورگر خود http://localhost/app/Dbconfig.php را تایپ کنید و پیغام Data inserted successfully را مشاهد کنید. برای آشنایی بهتر با پایگاه داده می توانید به آموزش پایگاه داده MySQL فرادرس که لینک آن در ادامه قرار گرفته است، مراجعه نمایید.

ایجاد پروژه در اندروید استادیو

در ادامه آموزش رایگان ارتباط با سرور در اندروید به سراغ ایجا پروژه در اندروید استادیو می رویم. برای این منظور Android Studio خود را باز کنید و یک Empty Activity را ایجاد کنید:

یک Empty Activity

اگر در مورد نصب اندروید استادیو مشکل دارید می توانید آموزش کامل نصب را در آموزش اندروید از صفر – راهنمای شروع برنامه نویسی اندروید بصورت گام به گام [4] مطالعه کنید. در قسمت بعدی نام پروژه، مکان، زبان برنامه نویسی جاوا و حداقل SDK لازم را پر کرده و پروژه را ایجاد کنید. سعی کنید به اینترنت وصل باشید تا در صورت نیاز وابستگی های لازم برای سیستم شما از سایت و مخازن اندروید دانلود و نصب شود. (برای عبور از تحریم گوگل نیز از روش های تغییر IP باید استفاده کنید).

روژه، مکان، زبان برنامه نویسی جاوا و حداقل SDK

در نهایت ساختار پروژه در اندروید استادیو بصورت زیر خواهد بود:

ساختار پروژه در اندروید استادیو

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

ارتباط با سرور در اندروید استادیو

پس از ایجاد پروژه conect در اندروید استادیو به سراغ کدنویسی بخش های مختلف ارتباط با سرور می رویم. برای ان منظور به activity_main.xml در قسمت res-> layout بروید همانطور که می دانید این فایل XML حاوی کد طراحی یک برنامه اندروید است. در activity_main.xml، کدهای زیر را کپی و پیست کنید:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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.example.connect.MainActivity">


    <EditText
        android:id="@+id/name1"
        android:layout_width="378dp"
        android:layout_height="53dp"
        android:layout_marginRight="4dp"
        android:layout_marginLeft="4dp"
        android:ems="10"
        android:inputType="textPersonName"
        android:text=""
        app:layout_constraintRight_toRightOf="parent"
        tools:layout_editor_absoluteY="119dp"
        tools:layout_editor_absoluteX="2dp"
        android:layout_above="@+id/email"
        android:layout_alignEnd="@+id/name" />

    <EditText
        android:id="@+id/email1"
        android:layout_width="379dp"
        android:layout_height="54dp"
        android:ems="10"
        android:inputType="textPersonName"
        android:text=""
        tools:layout_editor_absoluteX="3dp"
        tools:layout_editor_absoluteY="245dp"
        android:layout_above="@+id/bn"
        android:layout_alignParentEnd="true"
        android:layout_marginBottom="24dp"
        android:layout_below="@+id/email"
        android:layout_alignParentStart="true" />

    <TextView
        android:id="@+id/name"
        android:layout_width="380dp"
        android:layout_height="46dp"
        android:layout_marginLeft="4dp"
        android:textSize="20dp"
        android:text="Enter Name"
        tools:layout_editor_absoluteX="-2dp"
        tools:layout_editor_absoluteY="61dp"
        android:layout_above="@+id/name1"
        android:layout_alignParentStart="true" />

    <TextView
        android:id="@+id/email"
        android:layout_width="700dp"
        android:layout_height="42dp"
        android:layout_alignParentEnd="true"
        android:layout_centerVertical="true"
        android:text="Enter the Email"
        android:textSize="20dp"
        tools:layout_editor_absoluteX="-2dp"
        tools:layout_editor_absoluteY="62dp" />

    <Button
        android:id="@+id/bn"
        android:layout_width="380dp"
        android:layout_height="72dp"
        android:text="SUBMIT"
        android:layout_marginLeft="4dp"
        tools:layout_editor_absoluteX="2dp"
        tools:layout_editor_absoluteY="351dp"
        android:layout_alignParentBottom="true"
        android:layout_alignEnd="@+id/name1"
        android:layout_marginBottom="81dp" />
</RelativeLayout>

خوب به سراغ فایل MainActivity.java بروید:

فایل MainActivity.java

و کد زیر را کپی و پیست کنید. برنامه نویسی جاوا زبان بک اند اندروید است. نام بسته خود را جایگزین نکنید در غیر این صورت، برنامه اجرا نمی شود. کد زیر حاوی نام بسته است:

package com.example.connect;

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.example.myapp.R;

import java.util.HashMap;
import java.util.Map;


public class MainActivity extends AppCompatActivity {

    Button button;
    EditText Name, Email;
    String server_url="http://192.168.1.109/app/dbconfig.php";
    AlertDialog.Builder builder;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        button = (Button) findViewById(R.id.bn);
        Name = (EditText) findViewById(R.id.name1);
        Email = (EditText) findViewById(R.id.email1);
        builder = new AlertDialog.Builder(MainActivity.this);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                final String name , email ;
                name =Name.getText().toString();
                email=Email.getText().toString();

                StringRequest stringRequest = new StringRequest(Request.Method.POST, server_url, new Response.Listener<String>() {

                    @Override
                    public void onResponse(String response) {

                        builder.setTitle("Server Response");
                        builder.setMessage("Response :"+response);
                        builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                Name.setText("");
                                Email.setText("");
                            }
                        });
                        AlertDialog alertDialog = builder.create();
                        alertDialog.show();

                    }
                }

                        , new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        Toast.makeText(MainActivity.this,"some error found .....",Toast.LENGTH_SHORT).show();
                        error.printStackTrace();

                    }
                }){
                    @Override
                    protected Map<String, String> getParams() throws AuthFailureError {
                        Map<String,String> Params = new HashMap<String, String>();
                        Params.put("name",name);
                        Params.put("email",email);
                        return Params;

                    }
                };
                Mysingleton.getInstance(MainActivity.this).addTorequestque(stringRequest);
            }
        });

    }
}

در فایل MainActivity.java آدرس IP فعلی خود را برای اتصال به سرور محلی (XAMPP) بایستی ارائه شود. همانطور که در کد بالا نشان داده شده آدرس IP در server_url نوشته می شود و شما نیز باید آدرس IP سیستم خودتان را برای اتصال وارد کنید. برای پیدا کردن آدرس IP نیز می توانید در cmd ویندوز عبارت ipconfig را تایپ کنید تا IP شما را برای اتصال به xamp نشان دهد:

cmd ویندوز عبارت ipconfig

 

برای استفاده در سرور واقعی هم تنها جایی که باید تغیید کند همین قسمت IP است. یعنی در سرور واقعی هم همین منوال ها وجود خواهد داشت و فقط در قسمت server_url باید IP مربوط به اتصال سرور را قرار دهید. در هر حال در مرحله بعد به سراغ ارسال درخواست به سرور می رویم. برای این کار یک کلاس جدید با نام Mysingleton.java در کنار فایل MainActivity.java ایجاد کنید و محتویات آن را بصورت زیر قرار دهید:

package com.example.connect;

import android.content.Context;

import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.toolbox.Volley;

public class Mysingleton {
    private static Mysingleton mInstance;
    private RequestQueue requestQueue;
    private static Context mCtx;
    private Mysingleton (Context Context)
    {
        mCtx = Context;
        requestQueue = getRequestQueue();
    }

    public static  synchronized Mysingleton getInstance (Context context)
    {
        if (mInstance==null)
        {
            mInstance =new Mysingleton(context);
        }
        return mInstance;
    }

    public RequestQueue getRequestQueue() {

        if (requestQueue==null)
        {
            requestQueue = Volley.newRequestQueue(mCtx.getApplicationContext());
        }
        return requestQueue;

    }

    public<T> void addTorequestque(Request<T> request)
    {
        requestQueue.add(request);
    }
}

با این کلاس درخواست شما به سمت سرور ارسال خواهد شد. در بخش AndroidManifest.xml نیز توجه داشته باشید مجوز یا پرمیژن اتصال به اینترنت را به اپلیکیشن خود بدهید یعنی دستور زیر را در این فایل قرار دهید:

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

برای اینکه کار شما را راحت کنیم تا خطایی در اجرا نداشته باشید چک کنید که محتویات فایل AndroidManifest.xml بایستی بصورت زیر باشد:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myapp">
    <uses-permission android:name="android.permission.INTERNET"></uses-permission>
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.Connect">
        <activity
            android:name="com.example.connect.MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

همچنین وابستگی های لازم برای استفاده از کتابخانه volley که برای ارسال و درخواست سرور لازم است را در فایل build.gradle اضافه کنید.  یعنی کامپایل “com.mcxiaoke.volley:library:1.2”. بطور کلی فایل build.gradle باید ساختاری به مانند کدهای زیر داشته باشد:

plugins {
    id 'com.android.application'
}

android {
    compileSdk 31

    defaultConfig {
        applicationId "com.example.connect"
        minSdk 21
        targetSdk 31
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {

    implementation 'androidx.appcompat:appcompat:1.3.1'
    implementation 'com.google.android.material:material:1.4.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.1'
    implementation 'com.android.volley:volley:1.2.0'
    testImplementation 'junit:junit:4.+'
    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
}

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

اجرای پروژه ارتباط با سرور در اندروید استادیو

پس از اجرای پروژه کمی منتظر بمانید چون در اجرای اول ممکن است وابستگی هایی در سیستم شما نصب شود. اگر با خظا مواجه شدید نیز نگران نباشید خود اندروید استادیو در هر محله راهنمایی های لازم برای رفع خطاهای احتمالی را خواهد داد. خروجی حاصل از پروژه ارتباط با سرور در اندروید استادیو بصورت زیر خواهد بود:

اجرای پروژه ارتباط با سرور در اندروید استادیو

حالا می توان نام و ایمیلی را تایپ کرد و بازدن Submit اگر اتصال درست باشد، پیام مبنی بر ثبت موفق اطلاعات در سرور را خواهید دید:

ثبت موفق اطلاعات در سرور

حالا اگر به phpmyadmin بروید و پایگاه داده و جدول data_user را باز کنید خواهید دید اطلاعات با موفقیت روی پایگاه داده ثبت شده است:

پایگاه داده و جدول data_user

بدین ترتیب ارتباط با پایگاه داده و سرور با استفاده از یک اپلیکشن اندرویدی بصورت Remote امکان پذیر خواهد بود. سورس کد کامل این آموزش را می توانید از طریق باکس دانلود انتهای مطالب دانلود کنید.

سخن پایانی در مورد آموزش رایگان ارتباط با سرور در اندروید

در آموزش رایگان ارتباط با سرور در اندروید با استفاده از یک زبان رابط توانستیم دستوری را به سمت سرور ارسال کنیم. استفاده از قابلیت های زبان php برای اتصال به پایگاه داده و انجام عمل insert در آن یک روش ساده و آسان برای کار با پایگاه داده در یک سرور بصورت remote است. البته باید در نظر داشت این روش فقط یک روش ساده برای ارتباط با سرور به شمار می آید و روش های دیگری که برپایه ارسال اطلاعات به شیوه Json است نیز وجود دارند که جدای از این آموزش می باشد.

درصورتی که قصد دارید بصورت کامل و اصولی همراه با مطالب تکمیلی نحوه ارتباط با سرور در اندروید را یاد بگیرید. پیشنهاد می کنیم آموزش ارتباط با دیتابیس سمت سرور در اندروید [8] مجمموعه فرادرس [2] را تهیه و مطالعه کنید. در پایان این آموزش امیدواریم مطالب فوق برای شما عزیزان مفید باشد. پیشنهاد می کنیم مقاله آموزش متریال دیزاین در اندروید – نحوه استفاده از متریال دیزاین در اندروید استادیو همراه با مثال [9] را نیز در فرصت مناسب مطالعه کنید. حتماً منتظر نظرات و پیشنهادات شما هستیم. موفق و پیروز باشید.

پاورپوینت ارتباط با سرور در اندروید [10]

پاورپوینت ارتباط با سرور در اندروید

در اندروید امکان طراحی اپلیکیشنی وجود دارد که با استفاده از زبان php بتواند با پایگاه داده Mysql ارتباط برقرار کند.در این پاورپوینت سورس کدهای مربوط به طراحی این اپلیکیشن به همراه توضیحات وجود دارد. این پاورپوینت آماده در 19 اسلاید در قالب ppt. یا pptx. با قابلیت ویرایش برای ارائه درسی آماده دانلود می‌باشد.