질문이 총 두 개입니다.
ABC 클래스의 버튼을 누를 때마다
소리를 재생 시키는 코드를 만들었습니다.
소리 종류가 한 10가지 정도 되기 때문에
소리만을 따로 관리하는 Sound 클래스를 만들었죠.
그리고 소리를 안나게 하고 싶을 경우를 위해서
Option 클래스도 만들었습니다.
Option 클래스에는 boolean형 변수 getCheck와
체크박스 한 개가 있습니다. 체크가 되어 있으면
getCheck에게 true를 설정하고, 체크가 되어있지 않으면
getCheck에게 false를 반환합니다.
(변수 getCheck는 static으로 선언되어 있음)
대충 이렇게 준비해놓고 소리를 재생시키는 코드를
만들었습니다. 대충 아래와 같은 방식으로 되어 있습니다.
------------------------------
public class ABC extends Activity
{
private Sound sound = new Sound();
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (RelativeLayout)findViewById(R.id.soundButton);
button.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
if(Option.getCheck == true)
soundLoad(1);
}
}
}
public void soundLoad(int a)
{
sound.soundPlay(this, a);
}
}
------------------------------
public class Sound
{
private MediaPlayer mp;
public void soundPlay(Context context, int a)
{
if(a == 1)
{
mp = MediaPlayer.create(context, R.raw.push51_b);
mp.start();
}
if(a == 2)
{
mp = MediaPlayer.create(context, R.raw.puu30);
mp.start();
}
}
}
------------------------------
public class Option extends Activity
{
private CheckBox check;
static boolean getCheck = true;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.option);
check = (CheckBox)findViewById(R.id.soundCheckBox);
check.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener()
{
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b)
{
getCheck = b;
}
});
}
}
------------------------------
코드는 이런 식으로 되어 있습니다.
이렇게 하고 앱을 실행하면 초반에는 소리가
잘 납니다. 옵션 기능도 아무 탈 없이 잘 작동 되구요.
그런데, 여기서 문제가 발생합니다.
질문이 총 두개인데요.
1.
시간이 조금 지나거나 버튼을 계속 여러번
연속해서 누르면 이상하게 그때부터 소리가 나지를
않더라구요. 옵션을 껐다 켜봤는데도 소리가 안났었구요.
앱을 아예 종료시켰다가 다시 실행하면 정상적으로
작동 합니다만, 또 시간 지나거나 버튼 연타하면 소리 안나구요.
2.
원래는 MediaPlayer가 아닌 SoundPool을
사용하려고 했었는데요. SoundPool을 사용하려고 하면
SoundPool 인스턴스 생성 문장의 가운데에 줄이 확 그어졌습니다.
이게 뭐지 하면서 마우스를 갖다 대보니 아래와 같은
영문장이 뜨더군요.
This inspection reports where deprecated code is used in the specified inspection scope.
스코프가 적절하지 않다는 문장인 거 같은데 ...
문제는 이 SoundPool을 어디서 사용하려고 하던지 간에
줄이 그어지면서 스코프 부적절 메세지가 뜨는 현상이
똑같이 발생한다는 겁니다.
이상으로, 짧지 않은 질문을 두 개나 했습니다...
하지만 이 문제때문에 진도를 못 나가고 있어서
너무 골치 아픈 상황이에요. ㅠㅠ
제 힘으로 해결하려 해봤지만 역부족입니다.
도와주세요. ㅜㅜ