Gendang Belek
berarti gendang besar merupakan alat musik tradisional yang permainannya dilakukan secara berkelompok, gendang belek berasal dari suku sasak yang berasal dari pulau Lombok daerah Nusa Tenggara Barat, Sejarah dulu gendang belek dijadian penyemangat prajurit yang pergi berperang.
Mungkin itu sedikit pemahaman mengenai gendang belek, di artikel ini tidak membahas mengenai cara memainkan gendang belek tetapi kita akan membuat gendang belek yang dapat kita mainkan dalam smartphone, dalam pembuatan aplikasi di artikel ini penulis hanya menampilkan source code
supaya anda tidak perlu melakukan pengetikan dari aplikasi tersebut, jadi anda hanya mengikuti intruksi dari pengerjaan vidio.
Tutorial Bagian 2
Tutorial Bagian 3
Pembuatan Projek
Terlebih dahulu anda harus download Resource
yang diperlukan seperti design
, gambar
, backsound
, animasi
, color
dan lainnya
Download Resource
Buat aplikasi baru dengan nama GendangBelek
kemudian masukan source code
berikut dibagian manifest
.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.kodetr.gendangbelek">
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.INTERNET" />
<application
android:allowBackup="true"
android:configChanges="keyboardHidden|orientation"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/Theme.AppCompat.NoActionBar">
<activity
android:name=".DetailActivity"
android:screenOrientation="landscape">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".MainActivity"
android:screenOrientation="landscape" />
<activity
android:name=".ItemActivity"
android:screenOrientation="landscape" />
<activity
android:name=".Tentang"
android:screenOrientation="portrait" />
</application>
</manifest>
Bagian source code
tersebut terdapat class DetailActivity
sebagai class utama yang fungsinya saat aplikasi dijalankan activity tersebut yang pertama kali muncul, kemudaian ada class MainActivity
, ItemActivity
dan yang terakhir class Tentang
.
Buat Class EffectButton
Berfungsi sebagai effect tombol setiap alat musik di tekan
package com.kodetr.gendangbelek
import kotlin.math.cos
import kotlin.math.pow
class EffectButton(amplitude: Double, frequency: Double) : android.view.animation.Interpolator {
private var mAmplitude = 1.0
private var mFrequency = 10.0
init {
mAmplitude = amplitude
mFrequency = frequency
}
override fun getInterpolation(time: Float): Float {
val amplitude = mAmplitude
if (amplitude == 0.0) {
}
return (-1.0 * Math.E.pow(-time / mAmplitude) * cos(mFrequency * time) + 1).toFloat()
}
}
Buat Class PlaySound
Berfungsi sebagai pemutar musik dari setiap alat musik
package com.kodetr.gendangbelek
import android.content.Context
import android.media.MediaPlayer
/**
* Created by kodetr on 12/09/2019.
*/
//TODO: Deklarasi class construktor proses tetap dijalankan
class PlaySound(context: Context) {
// TODO: Varibale MediaPlayer untuk menjalankan song
var playGong1Song: MediaPlayer = MediaPlayer.create(context, R.raw.gong1)
var playGong2Song: MediaPlayer = MediaPlayer.create(context, R.raw.gong2)
var playGendang1Song: MediaPlayer = MediaPlayer.create(context, R.raw.gendang1)
var playGendang2Song: MediaPlayer = MediaPlayer.create(context, R.raw.gendang2)
var playTerompangKecil1Song: MediaPlayer = MediaPlayer.create(context, R.raw.terompongkecil1)
var playTerompangKecil2Song: MediaPlayer = MediaPlayer.create(context, R.raw.terompongkecil2)
var playTerompangBesar1Song: MediaPlayer = MediaPlayer.create(context, R.raw.terompongbesar1)
var playTerompangBesar2Song: MediaPlayer = MediaPlayer.create(context, R.raw.terompongbesar2)
var playJemprangSong: MediaPlayer = MediaPlayer.create(context, R.raw.jemprang)
var playJemprang2Song: MediaPlayer = MediaPlayer.create(context, R.raw.jemprang)
var playPetukSong: MediaPlayer = MediaPlayer.create(context, R.raw.petuk)
var playTerumpangsinggelSong: MediaPlayer = MediaPlayer.create(context, R.raw.terompongsingle)
// TODO: proses menjalankan song alat gendang belek
fun playSound(mp: MediaPlayer?) {
try {
if (mp != null) {
if (mp.isPlaying) {
mp.pause()
mp.seekTo(0)
mp.start()
} else {
mp.start()
}
}
} catch (e: Exception) {
}
}
//TODO: Methode untuk menjalankan musik pada saat di tekan pada setiap alat gendang belek
fun playGong1Song() {
playSound(playGong1Song)
}
fun playGong2Song() {
playSound(playGong2Song)
}
fun playGendang1Song() {
playSound(playGendang1Song)
}
fun playGendang2Song() {
playSound(playGendang2Song)
}
fun playTerompangKecil1Song() {
playSound(playTerompangKecil1Song)
}
fun playTerompangKecil2Song() {
playSound(playTerompangKecil2Song)
}
fun playTerompangBesar1Song() {
playSound(playTerompangBesar1Song)
}
fun playTerompangBesar2Song() {
playSound(playTerompangBesar2Song)
}
fun playJemprangSong() {
playSound(playJemprangSong)
}
fun playPetukSong() {
playSound(playPetukSong)
}
fun playTerumpangsinggelSong() {
playSound(playTerumpangsinggelSong)
}
fun playJemprang2Song() {
playSound(playJemprang2Song)
}
}
Buat Class DetailActivity
Fungsi dari class tersebut sebagai menu utama dan sebagai pilihan alat musik yang akan kita mainkan.
package com.kodetr.gendangbelek
import android.content.Intent
import android.content.pm.ActivityInfo
import android.os.Bundle
import android.view.KeyEvent
import android.view.View
import android.view.Window
import android.view.WindowManager
import android.widget.ImageView
import androidx.appcompat.app.AppCompatActivity
/**
* Created by kodetr on 12/09/2019.
*/
class DetailActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// tampilan layar landscape
requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE
// menghilangkan judul toolbar
requestWindowFeature(Window.FEATURE_NO_TITLE)
//tampilkan fullscreen
window.setFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN
)
setContentView(R.layout.activity_detail)
//mengambil id pada layout activity_main untuk tombol tentang
val ivTentang = findViewById<View>(R.id.ivTentang) as ImageView
// proses jika tombol help di sebelah pojok kanan atas di tekan maka berpindah ke tampilan tentang
ivTentang.setOnClickListener {
startActivity(
Intent(
this@DetailActivity,
Tentang::class.java
)
)
}
}
fun ivPlayAll(v: View) {
startActivity(Intent(this@DetailActivity, MainActivity::class.java))
// animasi layout untuk proses keluar dari class splash
overridePendingTransition(0, android.R.anim.fade_out)
finish()
}
// TODO: proses penekanan pada Gong
fun ClickGong(view: View) {
val i = Intent(this, ItemActivity::class.java)
i.putExtra("item", "gong")
startActivity(i)
}
// TODO: proses penekanan pada Gendang
fun ClickGendang(view: View) {
val i = Intent(this, ItemActivity::class.java)
i.putExtra("item", "gendang")
startActivity(i)
}
// TODO: proses penekanan pada Terumpang Kecil
fun ClickTerompangKecil(view: View) {
val i = Intent(this, ItemActivity::class.java)
i.putExtra("item", "item_terompang_kecil")
startActivity(i)
}
// TODO: proses penekanan pada Terompang Besar
fun ClickTerompangBesar(view: View) {
val i = Intent(this, ItemActivity::class.java)
i.putExtra("item", "terompang_besar")
startActivity(i)
}
// TODO: proses penekanan pada Jemprang 1
fun ClickJemprang(view: View) {
val i = Intent(this, ItemActivity::class.java)
i.putExtra("item", "jemprang")
startActivity(i)
}
// TODO: proses penekanan pada Petuk
fun ClickPetuk(view: View) {
val i = Intent(this, ItemActivity::class.java)
i.putExtra("item", "petuk")
startActivity(i)
}
// TODO: proses penekanan pada Terompang Single
fun ClickTerompangsinggel(view: View) {
val i = Intent(this, ItemActivity::class.java)
i.putExtra("item", "terompang_single")
startActivity(i)
}
}
Buat Class MainActivity
Dalam activity ini terdapat semua alat musik yang tinggal di mainkan beserta memilih musik yang akan diputar
package com.kodetr.gendangbelek
import android.app.ActivityOptions
import android.content.Intent
import android.content.pm.ActivityInfo
import android.media.AudioManager
import android.media.MediaPlayer
import android.net.Uri
import android.os.Bundle
import android.view.KeyEvent
import android.view.View
import android.view.Window
import android.view.WindowManager
import android.view.animation.Animation
import android.view.animation.AnimationUtils
import android.widget.Button
import android.widget.ImageView
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
/**
* Created by kodetr on 12/09/2019.
*/
class MainActivity : AppCompatActivity() {
private var playSound: PlaySound? = null
private val RQS_OPEN_AUDIO_MP3 = 0
private var audioFileUri: Uri? = null
private var mediaPlayer: MediaPlayer? = null
private var animationDuration: Double = 0.toDouble()
private var effect: EffectButton? = null
private var anim: Animation? = null
private var ivAmbilMusik: ImageView? = null
private var ivPlay: ImageView? = null
private var ivStop: ImageView? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// tampilan layar landscape
requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE
// menghilangkan judul toolbar
requestWindowFeature(Window.FEATURE_NO_TITLE)
//tampilkan fullscreen
window.setFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN
)
setContentView(R.layout.activity_main)
//mengambil id pada layout activity_main untuk tombol tentang
val ivTentang = findViewById<View>(R.id.ivTentang) as ImageView
// proses jika tombol help di sebelah pojok kanan atas di tekan maka berpindah ke tampilan tentang
ivTentang.setOnClickListener {
startActivity(
Intent(
this@MainActivity,
Tentang::class.java
)
)
}
// deklarasi mediaplayer
playSound = PlaySound(this@MainActivity)
mediaPlayer = MediaPlayer()
// TODO: proses ambil musik dari memory internal atau external
//mengambil id pada layout activity_main untuk ambil musik
ivAmbilMusik = findViewById<View>(R.id.ivAmbilMusik) as ImageView
ivAmbilMusik!!.setOnClickListener { v ->
val intent = Intent()
intent.action = Intent.ACTION_GET_CONTENT
intent.type = "audio/*"
val options = ActivityOptions.makeScaleUpAnimation(
v, 0,
0, v.width, v.height
)
startActivityForResult(
Intent.createChooser(intent, "Pilih Musik"),
RQS_OPEN_AUDIO_MP3,
options.toBundle()
)
// kondisi jika musik berjalan kemudian penekanan ambil musik maka musik distop, gambar pause akan berubah menjadi play
if (mediaPlayer!!.isPlaying) {
ivPlay!!.setImageDrawable(resources.getDrawable(R.drawable.ic_play))
// musik stop
mediaPlayer!!.stop()
try {
// musik berhenti pada posisi distop jika di jalankan makan akan dimulai pada posisi distop
mediaPlayer!!.seekTo(0)
} catch (t: Throwable) {
t.printStackTrace()
}
}
}
// TODO: proses play musik
//mengambil id pada layout activity_main untuk play
ivPlay = findViewById<View>(R.id.ivPlay) as ImageView
ivPlay!!.setOnClickListener {
if (mediaPlayer != null) {
if (mediaPlayer!!.isPlaying) {
if (mediaPlayer != null) {
// musik pause
mediaPlayer!!.pause()
// jika musik sedang berjalan maka gambar play akan berubah menjadi play
ivPlay!!.setImageDrawable(resources.getDrawable(R.drawable.ic_play))
}
} else {
if (mediaPlayer != null) {
// musik start
mediaPlayer!!.start()
ivPlay!!.setImageDrawable(resources.getDrawable(R.drawable.ic_pause))
}
}
} else {
Toast.makeText(this@MainActivity, "Musik Belum di pilih", Toast.LENGTH_SHORT).show()
}
}
// TODO: proses stop musik
//mengambil id pada layout activity_main untuk tombol stop
ivStop = findViewById<View>(R.id.ivStop) as ImageView
ivStop!!.setOnClickListener {
if (mediaPlayer!!.isPlaying) {
if (mediaPlayer != null) {
ivPlay!!.setImageDrawable(resources.getDrawable(R.drawable.ic_play))
mediaPlayer!!.stop()
try {
mediaPlayer!!.seekTo(0)
} catch (t: Throwable) {
t.printStackTrace()
}
} else {
Toast.makeText(this@MainActivity, "Musik Belum di pilih", Toast.LENGTH_SHORT)
.show()
}
}
}
//TODO: animasi effect pada tombol seteap alat gendang belek
animationDuration = 0.1 * 1000
effect = EffectButton(1.0, 3.0)
anim = AnimationUtils.loadAnimation(this, R.anim.bounce)
anim!!.duration = animationDuration.toLong()
anim!!.interpolator = effect
}
// TODO: proses penekanan pada Gong 1
fun ClickGong1(view: View) {
//mengambil id Gong 1 pada design layout activity_main
val gong1 = findViewById<View>(R.id.gong) as Button
// animasi penekanan Gong 1
gong1.startAnimation(anim)
//play song Gong 1 dari class PlaySound Gong 1
playSound!!.playGong1Song()
}
// TODO: proses penekanan pada Gong 2
fun ClickGong2(view: View) {
//mengambil id Gong 2pada design layout activity_main
val gong2 = findViewById<View>(R.id.gong2) as Button
// animasi penekanan Gong 2
gong2.startAnimation(anim)
//play song Gong 2 dari class PlaySound
playSound!!.playGong2Song()
}
// TODO: proses penekanan pada Gendang 1
fun ClickGendang1(view: View) {
//mengambil id Gendang 1 pada design layout activity_main
val gendang1 = findViewById<View>(R.id.gendang1) as Button
// animasi penekanan Gendang 1
gendang1.startAnimation(anim)
//play song Gendang 1 dari class PlaySound
playSound!!.playGendang1Song()
}
// TODO: proses penekanan pada Gendang 2
fun ClickGendang2(view: View) {
//mengambil id Gendang 2 pada design layout activity_main
val gendang2 = findViewById<View>(R.id.gendang2) as Button
// animasi penekanan Gendang 2
gendang2.startAnimation(anim)
//play song Gendang 2 dari class PlaySound
playSound!!.playGendang2Song()
}
// TODO: proses penekanan pada Terumpang Kecil 1
fun ClickTerompangKecil1(view: View) {
//mengambil id Terumpang Kecil 1 pada design layout activity_main
val terompangkecil1 = findViewById<View>(R.id.terompangkecil1) as Button
// animasi penekanan Terumpang Kecil 1
terompangkecil1.startAnimation(anim)
//play song Terumpang Kecil 1 dari class PlaySound
playSound!!.playTerompangKecil1Song()
}
// TODO: proses penekanan pada Terumpang Kecil 2
fun ClickTerompangKecil2(view: View) {
//mengambil id Terumpang Kecil 2 pada design layout activity_main
val terompangkecil2 = findViewById<View>(R.id.terompangkecil2) as Button
// animasi penekanan Terumpang Kecil 2
terompangkecil2.startAnimation(anim)
//play song Terumpang Kecil 2 dari class PlaySound
playSound!!.playTerompangKecil2Song()
}
// TODO: proses penekanan pada Terompang Besar 1
fun ClickTerompangBesar1(view: View) {
//mengambil id Terompang Besar 1 pada design layout activity_main
val terompangbesar1 = findViewById<View>(R.id.terompangbesar1) as Button
// animasi penekanan Terompang Besar 1
terompangbesar1.startAnimation(anim)
//play song Terompang Besar 1 dari class PlaySound
playSound!!.playTerompangBesar1Song()
}
// TODO: proses penekanan pada Terompang Besar 2
fun ClickTerompangBesar2(view: View) {
//mengambil id Terompang Besar 2 pada design layout activity_main
val terompangbesar2 = findViewById<View>(R.id.terompangbesar2) as Button
// animasi penekanan Terompang Besar 2
terompangbesar2.startAnimation(anim)
//play song Terompang Besar 2 dari class PlaySound
playSound!!.playTerompangBesar2Song()
}
// TODO: proses penekanan pada Jemprang 1
fun ClickJemprang(view: View) {
//mengambil id Jemprang 1pada design layout activity_main
val jemprang = findViewById<View>(R.id.jemprang) as Button
// animasi penekanan Jemprang 1
jemprang.startAnimation(anim)
//play song Jemprang 1 dari class PlaySound
playSound!!.playJemprangSong()
}
// TODO: proses penekanan pada Jemprang 2
fun ClickJemprang2(view: View) {
//mengambil id Jemprang 2 pada design layout activity_main
val jemprang2 = findViewById<View>(R.id.jemprang2) as Button
// animasi penekanan Jemprang 2
jemprang2.startAnimation(anim)
//play song Jemprang 2 dari class PlaySound
playSound!!.playJemprang2Song()
}
// TODO: proses penekanan pada Petuk
fun ClickPetuk(view: View) {
//mengambil id Petuk pada design layout activity_main
val petuk = findViewById<View>(R.id.petuk) as Button
// animasi penekanan Petuk
petuk.startAnimation(anim)
//play song Petuk dari class PlaySound
playSound!!.playPetukSong()
}
// TODO: proses penekanan pada Terompang Single
fun ClickTerompangsinggel(view: View) {
//mengambil id Terompang Single pada design layout activity_main
val terumpangsinggel = findViewById<View>(R.id.terompangsinggle) as Button
// animasi penekanan Terompang Single
terumpangsinggel.startAnimation(anim)
//play song Terompang Single dari class PlaySound
playSound!!.playTerumpangsinggelSong()
}
// TODO: hasil kembalian berupa PATH URL musik dari memory internal atau external pada saat proses musik perama kali diambil
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if (resultCode == RESULT_OK) {
if (requestCode == RQS_OPEN_AUDIO_MP3) {
// TODO: PATH URL musik
audioFileUri = data!!.data
// TODO: proses handle jika terjadi error
try {
// TODO: pengaturan mediaplayer dan proses menjalankan musik
mediaPlayer!!.setAudioStreamType(AudioManager.STREAM_MUSIC)
mediaPlayer!!.setDataSource(applicationContext, audioFileUri!!)
mediaPlayer!!.prepare()
mediaPlayer!!.start()
// proses musik dijalankan maka gambar berubah ke pause
ivPlay!!.setImageDrawable(resources.getDrawable(R.drawable.ic_pause))
} catch (e: Exception) {
}
}
}
super.onActivityResult(requestCode, resultCode, data)
}
// TODO: proses musik dijalankan wlaupun aplikasi dikeluarkan
override fun onDestroy() {
super.onDestroy()
if (mediaPlayer != null) {
mediaPlayer!!.release()
ivPlay!!.setImageDrawable(resources.getDrawable(R.drawable.ic_play))
}
}
override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean {
if (keyCode == KeyEvent.KEYCODE_BACK) {
startActivity(Intent(this, DetailActivity::class.java))
this@MainActivity.finish()
return true
}
return super.onKeyDown(keyCode, event)
}
}
Buat class ItemActivity
Digunakan untuk menampilkan hanya alat musik tertentu beserta memilih musik yang akan dijalankan
package com.kodetr.gendangbelek
import android.app.ActivityOptions
import android.content.Intent
import android.content.pm.ActivityInfo
import android.media.AudioManager
import android.media.MediaPlayer
import android.net.Uri
import android.os.Bundle
import android.view.KeyEvent
import android.view.View
import android.view.Window
import android.view.WindowManager
import android.view.animation.Animation
import android.view.animation.AnimationUtils
import android.widget.Button
import android.widget.ImageView
import android.widget.LinearLayout
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
/**
* Created by kodetr on 12/09/2019.
*/
class ItemActivity : AppCompatActivity() {
private var playSound: PlaySound? = null
private val RQS_OPEN_AUDIO_MP3 = 0
private var audioFileUri: Uri? = null
private var mediaPlayer: MediaPlayer? = null
private var animationDuration: Double = 0.toDouble()
private var effect: EffectButton? = null
private var anim: Animation? = null
private var ivAmbilMusik: ImageView? = null
private var ivPlay: ImageView? = null
private var ivStop: ImageView? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// tampilan layar landscape
requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE
// menghilangkan judul toolbar
requestWindowFeature(Window.FEATURE_NO_TITLE)
//tampilkan fullscreen
window.setFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN
)
setContentView(R.layout.activity_item)
//mengambil id pada layout activity_main untuk tombol tentang
val ivTentang = findViewById<View>(R.id.ivTentang) as ImageView
// proses jika tombol help di sebelah pojok kanan atas di tekan maka berpindah ke tampilan tentang
ivTentang.setOnClickListener {
startActivity(
Intent(
this@ItemActivity,
Tentang::class.java
)
)
}
// deklarasi mediaplayer
playSound = PlaySound(this@ItemActivity)
mediaPlayer = MediaPlayer()
// TODO: proses ambil musik dari memory internal atau external
//mengambil id pada layout activity_main untuk ambil musik
ivAmbilMusik = findViewById<View>(R.id.ivAmbilMusik) as ImageView
ivAmbilMusik!!.setOnClickListener { v ->
val intent = Intent()
intent.action = Intent.ACTION_GET_CONTENT
intent.type = "audio/*"
val options = ActivityOptions.makeScaleUpAnimation(
v, 0,
0, v.width, v.height
)
startActivityForResult(
Intent.createChooser(intent, "Pilih Musik"),
RQS_OPEN_AUDIO_MP3,
options.toBundle()
)
// kondisi jika musik berjalan kemudian penekanan ambil musik maka musik distop, gambar pause akan berubah menjadi play
if (mediaPlayer!!.isPlaying) {
ivPlay!!.setImageDrawable(resources.getDrawable(R.drawable.ic_play))
// musik stop
mediaPlayer!!.stop()
try {
// musik berhenti pada posisi distop jika di jalankan makan akan dimulai pada posisi distop
mediaPlayer!!.seekTo(0)
} catch (t: Throwable) {
t.printStackTrace()
}
}
}
// TODO: proses play musik
//mengambil id pada layout activity_main untuk play
ivPlay = findViewById<View>(R.id.ivPlay) as ImageView
ivPlay!!.setOnClickListener {
if (mediaPlayer != null) {
if (mediaPlayer!!.isPlaying) {
if (mediaPlayer != null) {
// musik pause
mediaPlayer!!.pause()
// jika musik sedang berjalan maka gambar play akan berubah menjadi play
ivPlay!!.setImageDrawable(resources.getDrawable(R.drawable.ic_play))
}
} else {
if (mediaPlayer != null) {
// musik start
mediaPlayer!!.start()
ivPlay!!.setImageDrawable(resources.getDrawable(R.drawable.ic_pause))
}
}
} else {
Toast.makeText(this@ItemActivity, "Musik Belum di pilih", Toast.LENGTH_SHORT).show()
}
}
// TODO: proses stop musik
//mengambil id pada layout activity_main untuk tombol stop
ivStop = findViewById<View>(R.id.ivStop) as ImageView
ivStop!!.setOnClickListener {
if (mediaPlayer!!.isPlaying) {
if (mediaPlayer != null) {
ivPlay!!.setImageDrawable(resources.getDrawable(R.drawable.ic_play))
mediaPlayer!!.stop()
try {
mediaPlayer!!.seekTo(0)
} catch (t: Throwable) {
t.printStackTrace()
}
} else {
Toast.makeText(this@ItemActivity, "Musik Belum di pilih", Toast.LENGTH_SHORT)
.show()
}
}
}
//TODO: animasi effect pada tombol seteap alat gendang belek
animationDuration = 0.1 * 1000
effect = EffectButton(1.0, 3.0)
anim = AnimationUtils.loadAnimation(this, R.anim.bounce)
anim!!.duration = animationDuration.toLong()
anim!!.interpolator = effect
val i = intent
val item = i.getStringExtra("item")
val inPetuk = findViewById<View>(R.id.in_petuk) as LinearLayout
val inGong = findViewById<View>(R.id.in_gong) as LinearLayout
val inTerompangSingle = findViewById<View>(R.id.in_terompang_single) as LinearLayout
val inTerompangKecil = findViewById<View>(R.id.in_terompang_kecil) as LinearLayout
val inTerompangBesar = findViewById<View>(R.id.in_terompang_besar) as LinearLayout
val inGendang = findViewById<View>(R.id.in_gendang) as LinearLayout
val inJemprang = findViewById<View>(R.id.in_jemprang) as LinearLayout
when (item) {
"petuk" -> inPetuk.visibility = View.VISIBLE
"gong" -> inGong.visibility = View.VISIBLE
"terompang_single" -> inTerompangSingle.visibility = View.VISIBLE
"item_terompang_kecil" -> inTerompangKecil.visibility = View.VISIBLE
"terompang_besar" -> inTerompangBesar.visibility = View.VISIBLE
"gendang" -> inGendang.visibility = View.VISIBLE
"jemprang" -> inJemprang.visibility = View.VISIBLE
}
}
// TODO: proses penekanan pada Gong 1
fun ClickGong(view: View) {
//mengambil id Gong 1 pada design layout activity_main
val gong1 = findViewById<View>(R.id.gong) as Button
// animasi penekanan Gong 1
gong1.startAnimation(anim)
//play song Gong 1 dari class PlaySound Gong 1
playSound!!.playGong1Song()
}
// TODO: proses penekanan pada Gong 2
fun ClickGong2(view: View) {
//mengambil id Gong 2pada design layout activity_main
val gong2 = findViewById<View>(R.id.gong2) as Button
// animasi penekanan Gong 2
gong2.startAnimation(anim)
//play song Gong 2 dari class PlaySound
playSound!!.playGong2Song()
}
// TODO: proses penekanan pada Gendang 1
fun ClickGendang1(view: View) {
//mengambil id Gendang 1 pada design layout activity_main
val gendang1 = findViewById<View>(R.id.gendang1) as Button
// animasi penekanan Gendang 1
gendang1.startAnimation(anim)
//play song Gendang 1 dari class PlaySound
playSound!!.playGendang1Song()
}
// TODO: proses penekanan pada Gendang 2
fun ClickGendang2(view: View) {
//mengambil id Gendang 2 pada design layout activity_main
val gendang2 = findViewById<View>(R.id.gendang2) as Button
// animasi penekanan Gendang 2
gendang2.startAnimation(anim)
//play song Gendang 2 dari class PlaySound
playSound!!.playGendang2Song()
}
// TODO: proses penekanan pada Terumpang Kecil 1
fun ClickTerompangKecil1(view: View) {
//mengambil id Terumpang Kecil 1 pada design layout activity_main
val terompangkecil1 = findViewById<View>(R.id.terompangkecil1) as Button
// animasi penekanan Terumpang Kecil 1
terompangkecil1.startAnimation(anim)
//play song Terumpang Kecil 1 dari class PlaySound
playSound!!.playTerompangKecil1Song()
}
// TODO: proses penekanan pada Terumpang Kecil 2
fun ClickTerompangKecil2(view: View) {
//mengambil id Terumpang Kecil 2 pada design layout activity_main
val terompangkecil2 = findViewById<View>(R.id.terompangkecil2) as Button
// animasi penekanan Terumpang Kecil 2
terompangkecil2.startAnimation(anim)
//play song Terumpang Kecil 2 dari class PlaySound
playSound!!.playTerompangKecil2Song()
}
// TODO: proses penekanan pada Terompang Besar 1
fun ClickTerompangBesar1(view: View) {
//mengambil id Terompang Besar 1 pada design layout activity_main
val terompangbesar1 = findViewById<View>(R.id.terompangbesar1) as Button
// animasi penekanan Terompang Besar 1
terompangbesar1.startAnimation(anim)
//play song Terompang Besar 1 dari class PlaySound
playSound!!.playTerompangBesar1Song()
}
// TODO: proses penekanan pada Terompang Besar 2
fun ClickTerompangBesar2(view: View) {
//mengambil id Terompang Besar 2 pada design layout activity_main
val terompangbesar2 = findViewById<View>(R.id.terompangbesar2) as Button
// animasi penekanan Terompang Besar 2
terompangbesar2.startAnimation(anim)
//play song Terompang Besar 2 dari class PlaySound
playSound!!.playTerompangBesar2Song()
}
// TODO: proses penekanan pada Jemprang 1
fun ClickJemprang(view: View) {
//mengambil id Jemprang 1pada design layout activity_main
val jemprang = findViewById<View>(R.id.jemprang) as Button
// animasi penekanan Jemprang 1
jemprang.startAnimation(anim)
//play song Jemprang 1 dari class PlaySound
playSound!!.playJemprangSong()
}
// TODO: proses penekanan pada Jemprang 2
fun ClickJemprang2(view: View) {
//mengambil id Jemprang 2 pada design layout activity_main
val jemprang2 = findViewById<View>(R.id.jemprang2) as Button
// animasi penekanan Jemprang 2
jemprang2.startAnimation(anim)
//play song Jemprang 2 dari class PlaySound
playSound!!.playJemprang2Song()
}
// TODO: proses penekanan pada Petuk
fun ClickPetuk(view: View) {
//mengambil id Petuk pada design layout activity_main
val petuk = findViewById<View>(R.id.petuk) as Button
// animasi penekanan Petuk
petuk.startAnimation(anim)
//play song Petuk dari class PlaySound
playSound!!.playPetukSong()
}
// TODO: proses penekanan pada Terompang Single
fun ClickTerompangsinggel(view: View) {
//mengambil id Terompang Single pada design layout activity_main
val terumpangsinggel = findViewById<View>(R.id.terompangsinggle) as Button
// animasi penekanan Terompang Single
terumpangsinggel.startAnimation(anim)
//play song Terompang Single dari class PlaySound
playSound!!.playTerumpangsinggelSong()
}
// TODO: hasil kembalian berupa PATH URL musik dari memory internal atau external pada saat proses musik perama kali diambil
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if (resultCode == RESULT_OK) {
if (requestCode == RQS_OPEN_AUDIO_MP3) {
// TODO: PATH URL musik
audioFileUri = data!!.data
// TODO: proses handle jika terjadi error
try {
// TODO: pengaturan mediaplayer dan proses menjalankan musik
mediaPlayer!!.setAudioStreamType(AudioManager.STREAM_MUSIC)
mediaPlayer!!.setDataSource(applicationContext, audioFileUri!!)
mediaPlayer!!.prepare()
mediaPlayer!!.start()
// proses musik dijalankan maka gambar berubah ke pause
ivPlay!!.setImageDrawable(resources.getDrawable(R.drawable.ic_pause))
} catch (e: Exception) {
}
}
}
super.onActivityResult(requestCode, resultCode, data)
}
// TODO: proses musik dijalankan wlaupun aplikasi dikeluarkan
override fun onDestroy() {
super.onDestroy()
if (mediaPlayer != null) {
mediaPlayer!!.release()
ivPlay!!.setImageDrawable(resources.getDrawable(R.drawable.ic_play))
}
}
override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean {
if (keyCode == KeyEvent.KEYCODE_BACK) {
startActivity(Intent(this, DetailActivity::class.java))
this@ItemActivity.finish()
return true
}
return super.onKeyDown(keyCode, event)
}
}
Buat class Tentang
Berfungsi menampilkan keterangan tentang aplikasi, harap dimaklumi penulis tidak menampilkan mengenai aplikasi hanya sekedar menampilkan ke situs tertentu jika tindakan ditekan pada bagian menu utama atau bagian yang lainnya.
package com.kodetr.gendangbelek
import android.annotation.SuppressLint
import android.os.Bundle
import android.view.View
import android.webkit.WebView
import android.webkit.WebViewClient
import androidx.appcompat.app.AppCompatActivity
/**
* Created by kodetr on 12/09/2019.
*/
class Tentang : AppCompatActivity() {
@SuppressLint("SetJavaScriptEnabled")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_tentang)
//mengambil id pada layout activity_tentang pada bagian webview
val webView = findViewById<View>(R.id.webView) as WebView
// mengaktifkan mode java script
webView.settings.javaScriptEnabled = true
// menampilkan tindakan browser
webView.webViewClient = MyBrowser()
// tujuan pada URL
webView.loadUrl("https://www.kodetr.com")
}
// class browser untuk menampilkan tidakan menampilkan browser
private inner class MyBrowser : WebViewClient() {
override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean {
view.loadUrl(url)
return true
}
}
}
Jika anda sudah mengikuti artikel ini sesuai intruksi dari vidio maka anda berhasil membuat aplikasi Gendang Belek.
Demikian yang dapat saya sampaikan dari artikel ini semoga bermanfaat, jika ada yang ditanyakan silahkan di kolom komentar dibawah, selamat mencoba.