• Tidak ada hasil yang ditemukan

Pengembangan Aplikasi

Dalam dokumen cara mudah membuat game untuk android (Halaman 30-37)

Pengembangan aplikasi ini ditarget untuk rilis di platform Android, sedangkan untuk platform Desktop hanya digunakan untuk test.

A) Android.

Berikut beberapa pengaturan yang berkaitan dengan platform Android.

A.1. AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="com.doyancreative.belajarwarna"

android:versionCode="1"

android:versionName="1.1" >

<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="19" />

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

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

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

<application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/GdxTheme" > <activity android:name="AndroidLauncher" android:label="@string/app_name" android:screenOrientation="portrait" android:configChanges="keyboard|keyboardHidden|orientation|screenSize"> <intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity>

<activity android:name="com.google.android.gms.ads.AdActivity"

android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode| screenSize|smallestScreenSize"></activity>

<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version"/>

</application> </manifest>

Lampiran 12.1. Kode pada file AndroidManifest.xml

Pengaturan pada AndroidManifest.xml ini bisa dilakukan secara visual juga, bisa dilihat pada gambar berikut:

A.2. AndroidLauncher.java package com.doyancreative.belajarwarna; import android.app.Dialog; import android.content.Intent; import android.graphics.drawable.ColorDrawable; import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.view.Window; import android.view.WindowManager; import android.widget.Button; import android.widget.RelativeLayout; import android.widget.Toast; import com.badlogic.gdx.backends.android.AndroidApplication; import com.badlogic.gdx.backends.android.AndroidApplicationConfiguration; import com.doyancreative.belajarwarna.BelajarWarna; import com.doyancreative.belajarwarna.GameEventListener; import com.google.android.gms.ads.AdRequest; import com.google.android.gms.ads.AdSize; import com.google.android.gms.ads.AdView;

publicclass AndroidLauncher extends AndroidApplication implements GameEventListener { // #1

protectedstaticfinal String AD_UNIT_ID = "ads_unit_id_admob"; // #2

protectedstaticfinal String DEVICE_ID =

"BXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXB"; //emulator

private BelajarWarna belajarWarna; private Handler dialogHandler; private Dialog dialog;

protected AdView adView; protected RelativeLayout layout;

@Override

protectedvoid onCreate (Bundle savedInstanceState) { super.onCreate(savedInstanceState);

dialogHandler = new Handler(); layout = new RelativeLayout(this);

requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); // #3 getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); getWindow().clearFlags(WindowManager.LayoutParams. FLAG_FORCE_NOT_FULLSCREEN); AndroidApplicationConfiguration config = new

AndroidApplicationConfiguration(); config.useCompass = false;

config.useGLSurfaceView20API18 = false; belajarWarna = new BelajarWarna(this);

View gameView = initializeForView(belajarWarna, config);

layout.addView(gameView);

adView = new AdView(this);

adView.setAdUnitId(AD_UNIT_ID); adView.setAdSize(AdSize.BANNER);

adView.setAdListener(new ToastAdListener(this));

RelativeLayout.LayoutParams adParams = new RelativeLayout.LayoutParams( RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); // #4 adParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); adParams.addRule(RelativeLayout.CENTER_HORIZONTAL);

layout.addView(adView, adParams); // #5

//adView.loadAd(new AdRequest.Builder().build());

// #6 // TEST //

AdRequest adRequest = new AdRequest.Builder()

.addTestDevice(AdRequest.DEVICE_ID_EMULATOR) .addTestDevice(DEVICE_ID)

.build();

// Start loading the ad in the background. adView.loadAd(adRequest); // #6a setContentView(layout); // #7 msgShowAds(true); }

publicvoid msgShowAds(boolean show) { if(show) {

adView.setVisibility(View.VISIBLE); } else {

adView.setVisibility(View.GONE); }

} // #8

@Override

publicvoid msgRateUs() {

runOnUiThread(new Runnable() { publicvoid run() {

Intent localIntent = new Intent("android.intent.action.VIEW"); localIntent.setData(Uri.parse("market://details?id=" +

getPackageName()));

try {

startActivity(localIntent);

Log.i("MainActivity", "Rate My Game..."); return;

} catch (Exception localException) {

Toast.makeText(getBaseContext(), "Market Not Work!", Toast.LENGTH_SHORT).show();

} } }); } // #9 @Override

publicvoid msgShowInfo() {

dialogHandler.post(showInfoDialogRunnable); }

final Runnable showInfoDialogRunnable = new Runnable() { publicvoid run() {

// Base source code available at // www.doyancreative.com

try {

dialog = new Dialog(getContext());

dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);

dialog.setContentView(R.layout.info_dialog);

dialog.getWindow().setBackgroundDrawable(new ColorDrawable(1));

dialog.setTitle(R.string.app_name);

dialog.setCancelable(true);

Button okButton = (Button) dialog.findViewById(R.id.ok_button); okButton.setOnClickListener(new OnClickListener() {

publicvoid onClick(View v) {

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.doyancreative.com"));

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent);

dialog.dismiss();

Log.i("MainActivity", "Let's get source code..."); }

});

dialog.show(); return;

} catch (Exception localException) {

Toast.makeText(getBaseContext(), "Dialog Not Work!", Toast.LENGTH_SHORT).show();

} }

}; // #10

@Override

publicvoid onPause() { if (adView != null) {

adView.pause(); }

super.onPause(); }

@Override

publicvoid onResume() { super.onResume(); if (adView != null) { adView.resume(); } } @Override

protectedvoid onDestroy () { if (adView != null) { adView.destroy(); } super.onDestroy(); } // #10a }

Lampiran 12.2. Kode pada file AndroidLauncher.java

Keterangan pada file AndroidLauncher.java sebagai berikut:

#1. AD_UNIT_ID, ID ini diambil dari Admob. Untuk mendaftar pada Admob gratis.

Gambar 12.2. Ad Unit ID pada Admob.

#2. DEVICE_ID, Device ID ini hanya digunakan untuk pada saat sedang melakukan test iklan dari Admob, untuk aplikasi yang dirilis Device_ID ini bisa dihapus. Untuk mendapatkan Device ID dari Emulator atau perangkat Smartphone yang digunakan untuk test bisa dilihat dari LogCat dengan mencari

baris ...addTestDevice(“xxxxxx”), contoh tampilannya bisa dilihat di bawah ini. Selain melalui LogCat bisa juga dengan menggunakan aplikasi, misalnya aplikasi Device ID.

Gambar 12.3. Mendapatkan Device ID pada LogCat.

#3. getWindow().setFlags

(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON,

WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); Parameter ini bertujuan agar layar Smartphone tetap hidup (tidak idle) pada saat aplikasi dijalankan.

#4. RelativeLayout.ALIGN_PARENT_BOTTOM, parameter ini bertujuan menempatkan Banner iklan di bagian bawah dari layar aplikasi.

#5. adView.loadAd (new AdRequest.Builder().build()); Kode ini

digunakan untuk meminta menampilkan iklan. Pada saat sedang melakukan test iklan, jangan menggunakan kode ini, untuk keamanan akun Admob. Untuk test gunakan kode pada keterangan nomor #6.

#6. Baris kode dari nomor #6 s.d. #6a digunakan untuk meminta iklan dari Admob dengan mode test. Untuk aplikasi yang dirilis, hapus kode ini dan gunakan kode pada nomor #5.

#7. msgShowAds(true); Kode ini untuk menampilkan iklan yang sudah dimuat (loading). Perlu diperhatikan untuk menampilkan iklan harus menunggu iklan selesai dimuat.

#8. Pada Method ini digunakan untuk menampilkan rating aplikasi di Google Play.

#10 s.d. #10a standard implementasi kode iklan Admob dari Google.

Untuk keterangan kode selanjutnya bisa diperhatikan dari alur proses dan mencoba menjalankan aplikasi yang sudah jadi (keterangan download ada dibagian akhir artikel).

B) Desktop

Untuk memudahkan dan mempercepat test aplikasi yang sedang dikembangkan, akan lebih cepat jika dilakukan di dalam platform desktop. Berikut perubahan pada file DesktopLauncher.java yang ada di dalam folder platform desktop:

• Tambahkan config.width = 600; untuk menentukan ukuran lebar layar aplikasi.

• Tambahkan config.height = 1024; untuk menentukan ukuran tinggi layar aplikasi.

• Tambahkan useGL30 = false; untuk platform desktop standard OpenGL yang digunakan yaitu versi 2.

Gambar 12.4. Perubahan pada file DesktopLauncher.java

Dalam dokumen cara mudah membuat game untuk android (Halaman 30-37)

Dokumen terkait