[Android] Soundpool으로 만드는 드럼 앱
- Mobile/Android
- 2017. 10. 18.
이번에는 안드로이드로 간단한 드럼을 만들어보도록 하겠습니다. 지금까지 SoundPool로 오카리나와 피아노를 만들어봤는데, Soundpool로 만드는 악기 앱 시리즈의 마지막 버전입니다.
SoundPool로 만드는 드럼 앱
좌측 drawable에 드럼 이미지를 삽입합니다.
그다음 res 파일에 오른쪽 클릭하여 새로운 폴더 raw를 만들어줍니다.
Directory를 클릭~!
raw라고 폴더명을 입력해준 뒤 드럼 소리를 raw폴더 안에 넣어줍니다.
이까지 했으면 이제 소스코드를 입력해보겠습니다.
XML
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_Drum"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="5dp"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:layout_gravity="center"
tools:context="com.example.user.music.DrumActivity">
<Button
android:id="@+id/d3"
android:layout_height="wrap_content"
android:background="@drawable/d3x"
android:layout_width="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_x="389dp"
android:layout_y="133dp" />
<Button
android:id="@+id/d4"
android:layout_height="wrap_content"
android:background="@drawable/d4x"
android:layout_width="wrap_content"
android:layout_alignBottom="@+id/d1"
android:layout_toLeftOf="@+id/d5"
android:layout_toStartOf="@+id/d5"
android:layout_x="324dp"
android:layout_y="173dp" />
<Button
android:id="@+id/d2"
android:background="@drawable/d2x"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="19dp"
android:layout_below="@+id/d3"
android:layout_alignRight="@+id/d1"
android:layout_alignEnd="@+id/d1"
android:layout_x="352dp"
android:layout_y="84dp" />
<Button
android:id="@+id/d5"
android:layout_height="wrap_content"
android:background="@drawable/d5x"
android:layout_width="wrap_content"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:layout_x="200dp"
android:layout_y="20dp" />
<Button
android:id="@+id/d1"
android:layout_height="130dp"
android:background="@drawable/rrrr"
android:layout_width="130dp"
android:layout_marginRight="14dp"
android:layout_marginEnd="14dp"
android:layout_alignParentTop="true"
android:layout_toLeftOf="@+id/d3"
android:layout_toStartOf="@+id/d3"
android:layout_marginTop="41dp"
android:layout_x="315dp"
android:layout_y="4dp" />
<Button
android:id="@+id/d7"
android:background="@drawable/d7x"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="19dp"
android:layout_below="@+id/d3"
android:layout_alignRight="@+id/d1"
android:layout_alignEnd="@+id/d1"
android:layout_x="96dp"
android:layout_y="106dp" />
<Button
android:id="@+id/d6"
android:background="@drawable/d6x"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="19dp"
android:layout_below="@+id/d3"
android:layout_alignRight="@+id/d1"
android:layout_alignEnd="@+id/d1"
android:layout_x="202dp"
android:layout_y="170dp" />
<Button
android:id="@+id/d8"
android:background="@drawable/d8x"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="19dp"
android:layout_below="@+id/d3"
android:layout_alignRight="@+id/d1"
android:layout_alignEnd="@+id/d1"
android:layout_x="112dp"
android:layout_y="-2dp" />
<Button
android:id="@+id/d9"
android:background="@drawable/d9x"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="19dp"
android:layout_below="@+id/d9"
android:layout_alignRight="@+id/d1"
android:layout_alignEnd="@+id/d1"
android:layout_x="196dp"
android:layout_y="-10dp" />
<ImageButton
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_x="3dp"
android:layout_y="3dp"
android:layout_marginTop="5dp"
android:id="@+id/backdrum"
android:background="@drawable/home"
android:onClick="Clickdrumback" />
</AbsoluteLayout>
아래 사진과 같이 드럼을 배치하면 됩니다.
java
package com.example.
user.music;
import android.content.Intent;
import android.media.AudioManager;
import android.media.SoundPool;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
public class DrumActivity extends AppCompatActivity {
public static final int REQUEST_CODE_MainActivity = 1004;
SoundPool pool;
int d1,d2,d3,d4,d5,d6,d7,d8,d9;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTheme(android.R.style.Theme_NoTitleBar_Fullscreen);
setContentView(R.layout.activity_drum);
pool = new SoundPool(9, AudioManager.STREAM_MUSIC, 0);
d1 = pool.load(this, R.raw.drum2, 1);
d2 = pool.load(this, R.raw.drum3, 1);
d3 = pool.load(this, R.raw.drum1, 1);
d4 = pool.load(this, R.raw.drum4, 1);
d5 = pool.load(this, R.raw.drum8, 1);
d6 = pool.load(this, R.raw.drum7, 1);
d7 = pool.load(this, R.raw.drum5, 1);
d8 = pool.load(this, R.raw.drum1, 1);
d9 = pool.load(this, R.raw.drum6, 1);
Button bt1 = (Button) findViewById(R.id.d1);
Button bt2 = (Button) findViewById(R.id.d2);
Button bt3 = (Button) findViewById(R.id.d3);
Button bt4 = (Button) findViewById(R.id.d4);
Button bt5 = (Button) findViewById(R.id.d5);
Button bt6 = (Button) findViewById(R.id.d6);
Button bt7 = (Button) findViewById(R.id.d7);
Button bt8 = (Button) findViewById(R.id.d8);
Button bt9 = (Button) findViewById(R.id.d9);
bt1.setOnClickListener(mClickLisner);
bt2.setOnClickListener(mClickLisner);
bt3.setOnClickListener(mClickLisner);
bt4.setOnClickListener(mClickLisner);
bt5.setOnClickListener(mClickLisner);
bt6.setOnClickListener(mClickLisner);
bt7.setOnClickListener(mClickLisner);
bt8.setOnClickListener(mClickLisner);
bt9.setOnClickListener(mClickLisner);
}
public void Clickdrumback(View v){
Intent resultIntent = new Intent();
setResult(RESULT_OK, resultIntent);
finish();
}
Button.OnClickListener mClickLisner = new Button.OnClickListener(){
public void onClick(View v){
switch(v.getId()) {
case R.id.d1:
pool.play(d1, 1.0F, 1.0F, 0, 0, 1.0F);
break;
case R.id.d2:
pool.play(d2, 1.0F, 1.0F, 0, 0, 1.0F);
break;
case R.id.d3:
pool.play(d3, 1.0F, 1.0F, 0, 0, 1.0F);
break;
case R.id.d4:
pool.play(d4, 1.0F, 1.0F, 0, 0, 1.0F);
break;
case R.id.d5:
pool.play(d5, 1.0F, 1.0F, 0, 0, 1.0F);
break;
case R.id.d6:
pool.play(d6, 1.0F, 1.0F, 0, 0, 1.0F);
break;
case R.id.d7:
pool.play(d7, 1.0F, 1.0F, 0, 0, 1.0F);
break;
case R.id.d8:
pool.play(d8, 1.0F, 1.0F, 0, 0, 1.0F);
break;
case R.id.d9:
pool.play(d9, 1.0F, 1.0F, 0, 0, 1.0F);
break;
}
}
};
}
이렇게 코드를 붙여 넣어주면 간단하게 드럼이 완성됩니다. 끝
'Mobile > Android' 카테고리의 다른 글
[Android] 안드로이드에서 웹뷰로 자신이 만든 웹사이트 띄우기 (2) | 2017.10.19 |
---|---|
[Android] 공공기관 API 신청 및 파싱하기(검색기능구현) (28) | 2017.10.18 |
[Android] Soundpool으로 만드는 피아노 앱 (30) | 2017.10.18 |
[Android] 안드로이드와 오라클 스프링으로 연동/통신하기 (40) | 2017.10.15 |