package com.example.sh.piano;
import android.content.pm.ActivityInfo;
import android.media.AudioManager;
import android.media.SoundPool;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.WindowManager;
import android.widget.HorizontalScrollView;
import android.widget.ImageButton;
public class MainActivity extends AppCompatActivity {
SoundPool pool;
//White keyBoard
int do1, re1, mi1, pa1, sol1, ra1, si1;
int do2, re2, mi2, pa2, sol2, ra2, si2;
int do3, re3, mi3, pa3, sol3, ra3, si3;
int do4, re4, mi4, pa4, sol4, ra4, si4;
//Black KeyBoard
int doShap1, reShap1, paShap1, solShap1, raShap1;
int doShap2, reShap2, paShap2, solShap2, raShap2;
int doShap3, reShap3, paShap3, solShap3, raShap3;
int doShap4, reShap4, paShap4, solShap4, raShap4;
private float x, y;
ImageButton doBtn1, reBtn1, miBtn1, paBtn1, solBtn1, raBtn1, siBtn1;
ImageButton doBtn2, reBtn2, miBtn2, paBtn2, solBtn2, raBtn2, siBtn2;
ImageButton doBtn3, reBtn3, miBtn3, paBtn3, solBtn3, raBtn3, siBtn3;
ImageButton doBtn4, reBtn4, miBtn4, paBtn4, solBtn4, raBtn4, siBtn4;
private HorizontalScrollView sv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_main);
getXmlId();
loadMusic();
}
public void controlScroll(View view) {
View.OnTouchListener touchListener = new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
final int action = motionEvent.getAction();
switch (action & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN :
// 처음 터치가 눌러졌을 때
// TodoList : 해당 건반만 소리 나게 설정
break;
case MotionEvent.ACTION_MOVE:
// 터치가 눌린 상태에서 움직일 때
// "도레미파솔라시도"처럼 음 소리나게
// 스크롤뷰 움직이지 못하게 막기
break;
case MotionEvent.ACTION_UP :
// 터치가 떼어졌을 때
// 소리안남
break;
case MotionEvent.ACTION_POINTER_DOWN:
// 터치가 두 개 이상 && 눌러졌을 때
// TodoList : 스크롤 움직이기
final int pointerIndex = (action & MotionEvent.ACTION_POINTER_INDEX_MASK) >> MotionEvent.ACTION_POINTER_INDEX_SHIFT;
// x = getX(pointerIndex);
// y = getY(pointerIndex);
break;
}
return true;
}
};
}
public void clickedKeyboard(View view) {
switch (view.getId()) {
//White KeyBoard Id
case R.id.do1:
pool.play(do1, 1, 1, 0, 0, 1);
break;
case R.id.re1:
pool.play(re1, 1, 1, 0, 0, 1);
break;
case R.id.mi1:
pool.play(mi1, 1, 1, 0, 0, 1);
break;
case R.id.pa1:
pool.play(pa1, 1, 1, 0, 0, 1);
break;
case R.id.sol1:
pool.play(sol1, 1, 1, 0, 0, 1);
break;
case R.id.ra1:
pool.play(ra1, 1, 1, 0, 0, 1);
break;
case R.id.si1:
pool.play(si1, 1, 1, 0, 0, 1);
break;
////////////////////////////////////////////////////////////
case R.id.do2:
pool.play(do2, 1, 1, 0, 0, 1);
break;
case R.id.re2:
pool.play(re2, 1, 1, 0, 0, 1);
break;
case R.id.mi2:
pool.play(mi2, 1, 1, 0, 0, 1);
break;
case R.id.pa2:
pool.play(pa2, 1, 1, 0, 0, 1);
break;
case R.id.sol2:
pool.play(sol2, 1, 1, 0, 0, 1);
break;
case R.id.ra2:
pool.play(ra2, 1, 1, 0, 0, 1);
break;
case R.id.si2:
pool.play(si2, 1, 1, 0, 0, 1);
break;
////////////////////////////////////////////////////////////
case R.id.do3:
pool.play(do3, 1, 1, 0, 0, 1);
break;
case R.id.re3:
pool.play(re3, 1, 1, 0, 0, 1);
break;
case R.id.mi3:
pool.play(mi3, 1, 1, 0, 0, 1);
break;
case R.id.pa3:
pool.play(pa3, 1, 1, 0, 0, 1);
break;
case R.id.sol3:
pool.play(sol3, 1, 1, 0, 0, 1);
break;
case R.id.ra3:
pool.play(ra3, 1, 1, 0, 0, 1);
break;
case R.id.si3:
pool.play(si3, 1, 1, 0, 0, 1);
break;
////////////////////////////////////////////////////////////
case R.id.do4:
pool.play(do4, 1, 1, 0, 0, 1);
break;
case R.id.re4:
pool.play(re4, 1, 1, 0, 0, 1);
break;
case R.id.mi4:
pool.play(mi4, 1, 1, 0, 0, 1);
break;
case R.id.pa4:
pool.play(pa4, 1, 1, 0, 0, 1);
break;
case R.id.sol4:
pool.play(sol4, 1, 1, 0, 0, 1);
break;
case R.id.ra4:
pool.play(ra4, 1, 1, 0, 0, 1);
break;
case R.id.si4:
pool.play(si4, 1, 1, 0, 0, 1);
break;
}
}
public void blackKeyBoardClicked(View view) {
switch (view.getId()) {
//Black KeyBoard Id
case R.id.doShap1:
pool.play(doShap1, 1, 1, 0, 0, 1);
break;
case R.id.reShap1:
pool.play(reShap1, 1, 1, 0, 0, 1);
break;
case R.id.paShap1:
pool.play(paShap1, 1, 1, 0, 0, 1);
break;
case R.id.solShap1:
pool.play(solShap1, 1, 1, 0, 0, 1);
break;
case R.id.raShap1:
pool.play(raShap1, 1, 1, 0, 0, 1);
break;
////////////////////////////////////////////////////////////
case R.id.doShap2:
pool.play(doShap2, 1, 1, 0, 0, 1);
break;
case R.id.reShap2:
pool.play(reShap2, 1, 1, 0, 0, 1);
break;
case R.id.paShap2:
pool.play(paShap2, 1, 1, 0, 0, 1);
break;
case R.id.solShap2:
pool.play(solShap2, 1, 1, 0, 0, 1);
break;
case R.id.raShap2:
pool.play(raShap2, 1, 1, 0, 0, 1);
break;
////////////////////////////////////////////////////////////
case R.id.doShap3:
pool.play(doShap3, 1, 1, 0, 0, 1);
break;
case R.id.reShap3:
pool.play(reShap3, 1, 1, 0, 0, 1);
break;
case R.id.paShap3:
pool.play(paShap3, 1, 1, 0, 0, 1);
break;
case R.id.solShap3:
pool.play(solShap3, 1, 1, 0, 0, 1);
break;
case R.id.raShap3:
pool.play(raShap3, 1, 1, 0, 0, 1);
break;
////////////////////////////////////////////////////////////
case R.id.doShap4:
pool.play(doShap4, 1, 1, 0, 0, 1);
break;
case R.id.reShap4:
pool.play(reShap4, 1, 1, 0, 0, 1);
break;
case R.id.paShap4:
pool.play(paShap4, 1, 1, 0, 0, 1);
break;
case R.id.solShap4:
pool.play(solShap4, 1, 1, 0, 0, 1);
break;
case R.id.raShap4:
pool.play(raShap4, 1, 1, 0, 0, 1);
break;
}
}
public void getXmlId() {
sv = findViewById(R.id.sv);
doBtn1 = findViewById(R.id.do1);
reBtn1 = findViewById(R.id.re1);
miBtn1 = findViewById(R.id.mi1);
paBtn1 = findViewById(R.id.pa1);
solBtn1 = findViewById(R.id.sol1);
raBtn1 = findViewById(R.id.ra1);
siBtn1 = findViewById(R.id.si1);
///
doBtn2 = findViewById(R.id.do2);
reBtn2 = findViewById(R.id.re2);
miBtn2 = findViewById(R.id.mi2);
paBtn2 = findViewById(R.id.pa2);
solBtn2 = findViewById(R.id.sol2);
raBtn2 = findViewById(R.id.ra2);
siBtn2 = findViewById(R.id.si2);
///
doBtn3 = findViewById(R.id.do3);
reBtn3 = findViewById(R.id.re3);
miBtn3 = findViewById(R.id.mi3);
paBtn3 = findViewById(R.id.pa3);
solBtn3 = findViewById(R.id.sol3);
raBtn3 = findViewById(R.id.ra3);
siBtn3 = findViewById(R.id.si3);
///
doBtn4 = findViewById(R.id.do4);
reBtn4 = findViewById(R.id.re4);
miBtn4 = findViewById(R.id.mi4);
paBtn4 = findViewById(R.id.pa4);
solBtn4 = findViewById(R.id.sol4);
raBtn4 = findViewById(R.id.ra4);
siBtn4 = findViewById(R.id.si4);
}
public void loadMusic() {
pool = new SoundPool(4, AudioManager.STREAM_MUSIC, 0);
//WhiteKeyBoard Soundpool
do1 = pool.load(this, R.raw.do1, 1);
re1 = pool.load(this, R.raw.re1, 1);
mi1 = pool.load(this, R.raw.mi1, 1);
pa1 = pool.load(this, R.raw.pa1, 1);
sol1 = pool.load(this, R.raw.sol1, 1);
ra1 = pool.load(this, R.raw.ra1, 1);
si1 = pool.load(this, R.raw.si1, 1);
/////////////////
do2 = pool.load(this, R.raw.do2, 1);
re2 = pool.load(this, R.raw.re2, 1);
mi2 = pool.load(this, R.raw.mi2, 1);
pa2 = pool.load(this, R.raw.pa2, 1);
sol2 = pool.load(this, R.raw.sol2, 1);
ra2 = pool.load(this, R.raw.ra2, 1);
si2 = pool.load(this, R.raw.si2, 1);
/////////////////
do3 = pool.load(this, R.raw.do3, 1);
re3 = pool.load(this, R.raw.re3, 1);
mi3 = pool.load(this, R.raw.mi3, 1);
pa3 = pool.load(this, R.raw.pa3, 1);
sol3 = pool.load(this, R.raw.sol3, 1);
ra3 = pool.load(this, R.raw.ra3, 1);
si3 = pool.load(this, R.raw.si3, 1);
/////////////////
do4 = pool.load(this, R.raw.do4, 1);
re4 = pool.load(this, R.raw.re4, 1);
mi4 = pool.load(this, R.raw.mi4, 1);
pa4 = pool.load(this, R.raw.pa4, 1);
sol4 = pool.load(this, R.raw.sol4, 1);
ra4 = pool.load(this, R.raw.ra4, 1);
si4 = pool.load(this, R.raw.si4, 1);
//BlackKeyBoard Soundpool
doShap1 = pool.load(this, R.raw.doshap1, 1);
reShap1 = pool.load(this, R.raw.reshap1, 1);
paShap1 = pool.load(this, R.raw.pashap1, 1);
solShap1 = pool.load(this, R.raw.solshap1, 1);
raShap1 = pool.load(this, R.raw.rashap1, 1);
/////////////////
doShap2 = pool.load(this, R.raw.doshap2, 1);
reShap2 = pool.load(this, R.raw.reshap2, 1);
paShap2 = pool.load(this, R.raw.pashap2, 1);
solShap2 = pool.load(this, R.raw.solshap2, 1);
raShap2 = pool.load(this, R.raw.rashap2, 1);
/////////////////
doShap3 = pool.load(this, R.raw.doshap3, 1);
reShap3 = pool.load(this, R.raw.reshap3, 1);
paShap3 = pool.load(this, R.raw.pashap3, 1);
solShap3 = pool.load(this, R.raw.solshap3, 1);
raShap3 = pool.load(this, R.raw.rashap3, 1);
/////////////////
doShap4 = pool.load(this, R.raw.doshap4, 1);
reShap4 = pool.load(this, R.raw.reshap4, 1);
paShap4 = pool.load(this, R.raw.pashap4, 1);
solShap4 = pool.load(this, R.raw.solshap4, 1);
raShap4 = pool.load(this, R.raw.rashap4, 1);
}
}