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

شروع موضوع توسط saalek110 ‏9 ژوئن 2019 در انجمن منطق و الگوریتم برنامه‌نویسی

  1. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,765
    تشکر شده:
    1,382
    امتیاز دستاورد:
    113
    بسم الله الرحمن الرحیم.

    آموزش برنامه نویسی اندروید
     
    آخرین ویرایش: ‏25 ژوئن 2019
    نوشته شده توسط saalek110 در ‏9 ژوئن 2019
  2. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,765
    تشکر شده:
    1,382
    امتیاز دستاورد:
    113
    هدف برنامه قابل اجرا برای موبایل های اندرویدی است.
    فایل انتقالی به موبایل پسوند Apk دارد.


    -----------------------------------------------------------------------
    از نرم افزارهای تغییر ip استفاده کنید. اگر اکلیپس را از سایتهای فارسی هم دانلود کنید
    قسمت Android sdk manager اون با ip ایران کار نمی کند.
    می توانید در پوشه bin پروژه دنبال فایل apk ساخته شده بگردید.فایل apk را به گوشی خود منتقل کنید و تست کنید.

    برای دانلود اکلیپس از سایت ایرانی هم دانلود کنید فرقی ندارد(از سایت کلیدستان. لینکش در ادامه هست).همان فایل است.
    . بعد jdk می خواهد. اون را هم از سایت ایرانی میشه دانلود کرد. خود سایت اوراکل نیاز به تغییر ip دارد و یک ثبت نام مجانی هم نیاز دارد.
    www.oracle.com
    در Android sdk manager اکلیپس شماره Api 29 را دانلود نکنید.
    تا حوالی لول 21 فقط. برای اطمینان سرج کنید.
    اول فایلی را دانلود کنید که امولیتور شما را بسازد. (بدون امولیتور هم فایل apk ساخته می شود. در پوشه bin. برای امولیتور بلواستکس یا چیز دیگه را نصب کنید یا مستقیم روی گوشی ببرید. ) (کلا فکر کنم امولیتور برای اکلیپس نصب نکنید بهتر باشد چون اجرا که نمیدهد و هر بار که run می کنید کلی معطل می شوید و وقت تلف می کند.)
    ادامه نصب امولیتور...
    arm eabi v7a از اندروید 4 مثلا api 17. ولی بعدش باید تارگت پروژه راتغییر دهیدیا یک پروژه جدید بسازید.
    بعد دانلود arm احتمالا باید اکلیپس را ببندید و دوباره باز کنید.
    -------------------------
    اگر sdk manager بهتون لیست نمیده تا انتخاب کنید طبق آموزش این سایت عمل کنید:
    Download Android SDK standalone for offline installation | Quakeboy'z Dev Arena
    چون انگلیسی و کمی نامفهوم است من کمی توضیح می دهم.
    اول بروید یکی از لینکهای بالای این سایت مثلا:
    https://dl-ssl.google.com/android/repository/repository-12.xml

    البته باید تغییر ip بدهید چون تحریم هستیم. وقتی وارد بشید بلافاصله یک فایل xml دانلود میشه. آن فایل xml را با ادیتور خود باز کنید. لیست بلندی از نام فایلها درونش هست. اولش لیسانس است بروید پایین تر تا به لیست فایلها برسید. فایلها بعضی برای لینوکس است دقت کنید. وقتی اسم فایل مورد نظر خود را انتخاب کردید با تکه آدرس زیر با هم می چسبانید:
    http://dl-ssl.google.com/android/repository/

    یعنی اسم فایل را بگذارید ته این آدرس. ممیزش را هم درست بگذارید. تا مثلا بشه:
    http://dl-ssl.google.com/android/repository/android-15_r01.zip
    بعد با این لینک فایل مورد نظر را دانلود کنید و بگذارید در پوشه مخصوص خودش در پوشه sdk .
    -----------------------------------
    بعد اینکه دانلودهایتان تمام شد گویا لازم است از منوی اکلیپس Update را هم استفاده کنید. سرمنو و اسم منو الان یادم نیست. الان اکلیپس نصب نیست.منوهای آخری بود.
    -----------------------------------------------------------------------------------------------------
    اگر اینترنت سرعت بالا دارید شاید اندروید استودیو خیلی بهتر باشه. چون آموزش برای آن زیاده. adt دیگه پشتیبانی نمیشه. و توصیه به مهاجرت به اندروید استودیو شده. من خودم به علت محدودیت هایی به اکلیپس رو آوردم.

    محیط کار : ADT Android Developer Tools
    اکلیپس است که برای برنامه نویسی اندروید آماده شده.

    a4.jpg
    دانلود ADT:
    حجم 350 مگا.
    دانلود ADT Bundle ، برای برنامه نویسی اندروید
    بنا به ویندوز خود نسخه 64 بیت یا 32 بیت را انتخاب کنیم. روی my computer کلیک راست کنید و پراپرتی را بزنید تا ببینید ویندوز شما چیست.
    سایت دیگر دانلود:
    77
    Here you can download adt bundles 2014-07-02:
    منبع
    windows 32: https://dl.google.com/android/adt/adt-bundle-windows-x86-20140702.zip

    windows 64: https://dl.google.com/android/adt/adt-bundle-windows-x86_64-20140702.zip
    با ip ایران گوگل کار نمی کند.


    برای اجرای فایهای apk من از BlueStacks استفاده می کنم. در سایتهای ایرانی برای دانلود هست.
    از این امولیتور هم می توانید استفاده کنید: 300 مگا.
    https://www.memuplay.com
    یا:
    MEmu Android Emulator 6.2.5 شبیه ساز اندروید در ویندوز



    ادیتور اگر نیاز داشتید:
    نرم افزار ادیتور متن برای برنامه نویس ها - Notepad++ 6.1.1


    دانلود: zampp جزو ابزار کار نیست. در دامنه کاری خاص لازم است.
    Download XAMPP 7.3.6-2 / 7.2.19-2 / 7.1.30-2 / 5.6.40-0
    یا
    XAMPP 7.3.6 Win/Mac/Linux + Portable شبیه ساز وب سرور
     
    آخرین ویرایش: ‏17 سپتامبر 2019
    نوشته شده توسط saalek110 در ‏9 ژوئن 2019
    Majid و the_king از این پست تشکر کرده اند.
  3. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,765
    تشکر شده:
    1,382
    امتیاز دستاورد:
    113
    فهرست:
    فهرست صفحه اول: پستهای 1 تا 20
    ساخت اولین پروژه و کار با ابزارها مثل باتون و ابزار تکست

    یک برنامه گرافیکی.
    چگونگی اضافه کردن import وقتی خطا دریافت می کنید.
    دانلود کتاب sams
    خواندن فایل تکست از ریسورس پروژه
    دانلود کتاب oreilly
    نصب zampp برای ایجاد محیط php در کامپیوتر برای ارتباط اندروید و php
    فهرست صفحه دوم و سوم و چارم:

    کدنویسی جاوا و شی گرایی
    صفحه پنجم:
    برنامه لود عکس
    برنامه ارسال به سایت
    نوشتن در حافظه دستگاه
     
    آخرین ویرایش: ‏13 جولای 2019
    نوشته شده توسط saalek110 در ‏9 ژوئن 2019
  4. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,765
    تشکر شده:
    1,382
    امتیاز دستاورد:
    113
    محیط کار : ADT Android Developer Tools
    اکلیپس است که برای برنامه نویسی اندروید آماده شده.
    یک پروژه خالی بسازید. empty
    a1.png a2.png a3.png
     
    آخرین ویرایش: ‏24 ژوئن 2019
    نوشته شده توسط saalek110 در ‏9 ژوئن 2019
  5. the_king

    the_king مدیرکل انجمن

    ارسال‌ها:
    11,103
    تشکر شده:
    11,373
    امتیاز دستاورد:
    113
    قاعدتا نباید مشکلی در دسترسی وجود داشته باشه، محدودیت فقط برای یک حساب کاربری که قابل تعریف نیست.
    برای کاربران عادی یک محدودیت زمانی هست که بتوانند فقط تا زمان معینی پست هاشون رو ویرایش کنند ولی فقط برای کاربران عادی، در گروه کاربری مدیران بازنشسته همچین محدودیتی نیست.
     
    نوشته شده توسط the_king در ‏9 ژوئن 2019
    Majid و saalek110 از این پست تشکر کرده اند.
  6. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,765
    تشکر شده:
    1,382
    امتیاز دستاورد:
    113
    برای اولین تمرین با باتون و تکست ادیت کار می کنیم. از هر کدام یکی روی فرم بیاورید. تغییر نام ندهید. از همان نامها در کد استفاده می کنیم ولی می توانید تکست آنها را تغییر دهیم. یعنی نوشته روی باتون و متن داخل تکست ادیت را می توانید به دلخواه خود تغییر بدهید.

    کد (Text):

    package com.example.tut1;

    import android.support.v7.app.ActionBarActivity;
    import android.os.Bundle;
    import android.view.Menu;
    import android.view.MenuItem;

    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.Toast;

    public class MainActivity extends ActionBarActivity {
         //1 region
    String str1;
    EditText et ;
    Button button;

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

             //2 region
             button = (Button) findViewById(R.id.button1);
             button.setOnClickListener(new View.OnClickListener() { //a
                @Override
                public void onClick(View view) {
                // 3 region
                et = (EditText) findViewById(R.id.editText1);
                str1 = et.getText().toString();
                Toast.makeText(getApplicationContext(), str1, Toast.LENGTH_LONG).show();//display text
                }
            });//a



     
    a3.png a4.png
    از کدها قبل و بعد اضافه کردن کدها عکس گرفتم تا مکان اضافه کردن کد را ببینید.
    از عکسها کمک بگییرید تا مکان درج کد را بفهمید. و بعد از قسمت کد پست می توانید کد هر قسمت را کپی کنید و در پروژه خود بیافزایید.

    نامهای باتون و ادیت تکست این است:
    editText1 and button1
    که شما هم وقتی به روی فرم بیاورید نامها همین است.
    متغیرها را کجا بسازیم؟
    من 3 رجیون در کد مشخص کردم.
    اول در رجیون 2 متغیر ساختم ولی داخل کد کلیک باتون یعنی رجیون 3 شناسایی نمیشد بنابراین بردم اول کلاس تعریف کردم. یعنی رجیون 1/
    یعنی رجیون های 2 و 3 به رجیون 1 دسترسی دارند. ولی رجیون 3 به رجیون 2 دسترسی ندارد.
    import
    قبل کلاس هم چند ایمپورت می بینیدکه برای کدها لازم است.
    در رجیون 2 باتون را پیداکردیم. با کدی که می بینید.
    رجیون 3 کدهایی است که بعد کلیک باتون رخ می دهد.
    در رجیون 3 ادیت تکست را پیدا کردیم و متنش را دریافت کردیم.
    Toast
    و تابع تاست هم متن را نمایش می دهد.
    a5.png

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

    من در کد نام باتون را استفاده کردم:
    کد (Text):

    Button button;
     
    ولی فکر کنم انتخاب خوبی نباشد چون اگر دو باتون داشته باشیم و بخواهیم باتون 1 و باتون 2 اسم بگذاریم اولی همان نام دکمه روی فرم می شود. می توانید از بی تی استفاده کنید.
    bt
    کد (Text):

    Button bt1,bt2;
     
     
    آخرین ویرایش: ‏5 جولای 2019
    نوشته شده توسط saalek110 در ‏10 ژوئن 2019
    Majid و the_king از این پست تشکر کرده اند.
  7. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,765
    تشکر شده:
    1,382
    امتیاز دستاورد:
    113
    برای نوآموزان: قوانین کدنویسی سی و جاوا شبیه هم است. در پروژه ما کدها در فایل با پسوند جاوا ذخیره می شود.
    شامل:
    بزرگی و کوچکی حروف مهم است.
    آخر هر خط سمی کلون می گذاریم.
    محدوده کلاس و تابع با کروشه مشخص می شود. {}
    ورودی توابع داخل پرانتز قرار می گیرد.( )
    وقتی چند متغیر پشت سر هم تعریف کنیم بین آنها ویرگول می گذاریم. ,
    کد (Text):

    String str1,str2,str3,str4;
     

    خروجی تابع با گذاشتن یک مساوی داخل یک متغیر ریخته میشه.مثل کد زیر.که تابع محتوای ادیت تکست را به رشته تبدیل می کند و در متغیر ریخته می شود.
    str1
    کد (Text):

    str1 = et.getText().toString();
     
    در سی فایلهای مورد نیاز را اول کد اینکلود می کنیم در جاوا ایمپورت می کنیم.
    اگر کلاس و توارث را بلد باشید به کار کمک می کند. داخل کلاس توابعی قرار دارد. کلاس متغیرهایی هم دارد.
    در کد بالا ما MainActivity کلاس است و onCreate تابع است. onCreate یعنی موقع ایجاد یعنی وقتی برنامه اجرا می شود. ما کدمان را داخل onCreate درج کردیم .
    هر سوالی داشتید بپرسید.
     
    آخرین ویرایش: ‏10 ژوئن 2019
    نوشته شده توسط saalek110 در ‏10 ژوئن 2019
    the_king از این پست تشکر کرده است.
  8. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,765
    تشکر شده:
    1,382
    امتیاز دستاورد:
    113
    می توانید فایل با پسوند apk را به موبایل منتقل کنید یا در ویندوز در نرم افزارهای مخصوص اجرای apk اجرا کنید مثل بلواستک. BlueStacks
     
    نوشته شده توسط saalek110 در ‏10 ژوئن 2019
    the_king از این پست تشکر کرده است.
  9. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,765
    تشکر شده:
    1,382
    امتیاز دستاورد:
    113
    توجه : اگر قصد کار گرافیکی ندارید می توانید این پست را ندیده بگیرید.
    برنامه بعدی یک برنامه opengl است. یک پروژه خالی بسازید.
    به صفحه زیر بروید:
    A simple example of using an Android Renderer to illustrate OpenGL ES boilerplate.

    کد زیر را خواهید یافت:
    کد (Text):

    /* GraphicGlDemoActivity.java
    * Author: Yong Bakos
    * Since: 11/26/2012
    * Thanks to:
    * Cube: http://intransitione.com/blog/create-a-spinning-cube-with-opengl-es-and-android/
    * OpenGL Boilerplate: http://www.jayway.com/2009/12/03/opengl-es-tutorial-for-android-part-i/
    */
    package com.humanoriented.sudoku;
    import java.nio.ByteBuffer;
    import java.nio.ByteOrder;
    import java.nio.FloatBuffer;
    import javax.microedition.khronos.egl.EGLConfig;
    import javax.microedition.khronos.opengles.GL10;
    import android.app.Activity;
    import android.opengl.GLSurfaceView;
    import android.opengl.GLSurfaceView.Renderer;
    import android.opengl.GLU;
    import android.os.Bundle;
    import android.view.Window;
    import android.view.WindowManager;
    public class GraphicGlDemoActivity extends Activity {
    public class DemoRenderer implements Renderer {
    private Cube cube = new Cube();
    private float rotation;
    @Override
    public void onSurfaceCreated(GL10 gl, EGLConfig config) {
    gl.glClearColor(0.0f, 0.0f, 0.0f, 0.5f);
    // Depth buffer setup.
    gl.glClearDepthf(1.0f);
    // Enables depth testing.
    gl.glEnable(GL10.GL_DEPTH_TEST);
    // The type of depth testing to do.
    gl.glDepthFunc(GL10.GL_LEQUAL);
    // Really nice perspective calculations.
    gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_NICEST);
    }
    @Override
    public void onSurfaceChanged(GL10 gl, int width, int height) {
    // Sets the current view port to the new size.
    gl.glViewport(0, 0, width, height);
    // Select the projection matrix
    gl.glMatrixMode(GL10.GL_PROJECTION);
    // Reset the projection matrix
    gl.glLoadIdentity();
    // Calculate the aspect ratio of the window
    GLU.gluPerspective(gl, 45.0f, (float) width / (float) height, 0.1f, 100.0f);
    // Select the modelview matrix
    gl.glMatrixMode(GL10.GL_MODELVIEW);
    // Reset the modelview matrix
    gl.glLoadIdentity();
    }
    @Override
    public void onDrawFrame(GL10 gl) {
    gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
    gl.glLoadIdentity();
    gl.glTranslatef(0.0f, 0.0f, -10.0f);
    gl.glRotatef(rotation, 1.0f, 1.0f, 1.0f);
    cube.draw(gl);
    gl.glLoadIdentity();
    rotation -= 0.15f;
    }
    }
    class Cube {
    private FloatBuffer mVertexBuffer;
    private FloatBuffer mColorBuffer;
    private ByteBuffer mIndexBuffer;
    private float vertices[] = {
    -1.0f, -1.0f, -1.0f,
    1.0f, -1.0f, -1.0f,
    1.0f, 1.0f, -1.0f,
    -1.0f, 1.0f, -1.0f,
    -1.0f, -1.0f, 1.0f,
    1.0f, -1.0f, 1.0f,
    1.0f, 1.0f, 1.0f,
    -1.0f, 1.0f, 1.0f
    };
    private float colors[] = {
    0.0f, 1.0f, 0.0f, 1.0f,
    0.0f, 1.0f, 0.0f, 1.0f,
    1.0f, 0.5f, 0.0f, 1.0f,
    1.0f, 0.5f, 0.0f, 1.0f,
    1.0f, 0.0f, 0.0f, 1.0f,
    1.0f, 0.0f, 0.0f, 1.0f,
    0.0f, 0.0f, 1.0f, 1.0f,
    1.0f, 0.0f, 1.0f, 1.0f
    };
    private byte indices[] = {
    0, 4, 5, 0, 5, 1,
    1, 5, 6, 1, 6, 2,
    2, 6, 7, 2, 7, 3,
    3, 7, 4, 3, 4, 0,
    4, 7, 6, 4, 6, 5,
    3, 0, 1, 3, 1, 2
    };
    public Cube() {
    ByteBuffer byteBuf = ByteBuffer.allocateDirect(vertices.length * 4);
    byteBuf.order(ByteOrder.nativeOrder());
    mVertexBuffer = byteBuf.asFloatBuffer();
    mVertexBuffer.put(vertices);
    mVertexBuffer.position(0);
    byteBuf = ByteBuffer.allocateDirect(colors.length * 4);
    byteBuf.order(ByteOrder.nativeOrder());
    mColorBuffer = byteBuf.asFloatBuffer();
    mColorBuffer.put(colors);
    mColorBuffer.position(0);
    mIndexBuffer = ByteBuffer.allocateDirect(indices.length);
    mIndexBuffer.put(indices);
    mIndexBuffer.position(0);
    }
    public void draw(GL10 gl) {
    gl.glFrontFace(GL10.GL_CW);
    gl.glVertexPointer(3, GL10.GL_FLOAT, 0, mVertexBuffer);
    gl.glColorPointer(4, GL10.GL_FLOAT, 0, mColorBuffer);
    gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
    gl.glEnableClientState(GL10.GL_COLOR_ARRAY);
    gl.glDrawElements(GL10.GL_TRIANGLES, 36, GL10.GL_UNSIGNED_BYTE,
    mIndexBuffer);
    gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
    gl.glDisableClientState(GL10.GL_COLOR_ARRAY);
    }
    }
    @Override
    public void onCreate(Bundle state) {
    super.onCreate(state);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    GLSurfaceView view = new GLSurfaceView(this);
    view.setRenderer(new DemoRenderer());
    setContentView(view);
    }
    }
     
    تغییرات:
    اول اینکه : این خطش را استفاده نکنید و کد پروژه خودتان را استفاده کنید:
    کد (Text):

    package com.humanoriented.sudoku;
     
    دوم : بروید انتهای کد ببینید تابع onCreate را چطور تغییر داده. همان تغییرات را اعمال کنید.
    سوم : دو کلاس DemoRenderer و Cube که داخل کلاس MainActivity اضافه کرده اضافه کنید.
    جهارم: ایمپورت ها را هم اضافه کنید.
    نتیجه اجرا: یک مکعب رنگی در حال چرخش.
    a1.png

    از قسمتی از کدهای سایت مذکور عکس گرفتم:
    a1.png
     
    آخرین ویرایش: ‏25 ژوئن 2019
    نوشته شده توسط saalek110 در ‏10 ژوئن 2019
    the_king از این پست تشکر کرده است.
  10. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,765
    تشکر شده:
    1,382
    امتیاز دستاورد:
    113
    من یک تابع به MainActivity اضافه کردم . از View خطا گرفت. طبق تصویر زیر import مورد نیازش را به برنامه اضافه کردم.

    a1.jpg
    کد (Text):

    import android.view.View;
     
    پس اون لینک را درون کادر زدیم تا import مورد نیاز اتوماتیک اضافه شود.
     
    نوشته شده توسط saalek110 در ‏22 ژوئن 2019
    the_king از این پست تشکر کرده است.
  11. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,765
    تشکر شده:
    1,382
    امتیاز دستاورد:
    113
    دانلود کتاب:
    sams_teach_yourself_android_application_development_in_24_hours_2nd_edition.pdf
    حجم : 6 مگا.
    a2.jpg
    a3.jpg a4.jpg
     

    پیوست ها:

    نوشته شده توسط saalek110 در ‏22 ژوئن 2019
    the_king از این پست تشکر کرده است.
  12. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,765
    تشکر شده:
    1,382
    امتیاز دستاورد:
    113
    خواندن فایل تکست. منبع از کتاب sams
    محیط کار : اکلیپس ADT
    پروژه اندرویدی از نوع خالی empty.
    یک پوشه به نام raw در پوشه res بسازید و فایل abc.txt را درون آن قرار دهید. چیزهایی در فایل بنویسید که با برنامه خوانده شود.
    روی فرم یک باتون و یک تکست ویو قرار دهید. نام هایشان همان نامهای اولیه یعنی textView1 و button1 باشد.
    کد:
    کد (Javascript):

    package com.example.project4;



    import android.app.Activity;
    import android.os.Bundle;


    import android.view.View;
    import android.widget.Button;


    import java.io.DataInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import android.widget.TextView;

    public class MainActivity extends Activity {
        //1 region
    Button bt1;


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



            //2 region
            bt1 = (Button) findViewById(R.id.button1);
            bt1.setOnClickListener(new View.OnClickListener() { //a
               @Override
               public void onClick(View view) {  
       
               InputStream iFile = getResources().openRawResource(R.raw.abc);
               TextView my_textview = (TextView) findViewById(R.id.textView1);
               try {
                    String strFile = inputStreamToString( iFile);
                    my_textview.setText(strFile);
              } catch (IOException e) {
                  e.printStackTrace();
              }//ctch
     
         
               }//onClick
           });//a


        }//onCreate

           public String inputStreamToString(InputStream is) throws IOException {
               StringBuffer sBuffer = new StringBuffer();
               DataInputStream dataIO = new DataInputStream(is);
               String strLine = null;
               while ((strLine = dataIO.readLine()) != null) {
               sBuffer.append(strLine + "\n");
               }
               dataIO.close();
               is.close();
               return sBuffer.toString();
               }

    }//MainActivity

     
    خط اول که باید عوض بشود و نام پروژه خودتان باشد.
    package com.example.project4;
    به ایمپورت ها نگاه کنید ببینید چه ایمپورت هایی اضافه شده.DataInputStream وInputStream و IOException و widget.TextView
    یک تابع ساختیم به نام inputStreamToString که کارش خواندن فایل است و خروجی اش رشته است. این تابع خارج onCreate قرار دارد و داخل MainActivity

    فراخوانی تابع ما داخل رویداد کلیک باتون قرار دارد. یک برنامه دیگر داریم که با رویداد کلیک باتون کار کرده و ساده تر است. می توانید اول آن را ببینید.
    برای فراخوانی این تابع باید از try و catch استفاده کنید. وگرنه اجازه کار را نمی دهد.
    بقیه اش استفاده از کلاس ها و توابع است که خودتان نگاه کنید.
    نتیجه اجرا:
    a6.jpg
     
    آخرین ویرایش: ‏22 ژوئن 2019
    نوشته شده توسط saalek110 در ‏22 ژوئن 2019
    the_king از این پست تشکر کرده است.
  13. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,765
    تشکر شده:
    1,382
    امتیاز دستاورد:
    113
    دانلود کتاب:
    OReilly Learning Android, Develop Mobile Apps using Java and Eclipse 2nd (2014)
    a1.jpg
     

    پیوست ها:

    نوشته شده توسط saalek110 در ‏22 ژوئن 2019
  14. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,765
    تشکر شده:
    1,382
    امتیاز دستاورد:
    113
    آخرین ویرایش: ‏24 ژوئن 2019
    نوشته شده توسط saalek110 در ‏24 ژوئن 2019
  15. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,765
    تشکر شده:
    1,382
    امتیاز دستاورد:
    113
    حالا مقداری php یاد می گیرید و سایت خود را می سازید و از برنامه اندرویدی یعنی گوشی خود به سایت خود وصل می شوید.
    سایتهایی هستند که فضای مجانی php می دهند مثل https://infinityfree.net که می توانید فضا بگیرید ولی به سرور محلی هم نیاز داریم تا سریع تر کدها را رفع اشکال کنیم. برای ساخت سرور محلی xampp را دانلود کنید:

    دانلود:
    Download XAMPP 7.3.6-2 / 7.2.19-2 / 7.1.30-2 / 5.6.40-0
     
    آخرین ویرایش: ‏24 ژوئن 2019
    نوشته شده توسط saalek110 در ‏24 ژوئن 2019
    the_king از این پست تشکر کرده است.
  16. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,765
    تشکر شده:
    1,382
    امتیاز دستاورد:
    113
    بعد از نصب نرم افزار در درایو سی:
    C:\xampp
    آن را باز کرده و آپاچی را استارت می کنیم.
    a1.jpg

    آپاچی کدهای
    php
    ما را اجرا می کند.

    کدهای شما یعنی صفحات وب شما باید در پوشه
    C:\xampp\htdocs
    باشد تا قابل اجرا باشد.

    بهتر است یک پوشه در این پوشه بسازید و برنامه های خود را در پوشه خود ذخیره کنید.
     
    آخرین ویرایش: ‏24 ژوئن 2019
    نوشته شده توسط saalek110 در ‏24 ژوئن 2019
    the_king از این پست تشکر کرده است.
  17. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,765
    تشکر شده:
    1,382
    امتیاز دستاورد:
    113
    اولین کد:
    PHP:
    <?php
    echo "hello";

    ?>
    بعد روشن کردن آپاچی در بروسر خود در قسمت نوشتن آدرس سایت بنویسید:
    http://127.0.0.1/first.php
    قسمت http:// را هم نیاز نیست تایپ کنید.
    من اسم فایل را first گذاشتم. شما هر چیزی دوست دارید بگذارید.ولی پسوند php باشد. اگر ادیتور ندارید نت پد اگزه را دانلود کنید. (لینک دانلود)
    نتیجه اجرا:
    a2.jpg
    در شکل بالا می بینید من پوشه ای به نام my_php ساختم و فایلم را درون آن گذاشتم. این کار برای نظم است.می توانید پوشه های زیادی بسازید بنا به نظم کار خود.
    شرح کد: علامت بزرگتر و کوچکتر در کنار علامت سوال علامت شروع و اتمام کدهای php است.
    اگر زبان html بلدید این کد را می توانید استفاده کنید:
    PHP:
    <!DOCTYPE html>
    <html>
    <body>
    <p>html p</p>

    <?php
    echo "hello";
    ?>

    </body>
    </html>
    یعنی از قابلیت های html برای تزیین سایت خود استفاده کنید. ولی فایل را با پسوند php ذخیره کنید. در همان پوشه C:\xampp\htdocs برنامه zampp
     
    آخرین ویرایش: ‏24 ژوئن 2019
    نوشته شده توسط saalek110 در ‏24 ژوئن 2019
    the_king از این پست تشکر کرده است.
  18. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,765
    تشکر شده:
    1,382
    امتیاز دستاورد:
    113
    php چیست؟
    زبانی سمت سرور با سینتکسی شبیه سی و جاوا است.
    سمت سرور یعنی کدها روی سرور یا همان سایت اجرا می شود.

    کارهایی که php می کند مثل زبان سی و جاوا متنوع است ولی نکته مهم اینکه به دیتابیس سرور هم وصل می شود و اطلاعات را استخراج می کند یا به آنها اضافه می کند یا تغییر می دهد. دیتابیس مثل انبار مغازه است و سایت مثل ویترین مغازه است. هر وقت ویترین خالی شود صاحب مغازه از انبار می آورد و ویترین را تزیین می کند. php همان صاحب مغازه است که رابط بین انبار و مغازه است و در ضمن خیلی کارهای دیگر را هم می کند. مثل شناسایی مشتری ها و فروش و خیلی کارهای دیگر.(و در کنار php ما html و جاوا اسکریپت را داریم که سمت کلاینت اجرا می شوند نه سمت سرور. یعنی سمت کسی که بروسر را باز کرده و از سایت بازدید می کند اجرا می شود.)

    نرم افزار zampp دیتابیس هم دارد و ما فعلا دکمه روشن آن را نزدیم چون کد ما قسمت ارتباط با دیتابیس نداشت. بعدا هم آپاچی را روشن می کنیم و هم دیتابیس را. آپاچی همان اجرا کننده کدهای php است.
     
    آخرین ویرایش: ‏24 ژوئن 2019
    نوشته شده توسط saalek110 در ‏24 ژوئن 2019
    the_king از این پست تشکر کرده است.
  19. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,765
    تشکر شده:
    1,382
    امتیاز دستاورد:
    113
    خواننده های این تاپیک از هر سطح مهارتی خواهند بود و من سعی دارم تاپیک برای تمام سطوح جذاب باشد.
    تاپیک شروع منظمی نداشت و رابطه پست ها تا اینجا خوب نبود. ولی سعی می کنم ارتباط منطقی بیشتری بین مطالب پست ها برقرار بشود.
     
    نوشته شده توسط saalek110 در ‏24 ژوئن 2019
  20. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,765
    تشکر شده:
    1,382
    امتیاز دستاورد:
    113
    Part 1 سینتکس
    زبان و سینتکس یک قسمت کار است. در اینجا زبان جاوا. باید یاد گرفت.
    (من خودم بیشتر زبان سی کار کرده ام و php . مقداری هم در دلفی زبان پاسکال کار کردم. مختصری هم سی شارپ کار کردم.
    با وجودی که به سینتکس سی عادت داشتم در جاوا اصلا احساس ناراحتی نمی کنم. به نظرم سینتکس جاوا خیلی شبیه سی است.)

    Part 2 توابع و کلاسها
    به نظر من قسمت مهمی از کار شناسایی کدهایی است که توسط دیگران نوشته شده. و استفاده از اونها. مثلا توابعی که در اندروید قابل استفاده است. یا توابع جاوا و سی.
    در این تاپیک بیشتر نشانه گیری به سمت برنامه نویسی اندروید است یعنی کلاسها و توابع اندروید را بشناسیم. ولی نگاهی هم به زبان جاوا می کنیم. چون جاوا هم بستر کار ما است.
     
    آخرین ویرایش: ‏24 ژوئن 2019
    نوشته شده توسط saalek110 در ‏24 ژوئن 2019

به اشتراک بگذارید