«یا اللهُ یا رَبِّ یا حَیُّ یا قَیّوم یا ذَالجَلالِ وَ الاکرام اَسئَلُکَ بِاسمِکَ اَلعَظیم اَلاَعظَم اَن تَرزُقَنی رِزقاً حَلالاً طَیِّباً بِرَحمَتِکَ الواسِعَه یا اَرحَمَ الرّاحِمِین.»
کلاس AndroidJavaClass در یونیتی 5_سیستم تبلیغات عدد،چگونه کار می کند؟ :: گیم اور _ بازیسازی با unity + مطالب متفرقه

گیم اور _ بازیسازی با unity + مطالب متفرقه

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

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

به نام خدا
--
گروه قدیم ما promakers.ir یا پرومیکرز بود که بالای هزار اموزش توش ساخته بودم به اسم sajjad3011 ولی حیف ادمین سایتش عوض کرد
حالا سوالی بود کاری بود این شمارمه

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

---
سوالی بود بذارید
نظر خصوصی نذارید
پاسخش سخته
دوست داشتید شماره بذارید تو واتساپ یا ایتا یا .... گروه بزنیم.
09358077198

بایگانی
پیوندها

منبع :gameover.blog.ir

نویسنده:sajjad3011
منابع:سایت یونیتی + سایت اندروید + منابع سیشارپ + ... .

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

کلاس جاوای اندروید در یونیتی نمایشی از یک موجودیت جنریک از java.lang.Class هست.(مبحث پیچیده هست اما زمانیکه با سورس هایی در سایت adad.ir یا غیره مواجه میشید اینا بهتون کمک می کنه تا موضوع تبلیغات از طریق ساخت این کلاس رو بهتر درک کنید.اگه هم سخته نگران نباشید جلوتر شاید بهش برسیم)

توضیح:
کلاس AndroidJavaClass از کلاس AndroidJavaObject مشتق میشه(یعنی خصوصیات AndroidJavaObject رو به ارث می بره.مثل توابع و متغیرها و ...)


اگه بخوام به زبون قابل فهم یادتون بدم یعنی دسترسی به کتابخانه ای که به زبان جاوا برای اندروید نوشته شده. مثال می زنم: سایت عدد (adad.ir) یا سایت های دیگه مثل بازار و غیره رو دیدید که میان پلاگین های اندرویدی با پسوند jar(یا java archive) به شما می دن می گن توی unity اضافه کنید بعدش فلان دستورات رو بکار بگیرید تا بتونید با استفاده از اونا توی دستگاه های اندرویدی تبلیغات برنامه نویسی شده توی اون کتابخونه jar رو استفاده کنید؟

این دقیقا همونه که با مثال یادتون میدم تا بهتر درک کنید که چه قدرت هایی درش نهفته هست.مثل همون DLL نویسی که توی سیشارپ می نوشتیم و توی یونیتی ازش استفاده می کردیم. این فرقش اینه که با eclipse یا android studio یا ... کتابخونه های جاوا رو برنامه نویسی کردن(یا خودمون هم اگه بخوایم می تونیم) بعدش به jar بیلد کردن و به یونیتی اضافه می کنن. حالا روش استفاده اش رو یاد می گیریم.

توابع این کلاس عبارتند از:

Call فراخوانی یک متد جاوا روی یک ابجکت (غیر استاتیک).
CallStatic فراخوانی یک متد استاتیک جاوا روی یک کلاس.
Dispose کل بک کردن IDisposable .(اگه فراموشم نشده باشه کل بک یعنی یک تابع رو به ورودی تابع دیگه بدیم)
Get دریافت مقدار یک فیلد در یک ابجکت(غیر استاتیک).
GetRawClass بازیابی اشاره گر jclass خام به کلاس جاوا.
GetRawObject بازیابی اشاره گر jobject خام به شی جاوا.
GetStatic دریافت مقدار یک فیلد استاتیک در نوع شی.
Set تنظیم مقدار یک فیلد در یک شی (غیر استاتیک).
SetStatic تنظیم مقدار یک فیلد استاتیک در نوع شی.

شکل کلی یا پوتوتایپ این کلاس به این صورت هست :

public AndroidJavaClass(string className);

اسم کلاسی از اندروید رو که میخوایم استفاده کنیم به صورت رشته ای(string) به ورودیش معرفی می کنیم.

مثال:

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour {
    void Start() {
        AndroidJavaClass jc = new AndroidJavaClass("java.lang.System");// Try to collect som Java garbage..
        jc.CallStatic("gc");
    }
}



در مثال فوق یک نمونه از کلاس java.lang.System به نام jc ساختیم . gc مخفف garbage collector یا جمع کننده ی زباله هست.
یعنی قسمت های اشغالی حافظه رو از داده های موقت و بی استفاده پاک سازی و آزاد می کنه.

مثال بعدی:


using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour {
    void Start() {
        AndroidJavaClass jc = new AndroidJavaClass("android.os.Build"); // Retrieve the manufacturer of the product/hardware.
        string manufacturer = jc.Get<string>("MANUFACTURER");
    }
}

در این مثال با استفاده از کلاس اندروید android.os.Build اطلاعات سخت افزاری کارخانه ی سازنده ی دستگاه رو باز یابی و در متغیر رشته ای manufacturer ذخیره کردیم.

کل کلاس های اندرویدی جاوا رو میخواید بلد شید نیاز به حفظ نیست به این لینک سر بزنید :
http://developer.android.com/reference/classes.html
مثلا خصوصیات همین کلاس anroid.os.Build اینجا اومده:
http://developer.android.com/reference/android/os/Build.html
مثال :
Build.VERSION که ورژن سیستم عامل نصب شده ی اندروید روی گوشی رو به صورت رشته ای نشون میده.
Build.VERSION_CODES که کد شمارشی کدهای ورژن SDK رو بر می گردونه .
و الی آخر... .

کلاس AndroidJavaObject :
شکل کلی:
public AndroidJavaObject(string className, params object[] args);
className اسم کلاس
args آرایه ای از آرگومان ها یا پارامترهای ورودی به کانستراکتور(کلاس سازنده)
با این کلاس یک ابجکت اندروید رو مورد استفاده قرار می دیم.
مثال:

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour {
    void Start() {
        AndroidJavaObject jo = new AndroidJavaObject("java.lang.String", "some string");
    }
}
در مثال فوق یک شی جاوا اندروید با قابلیت ذخیره رشته ایجاد کردیم.

مثال بعدی:

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour {
    void Start() {
        int width = 300;
        int height = 150;
        AndroidJavaObject jo = new AndroidJavaObject("android/view/ViewGroup$LayoutParams", width, height);
    }
}
در مثال فوق عدد 300 و 150 رو به پارامترهای width و height از لی اوت(layout یا فرم اپلیکیشن اندرویدی) پاس کردیم که باعث میشه پهنا و ارتفاع لی اوت مون تنظیم بشه(برای درک لی اوت هم کافیه شما برنامه نویسی با b4a یا android studio یا eclipse رو بلد باشید تا مفهوم رو بهتر درک کنید)

امیدوارم کلیات رو درک کرده باشید.

حالا پلاگین عدد(adad.ir) اومده خودش یک کتابخونه ی اختصاصی نوشته و با دستور زیر ازش داره استفاده می کنه . مثلا تبلیغات رو اینطوری حذف می کنه :
AndroidJavaClass pluginClass = new AndroidJavaClass("ir.adad.AdadUnityPlugin");
pluginClass.CallStatic("setDisabled", new object[1] {"true"});
یک مدل از کلاس ir.adad.AdadUnityPlugin می سازه با نام pluginClass و سپس متد setDisabled رو با آرایه ای تک عضوی object با مقدار true مقدار میده. به همین سادگی با اندروید ارتباط می گیره و تبلیغات خودش رو به صورت توکار حذف می کنه.


من فقط اشاره کردم و هنوز خیلی مطالب برای یادگیری هست. توضیحات بیشتر انشاءا... باشه به حساب مطالعات آزاد شما.
کلاس AndroidJavaObject در یونیتی 5 قسمت 2 :

قبلا با دستور زیر در یونتی 5 آشنا شدیم :
AndroidJavaObject jo = new AndroidJavaObject("android/view/ViewGroup$LayoutParams", width, height);

اما سوال:
این استاندارد از کجا اومد و چطوری ما attribute یا خصوصیت های LayoutParams رو بدست آوردیم و از کجا فهمیدیم مسیر android/view/ViewGroup.LayoutParams.html هست.
پاسخ:
تمامی استاناردهای اندروید در سایت اندروید به آدرس http://developer.android.com/reference/ موجود هست.
مثال :

http://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html

نکته:
احتمالا سایت شیلتر باشه. شما با قند شکن بازش کنید.

نظرات (۱)

ممنون از آموزشت اما اگه یه نمونه پروژه یونیتی از تبلیغات عدد میزاشتی خودم کالبد شکافیش می کردم خیلی بیشتر کمک می کرد

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

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی