آموزش برنامه نویسی اندروید با اندروید استودیو (بخش چهل و هشتم: ساخت اکتیویتی جدید و رفتن به آن با استفاده از Intent )

استاندارد

در این بخش از آموزش برنامه نویسی اندروید می خواهیم کار با اینتنت ها (Intent) و گذر بین اکتیویتی ها را آموزش بدهیم.

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

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

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

در این مراحل با Intent های بسیار پرکاربرد آشنا خواهیم شد.

پس از معرفی توضیحاتی در رابطه با Intentها کار را شروع می کنیم.

من یک پروژه به نام Intent-Gsm در اندروید استودیو ایجاد می کنم. سپس به قسمت لایه اپلیکیشن برنامه می روم و یک دکمه Button را به لایه می کشم.

این دکمه وظیفه ی این را خواهد داشت که با کلیک به اکتیویتی دوم برود.

کدهای Layout

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.gsm_developers.intent_gsm.MainActivity">

    <Button
        android:text="Button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="181dp"
        android:id="@+id/button"
        android:elevation="0dp" />
</RelativeLayout>

پس از اضافه کردن دکمه ، باید یک Activity جدید به پروژه اضافه نماییم.

برای این کار از منوی فایل New را زده و به قسمت Activity می رویم. سپس Empty Activity را انتخاب می کنیم.

در پنجره باز شده، نام اکتیویتی جدید را از شما می خواهد.

ما نام هایی که خود اندورید استودیو به صورت پیش فرض انتخاب کرده است را به همان صورت می گذاریم.

ولی این نام ها چیست؟

در قسمت اول (Activity Name) نام همان فایلی را می خواهد که در مسیر Java وجود دارد. یعنی همان قسمتی که برای برنامه نویسی جاوا به کار می رود.

در قسمت دوم (Layout Name) نام لایه اپلیکیشن ما را می خواهد.

زیرا یک اکتیویتی جدا باید همراه با کدجاوای جداگانه و رابط کاربری جداگانه برای آن کد باشد.

پس شما می توانید نامی دلخواه برای این دو انتخاب نمایید به شرطی که نام اکتیویتی جدید، با اکتیویتی های موجود، یکسان نباشد.

ولی در قسمت آخر، نام پکیج پروژه را بدهید.

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

همچنین لایه ای برای طراحی این اکتیویتی نیز در قسمت layout اضافه شده است.

به قسمت لایه طراحی (layout) اکتیویتی جدید (در اینجا فایل activity_main2.xml) می رویم.

یک TextView به این لایه اضافه می کنیم. من نام این TextView را Activity 2 قرار می دهم.

Layout اکتیویتی دوم

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main2"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.gsm_developers.intent_gsm.Main2Activity">

    <TextView
        android:text="Activity 2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="218dp"
        android:id="@+id/textView" />
</RelativeLayout>

در اکتیویتی اول، یک دکمه ی Button اضافه کردیم. حال باید به قسمت جاوای اکتیویتی اول برویم تا کدهایی را برای آن دکمه بنویسیم که با کلیک به اکتیویتی دوم از این پروژه منتقل شویم.

پس فایل MainActivity.java را باز می کنیم.

در متد ()onCreate دکمه ی Button را به قسمت جاوای برنامه معرفی می کنیم.

Button Btn = (Button) findViewById(R.id.button);

یک رویداد onClickListener به دکمه Button اضافه می کنیم.

پس باید در این رویداد، کدی تعریف نماییم که با کلیک بر روی Button ، به اکتیویتی دوم منتقل شویم.

Btn.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {

                startActivity(new Intent(MainActivity.this , Main2Activity.class));
            }
});

همان طور که مشاهده می کنید با استفاده از متدی به نام startActivity این کار صورت می پذیرد.

در این متد، یک Intent جدید با استفاده از دستور New Intent به عنوان ورودی برای startActivity می نویسیم.

این Intent دو آرگومان ورودی می پذیرد.

یکی اکتیویتی که در آن هستیم که در کد بالا به صورت MainActivity.this مشخص شده است.

دومین آرگومان ، اکتیویتی که می خواهیم به آن برویم، که این کار نیز به صورت کد Main2Activity.class نوشته شده است.

MainActivity.java

package com.gsm_developers.intent_gsm;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

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

        Button Btn = (Button) findViewById(R.id.button);
        Btn.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {

                startActivity(new Intent(MainActivity.this , Main2Activity.class));
            }
        });
    }
}

پروژه را اجرا می کنیم.

وقتی اپلیکیشن اجرا می شود، مشاهده می کنید که Layout مربوط به اکتیویتی اول به شما نشان داده می شود.

پس از کلیک بر روی Button ، اکتیویتی دوم برای شما ظاهر خواهد شد.

آموزش برنامه نویسی اندروید (بخش چهل و سوم: کلمات پیشنهادی با استفاده از AutoCompleteTextView )

استاندارد

بارها برای شما پیش آمده که در پلتفرم اندرویدی خودتان، با نوشتن حرف اول یک کلمه، پیشنهادهایی به شما داده شود. این کار باعث جستجوی سریع تر کلمه مورد نظر و در نتیجه راحتی کار کاربر می شود.

AutoCompleteTextView در اندروید وظیفه این کار را بر عهده دارد. AutoCompleteTextView یک نوع از جستجوی پیشرفته را ارائه می دهد که این نوع از جستجوی کلمات را انجام می دهد.

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

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

در ابتدا برای شروع، من یک پروژه به نام AutoComplete-Gsm ایجاد می کنم. سپس به قسمت لایه اپلیکیشن یعنی فایل activity_main.xml می روم. از قسمت Paletteها یک AutoCompleteTextView را به لایه اپلیکیشن Drag & Drop می کنم (می کشم) .

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

کد Xml ابزار AutoCompleteTextView :

<AutoCompleteTextView
        android:text="AutoCompleteTextView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="180dp"
        android:id="@+id/autoCompleteTextView"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginLeft="20dp"
        android:layout_marginStart="64dp" />

کار ما با طراحی لایه اپلیکیشن در همین حد به اتمام می رسد. پس تنها کاری که لازم بود انجام بدیم کشیدن ابزار AutoCompleteTextView به داخل لایه اپلیکیشن بود.

حال به قسمت کد جاوای برنامه یعنی فایل MainActivity.java رفته تا کدهای جاوای اپلیکیشن را بنویسیم.

در مرحله اول کافی ست یک رشته در داخل تابع ()onCreate تعریف کنیم. در رشته ای که در زیر مشاهده می کند سعی شده است از حروفی که در ابتدای کلمات به کار رفته است، کلمه ی دیگری نیز با همان حرف تعریف شود. زیرا در هنگام جستجو می خواهیم مشاهده کنید که با نوشتن حرف اول کلمه، کلمات پیشنهادی به شما نشان داده می شود.

String[] MyDict={"Farvardin","Ordibehesht","Khordad","Tir","Mordad","Shahrivar",
                "Mehr","Aban","Azar","Dey","Bahman","Esfand",
                 "Ali","Fantasy","Emsal","Os","Kif","Saham"};

حال برای لیست کردن این رشته ها باید از یک ArrayAdapter استفاده کنیم. چون در قسمتی که می خواهیم از آرایه ی رشته ای که تعریف کرده ایم استفاده نماییم، باید اطلاعات به صورت لیست شده باشند. ArrayAdapter وظیفه لیست کردن این اطلاعات ( در اینجا ماه های سال و … که به صورت String تعریف کردیم) را برعهده دارد.

ArrayAdapter<String> adapter = new ArrayAdapter<String> (this,android.R.layout.select_dialog_item,MyDict);

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

AutoCompleteTextView actv=  (AutoCompleteTextView)findViewById(R.id.autoCompleteTextView);

لازم به ذکر است که کلاس لایبراری زیر باید در کدجاوای برنامه Import شود تا AutoCompleteTextView بتواند در قسمت جاوای برنامه شناخته شده و مورد استفاده قرار گیرد:

import android.widget.AutoCompleteTextView;

همان طور که در کد بالا نوشتیم، نام AutoCompleteTextView در کد جاوای برنامه actv است. در قسمت بعدی از متد setThreshold برای actv استفاده می کنیم:

 

کد این قسمت:

actv.setThreshold(1);

اگر به کد بالا با دقت نگاه کنید، متوجه می شوید که در آرگومان ورودی برای متد setThreshold عدد 1 گذاشته شده است. این عدد برای اینست که به AutoCompleteTextView بگوییم تنها با اولین حرفی که وارد کرده ایم شروع به جستجو کن.  در صورتی که عدد 2 را وارد کنیم، پس از وارد کردن دو حرف اول کلمه، برنامه شروع به جستجوی کلمات پیشنهادی می کند.

حال باید رشته ای که به صورت لیست شده با استفاده از ArrayAdapter انجام دادیم را به actv یعنی همان AutoCompleteTextView معرفی کنیم:

actv.setAdapter(adapter);

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

actv.setTextColor(Color.RED);

برنامه را اجرا می کنیم و خروجی زیر را مشاهده می نمایید:

دقت کنید که تنها با وارد کردن حرف a ، کلمات پیشنهادی که با حرف a شروع می شوند به شما نمایش داده می شود.

پس برای آن که لیستی کامل تر داشته باشید بهتر است از یک فایل دیکشنری پر از کلمات پیشنهادی استفاده کنید. فایل دیکشنری را در برنامه به صورت لیست شده با استفاده از ArrayAdapet به AutoComplete ی که تعریف کرده اید بدهید.

آموزش برنامه نویسی اندروید با اندروید استودیو (بخش چهل و یکم: تفاوت بین دو حالت LinearLayout و RelativeLayout برای نمایش فایل xml متناظر با activity ها)

استاندارد

زمانی که برای یک activity ، یک فایل xml متناظر می سازیم، معمولا نوع نمایش عناصر فایل xml متناظر آن، به صورت یکی از دو حالت LinearLayout و RelativeLayout می باشد. تفاوت این دو نوع نمایش، در نحوه قرارگیری ابزارهای مختلف در کنار یکدیگر می باشد.

برای مثال اگر ما یک دکمه Button و یک TextView داشته باشیم، اگر از حالت LinearLayout استفاده کنیم، این دو ابزار دقیقا در کنار هم چیده می شوند. ولی اگر از حالت RelativeLayout استفاده کنیم، این دو ابزار بر روی همدیگر قرار می گیرند!

یک پروژه جدید به نام Layout-Gsm ایجاد می کنم.

اگر فایل activity_main.xml را در بخش Res -> Layout انتخاب نماییم (قسمت Text) ، کدهای زیر را در ابتدا مشاهده می کنیم.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.gsm_developers.layout_gsm.MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!" />
</RelativeLayout>

به تگ RelativeLayout (یک تگ شروع و یک تگ پایان) دقت کنید. این تگ است که مشخص کرده است که نوع نمایش فایل xml به صورت RelativeLayout باشد. بنابراین اگر بخواهیم که نوع نمایش، به صورت LinearLayout باشد، باید دو عبارت RelativeLayout را به LinearLayout تبدیل کنیم، یعنی کدها باید به صورت زیر تغییر داده شوند :

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.gsm_developers.layout_gsm.MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!" />
</LinearLayout>

حالت LinearLayout

همان طور که قبلا گفته شد وقتی حالت نمایش فایل Xml به صورت LinearLayout باشد، ابزار ها به ترتیب در کنار هم چیده می شوند و بر روی هم قرار نمی گیرند. برای درک بهتر این موضوع، دو دکمه Button را هم به لایه اپلیکیشن می کشیم.

وقتی به قسمت Design فایل activity_main.xml می رویم، همان طور که در تصویر بالا مشاهده می کنید، عناصر به صورت مرتب و در یک ردیف افقی در کنار هم قرار می گیرند.

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

 

در این تصویر، با کلیک بر روی این گزینه، ابزارها به صورتی عمودی چیده شدند.

لازم به ذکر است که این گزینه فقط برای حالت LinearLayout فعال است.

حالت RelativeLayout

حال دوباره به قسمت Text فایل activity_main.xml می رویم. و تگ Xml آن را به RelativeLayout تغییر می دهیم. به قسمت Design می رویم و مشاهده می کنید که ابزارها بر روی همدیگر افتاده اند.

می توانید مکان ابزارها را با ماوس، تغییر دهید. ولی در حالت LinearLayout این مورد امکان پذیر نبود.

اگر به قسمت Text فایل activity_main.xml بروید، مشاهده می کنید که مثلا در ابزار Button کد زیر وجود دارد:

android:layout_below="@+id/textView2"

این کد حاکی از آنست که این عنصر، زیر عنصری با آیدی textView2 قرار دارد. پس اگر دیدید که با جابه جایی ابزاری، ابزار دیگری نیز جابه جا شد، با حذف اینچنین کدهایی می توانید این قسمت را غیرفعال نمایید.

اگر گزینه ای که در زیر با فلش مشخص شده است را بزنید، مقدار layout_width ابزاری که انتخاب کرده ایم، از wrap_content به match_parent تغییر می کند.

بدیهی است که گزینه کناری آن نیز این تغییر را برای Layout_height به وجود می آورد.

آموزش برنامه نویسی اندروید با اندروید استودیو (بخش سی و چهارم: کار با ویبره (Vibrator) در اندروید)

استاندارد

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

در این بخش قرار است با ویبره (Vibrator) کار کنیم. نحوه پیاده سازی و کار کردن با ویبره در اندروید خیلی سخت نیست و تنها کافی ست که ویبره را در کد جاوای برنامه تعریف کنیم. ولی از آنجایی که وقتی حرف از کار سخت افزار پلتفرم اندرویدی می آید، حتما دسترسی ها هم باید مشخص و تعیین شوند. پس باید در قسمت AndroidManifest نیز مانند بخش قبل، دسترسی هایی را به برنامه اندرویدی خود بدهیم.

من یک پروژه با نام Vibrator-Gsm در اندروید استودیو خودم ایجاد می کنم. از مسیر  app -> res -> activity_main.xml به قسمت لایه اپلیکیشن رفته و در قسمت Design این لایه، از Paletteها، یک Button را به لایه اپلیکیشن می کشم. اسم این Button را Vibrate می گذارم. آیدی Button من نیز، همان Button است.

در قسمت اول، یک متغیر از نوع Button به اسم BtnVbrte ایجاد می کنم و Button موجود در لایه را به BtnVbrte نسبت می دهم.

Button BtnVbrte = (Button) findViewById(R.id.button);

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

رویداد Listener برای متغیر BtnVbrte توسط دستور زیر تعریف می شود:

BtnVbrte.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

      // کد شما                

            }
        });

در مرحله بعد در داخل Listener دکمه Button ما، یک متغیر به نام دلخواه (در اینجا Vib) از نوع Vibrator معرفی می کنم. این متغیر در واقع از سرویس کلاس Vibrate استفاده می کند.

Vibrator Vib = (Vibrator) getSystemService(MainActivity.VIBRATOR_SERVICE);

سپس مدت زمان ویبره را نیز با استفاده از دستور زیر مشخص می کنیم. ( در اینجا 2 ثانیه = 2000 میلی ثانیه)

long milliseconds = 2000;

Vib.vibrate(milliseconds);

کد کامل MainActivity

package com.gsm_developers.vibrator_gsm;

import android.os.Vibrator;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

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

        Button BtnVbrte = (Button) findViewById(R.id.button);

        BtnVbrte.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                Vibrator Vib = (Vibrator) getSystemService(MainActivity.VIBRATOR_SERVICE);

                long milliseconds = 2000;

                Vib.vibrate(milliseconds);

            }
        });
    }
}

برای دادن دسترسی ویبره به برنامه، باید به قسمت AndroidManifests.xml رفته (مسیر app -> Manifests -> AndroidManifest.xml) و سپس کد زیر را در آنجا قبل از تگ application> نوشت.

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

کد کامل AndroidManifest

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.gsm_developers.vibrator_gsm">
    <uses-permission android:name="android.permission.VIBRATE"/>
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

</manifest>

با زدن دکمه Button که در اپلیکیشن ما Vibrate نام دارد، عمل ویبره انجام می شود.

البته پیغام من جهت تست بوده چون در دستگاه شبیه ساز، انجام شده و ویبره ای به صورت عملی نمیتوانستم مشاهده کنم. و کد آن در زیر آمده تا پس از اجرای دستور ویبره، این دستور اجرا شود.

Toast.makeText(MainActivity.this, "عمل ویبره انجام شد", Toast.LENGTH_LONG).show();

استخراج کامل فریمورهای سامسونگ و دیگر گوشیها

استاندارد

System Extractor

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

systemextractorgsm-developers

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

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

capture12

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

capture5

آموزش پورت کردن رام با چند کلیک

استاندارد

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

romporter1-3-1gsm-developers

این برنامه کاملا کارها را بصورت اتوماتیک انجام می دهد و کار با آن بسیار راحت می باشد.

برنامه نیاز به نصب NOTEPAD++ دارد.

برنامه را دانلود و استخراج کنید.همان طور که در تصویر زیر مشاهده می کنید دو پوشه داریم به اسمهای base-rom و  -port-rom

capture

بیس رام:رامی هست که برای گوشی شما توسعه یافته.

پورت رام:رامی که می خواهید برای گوشی خود پورت کنید.

یک رام سیانوژن یا AOSP را بعنوان بیس رام خود انتخاب کنید.و در پوشه بیس رام قرار بدهید.

رامی را که می خواهید برای گوشی خود پورت کنید را نیز درون پوشه پورت رام قرار بدهید.

اگر رام مد نظرتون جزو فایلهای .bat نوشته شده بود بر روی آن کلیک کنید و چند اینتر بزنید تمام.

یا بر روی Port.bat کلیک کنید دو بار اینتر بزنید مانند تصویر زیر گزینه ها را مشاهده کنید.

capture1

خوب کاملا واضح است رامی که می خواهید پورت کنید را انتخاب کنید وتمام

برنامه در طول پورت کردن هر وقت که تقاضایی جایگزینی و پاک کردن  داد فقط جواب بله بدهید.

گاهی در سیستمهای 32 بیتی ممکن است با خطایی استخراج مواجه بشید برای حل مشکل پوشه کامل برنامه پورت رام را در روت درایو خود بگذارید.

دقت داشته باشید که هر باگی درون بیس رام شما باشد در رام پورت شده وجود خواهد داشت.

بعد از پایان کار یک رام زیپ شده دارید برای فلش اگر هم بصورت زیپ آماده نبود خوتان می توانید فایلهای META-INF, system, boot.img, data را باهم با برنامه winrar به زیپ تبدیل کنید.(در بعضی رامها فایل بوت و پوشه دیتا ممکن است وجود نداشته باشد)

هر گونه کپی برداری بدون ذکر منبع شرعا حرام و مورد پسند نویسنده نمی باشد.