Zen

Suka Koding dan Matematika

Cara Mudah Membuat Aplikasi Android
Java

Berikut ini adalah cara yang biasa dan selalu aku gunakan untuk membuat aplikasi Android. So, kalau ada yang kurang paham, langsung komentar aja di bawah ya. Siapa tau nanti bisa kuperbaiki lagi artikelnya.

Persiapan

  1. Membuat akun Play Store (sebagai marketplace aplikasi Android)
  2. Membuat akun Admob (untuk pasang iklan)
  3. Aplikasi yang perlu disiapkan
  4. Skill yang perlu disiapkan
    1. Paham HTML dasar. Kalau bisa sih HTML5 juga
    2. Paham Javascript
    3. Paham CSS

  5. Library yang kita perlukan

    Berikut ini adalah beberapa library yang biasa kugunakan untuk membuat aplikasi Android berbasis web app ini. Library-library di bawah ini recommended. Karena selain kemudahan dan bisa dipakai, library selain library di bawah ini biasanya nggak bisa dipakai seperti Vue JS.

    1. Bootstrap CSS
    2. jQuery

Membuat Aplikasi Website

Karena aplikasi Android yang akan kita buat ini adalah berbentuk webview app, maka kita buat dulu bentuk aplikasi websitenya. Contohnya aja di bawah ini ya:

  1. Buat file bernama index.html dan style.css
  2. Isi index.html dengan:

     <!DOCTYPE html>
     <html>
     <head>
         <title>Hello World</title>
         <meta charset="utf-8">
         <meta name="viewport" content="width=device-width, initial-scale=1">
         <link rel="stylesheet" type="text/css" href="style.css">
     </head>
     <body>
         <h1>Hello World</h1>
     </body>
     </html>
    
  3. Isi style.css dengan:

     body {
         width: 80%;
     }
    

Menyiapkan Kode Iklan

Bundle ke dalam Android Studio

  1. Persiapan

    1. Download dulu repositori project Android Studio di https://github.com/mzaini30/nulis-aja-apk
    2. Rename project tersebut menjadi Hello World APK
  2. Edit-edit skrip

    1. Masukkan semua web app yang kamu buat ke folder app/src/main/assets
    2. Kemudian buka app/src/main/res/values/strings.xml. Maka akan tampil skrip berikut:

       <resources>
           <string name="app_name">Nulis Aja</string>
       </resources>
      

      Ubah menjadi:

       <resources>
           <string name="app_name">Hello World</string>
       </resources>
      
    3. Buka app/src/main/res/layout/activity_main.xml. Maka akan tampil:

       <?xml version="1.0" encoding="utf-8"?>
       <RelativeLayout
           xmlns:android="http://schemas.android.com/apk/res/android"
           android:id="@+id/content_layout"
           android:layout_width="match_parent"
           android:layout_height="match_parent"
           android:orientation="vertical" >
           <WebView  xmlns:android="http://schemas.android.com/apk/res/android"
               android:id="@+id/webview"
               android:layout_width="match_parent"
               android:layout_height="wrap_content"
               android:layout_alignParentTop="true"
               android:layout_alignParentLeft="true"
               android:layout_above="@+id/adView" />
           <com.google.android.gms.ads.AdView
               xmlns:ads="http://schemas.android.com/apk/res-auto"
               android:id="@+id/adView"
               android:layout_width="match_parent"
               android:layout_height="50dp"
               android:layout_alignParentBottom="true"
               android:layout_alignParentLeft="true"
               android:layout_centerHorizontal="true"
               android:layout_alignParentStart="true" ads:adSize="BANNER"
               ads:adUnitId="ca-app-pub-2238217504982060/4420139664">
           </com.google.android.gms.ads.AdView>
       </RelativeLayout>
      

      Ubah di bagian ca-app-pub-2238217504982060/4420139664 dengan kode iklan yang sudah kamu siapkan

    4. Kemudian perhatikan folder app/src/main/java/com/mzaini30/nulisaja. Nah, kalau dari folder itu, bisa diartikan bahwa nama paket APK-nya adalah com.mzaini30.nulisaja. Anggap aja nama APK-mu adalah com.mzaini30.helloworld, maka rename folder tersebut menjadi app/src/main/java/com/mzaini30/helloworld
    5. Buka app/src/main/java/com/mzaini30/helloworld/MainActivity.java. Maka akan tampil:

       package com.mzaini30.nulisaja;
       import android.content.Intent;
       import android.net.Uri;
       import android.os.Bundle;
       import android.content.Context;
       import android.view.KeyEvent;
       // import android.view.View;
       import android.webkit.URLUtil;
       // import android.webkit.WebChromeClient;
       import android.webkit.WebSettings;
       import android.webkit.WebView;
       import android.webkit.WebViewClient;
       import androidx.appcompat.app.AppCompatActivity;
       import com.google.android.gms.ads.AdRequest;
       import com.google.android.gms.ads.AdView;
       import com.google.android.gms.ads.MobileAds;
       public class MainActivity extends AppCompatActivity {
           private AdView mAdView;
           @Override
           protected void onCreate(Bundle savedInstanceState) {
               super.onCreate(savedInstanceState);
               setContentView(R.layout.activity_main);
               // AdMob banner ad test id: ca-app-pub-3940256099942544/6300978111
               // my banner ad id: ca-app-pub-2878374163061282/6615438108
               // change to your own ad id
               // Change in MainActivity.java and activity_main.xml
               MobileAds.initialize(this, "ca-app-pub-2238217504982060/4420139664");
               mAdView = (AdView)findViewById(R.id.adView);
               AdRequest adRequest = new AdRequest.Builder().build();
               mAdView.loadAd(adRequest);
               WebView webview = (WebView) findViewById(R.id.webview);
               // webview.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
               WebSettings webSettings = webview.getSettings();
               webSettings.setJavaScriptEnabled(true);
               webSettings.setDatabaseEnabled(true);
               // settings.setJavaScriptEnabled(true);
               // settings.setDomStorageEnabled(true);
               // webSettings.setAllowUniversalAccessFromFileURLs(true);
               // webSettings.setAllowFileAccessFromFileURLs(true);
               // webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);
               String databasePath = this.getApplicationContext().getDir("database", Context.MODE_PRIVATE).getPath();
               webSettings.setDatabasePath(databasePath);
               webSettings.setDomStorageEnabled(true);
               webSettings.setSupportMultipleWindows(true); // enable chrome client?
       //        setContentView(webview);
               // webview.setWebChromeClient(new WebChromeClient());
               webview.setWebViewClient(new WebViewClient() {
                   @Override
                   public boolean shouldOverrideUrlLoading(WebView view, String url) {
                       // TODO Auto-generated method stub
                       if (url.contains("http://") || url.contains("https://")){
                           Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                           startActivity(i);
                       } else {
                           view.loadUrl(url);
                       }
                       return true;
                   }
               });
               // replace this with your own link/web app address
               if (savedInstanceState == null) {
                   webview.loadUrl("file:///android_asset/index.html");
               }
           }
           @Override
           public boolean onKeyDown(int keyCode, KeyEvent event) {
               WebView webview = (WebView) findViewById(R.id.webview);
               if (event.getAction() == KeyEvent.ACTION_DOWN) {
                   switch (keyCode) {
                       case KeyEvent.KEYCODE_BACK:
                           if (webview.canGoBack()) {
                               webview.goBack();
                           } else {
                               finish();
                           }
                           return true;
                   }
               }
               return super.onKeyDown(keyCode, event);
           }
           @Override
           protected void onSaveInstanceState(Bundle outState )
           {
               WebView webview = (WebView) findViewById(R.id.webview);
               super.onSaveInstanceState(outState);
               webview.saveState(outState);
           }
           @Override
           protected void onRestoreInstanceState(Bundle savedInstanceState)
           {
               WebView webview = (WebView) findViewById(R.id.webview);
               super.onRestoreInstanceState(savedInstanceState);
               webview.restoreState(savedInstanceState);
           }
       }
      

      Nah, coba perhatikan pada package com.mzaini30.nulisaja;. Ubah menjadi package com.mzaini30.helloworld;

      Pada bagian MobileAds.initialize(this, "ca-app-pub-2238217504982060/4420139664"); ubah pada bagian ca-app-pub-2238217504982060/4420139664 dengan kode iklan yang sudah kamu dapatkan

    6. Buka app/src/main/AndroidManifest.xml. Maka akan tampil:

       <?xml version="1.0" encoding="utf-8"?>
       <manifest xmlns:android="http://schemas.android.com/apk/res/android"
           package="com.mzaini30.nulisaja">
           <uses-permission android:name="android.permission.INTERNET" />
           <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/AppTheme">
               <activity android:name=".MainActivity" android:configChanges="orientation|screenSize">
                   <intent-filter>
                       <action android:name="android.intent.action.MAIN" />
                       <category android:name="android.intent.category.LAUNCHER" />
                   </intent-filter>
               </activity>
           </application>
       </manifest>
      

      Perhatikan pada bagian com.mzaini30.nulisaja. Ubah menjadi com.mzaini30.helloworld

    7. Buka app/build.gradle. Maka akan tampil:

       apply plugin: 'com.android.application'
       android {
           compileSdkVersion 28
           defaultConfig {
               applicationId "com.mzaini30.nulisaja"
               minSdkVersion 15
               targetSdkVersion 28
               versionCode 4
               versionName "4"
               testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
           }
           buildTypes {
               release {
                   minifyEnabled false
                   proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
               }
           }
       }
       dependencies {
           implementation fileTree(dir: 'libs', include: ['*.jar'])
           implementation 'androidx.appcompat:appcompat:1.0.0-alpha1'
           implementation 'androidx.constraintlayout:constraintlayout:1.1.0'
           testImplementation 'junit:junit:4.12'
           androidTestImplementation 'androidx.test:runner:1.1.0-alpha3'
           androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha3'
       //    implementation 'com.android.support:appcompat-v7:28.0.0-alpha1'
           implementation ('com.google.android.gms:play-services-ads:15.0.1') {
               exclude module: 'support-v4'
               exclude module: 'customtabs'
           }
       //    implementation 'com.android.support:customtabs:28.0.0-alpha1'
       //    implementation 'com.android.support:support-v4:28.0.0-alpha1'
       }
      

      Pada bagian applicationId "com.mzaini30.nulisaja" ubah menjadi applicationId "com.mzaini30.helloworld"

      Pada bagian versionCode 4 ubah menjadi versionCode 1 karena ini APK versi 1

      Pada bagian versionName "4" ubah menjadi versionName "1" dengan alasan yang sama dengan yang di atas

Upload ke Play Store

Cari

Eh, Cara Jalanin Javascript Gimana Ya?
Javascript

Oke, langsung aja ya. Misalnya kita mau membuat aplikasi menghitung luas segitiga. Tau rumusnya lok? Itu tuh _setengah kali alas, kali tinggi_. 1. Buka browser (boleh Chrome, Firefox, atau Safari) 2. Pencet `Ctrl` `Shift` `I` Kan muncul tuh developer tools di bagian bawah browser. 3. Klik yang bagian `Console` 4....

Lanjutkan membaca →

Menyelesaikan Persoalan Matematika dan Fisika dengan Python
Python

# Luas Lingkaran ```python import math while True: jari_jari = int(raw_input('Masukkan panjang jari-jari: ')) hitung = math.pi * jari_jari**2 print 'Luas lingkaran = ' + str(hitung) print ``` # Luas Segitiga ```python while True: alas = int(raw_input('Berapa panjang alas: ')) tinggi = int(raw_input('Berapa panjang tinggi: ')) hitung = alas *...

Lanjutkan membaca →

Cara Cepat Mencari KPK dengan Python
Python

Berapakah KPK dari 3, 4, 9, 75, 400? Pertama, buat dulu pohon faktornya: |---|---| | 3 | 3 | | 4 | 2^2 | | 9 | 3^2 | | 75 | 3 * 5^2 | | 400 | 2^4 * 5^2 | {:.table .tanpa_header} Baru setelah itu kita gabungkan:...

Lanjutkan membaca →

Apa yang Bisa Dilakukan Hacker Supaya Insiden New Zealand Tidak Terjadi Lagi???
Python

Pertama tentu saja aku akan menyampaikan duka yang sangat mendalam atas insiden **terorisme** yang menimpa saudara-saudara kita di New Zealand. Mari kita heningkan sejenak untuk mengenang kembali arwah saudara-saudara kita yang gugur. Alfaaaatihah... # Apa yang Bisa Kita Lakukan Sebagai Programmer? 1. Meretas Play Store, Google, You Tube, atau apapun...

Lanjutkan membaca →

Terkuak!!! Berapakah Hasil dari Angka Berapapun Jika Dibagi dengan Nol? Ini Kata Python dan Kawan-Kawan...
Python

# Python ```python while True: angka_dibagi = raw_input('Masukkan angka yang mau dibagi: ') hitung = int(angka_dibagi) / 0 print angka_dibagi + ' / 0 = ' + hitung ``` Hasilnya: ``` Traceback (most recent call last): File "", line 3, in ZeroDivisionError: integer division or modulo by zero ``` #...

Lanjutkan membaca →

Yuk Kita Isi 5 Menit Ini untuk Latihan CSS
CSS

Misalnya kita mau membuat kotak dengan class anggap_aja_kotak: ```html ``` Oke, HTML di atas kita pakai terus ya. Jadi, aku cuma mau nulis CSS-nya aja (di dalam tag style): ```css .anggap_aja_kotak { } ``` Apa yang terjadi? Nggak ada! Hehehehe. # Kasih Warna dan Bentuk ```css .anggap_aja_kotak { width: 40px;...

Lanjutkan membaca →

Membuat Layout Mudah dengan Scribus!
Bash

# Instalasi Ketikkan perintah di bawah ini di Terminal: ```bash sudo apt install scribus ``` # Ketika Membuka Scribus Ketika membuka Scribus, akan ditampilkan dialog membuat halaman baru. Sesuaikan dengan kebutuhanmu. # Membuat Text Box Pencet `T`. # Zoom Pencet `Z`. # Mengisi Text Box dari File yang Sudah Disediakan...

Lanjutkan membaca →

Brainstorming Ide...

Lanjutkan membaca →

Karakter Yang Nggak Boleh Digunakan Saat Membuat File Baru Di Windows
Batch

```plaintext \ / : * ? " | ```

Lanjutkan membaca →

Aplikasi Desk Pin. Membantu Banget Buat Skripsian
Basic

Kalau di blog kan ada tuh yang namanya fixed sidebar, alias dia tuh fixed, nggak ter-scroll gitu. Nah, kalau di aplikasi Windows ada yang serupa. Namanya DeskPin. Berikut ini adalah penampakannya: ![](https://lh3.googleusercontent.com/-mQWX4iqlwHE/XIW7yGpWWYI/AAAAAAAADTg/r_Hg98oHu50j-zLyqwOaFbDf1CLVLwnwACLcBGAs/w1200/Untitled%2Bkasjflkajs.png) So, langsung download dan install aja.

Lanjutkan membaca →