2013-10-22 8 views
0

사용자가 화면을 터치 할 때 사운드 효과를 재생하는 데 이상한 문제가 있습니다. 나는 이걸 어디에 가야할지 잘 모르겠다. 나는 sing이라는 클래스와 sound()라는 메서드를 사용하여 사운드 효과를 재생합니다. onCreate() 메서드에서 코드는 제대로 작동하지만 onTouch() 메서드에서는 작동하지 않습니다. 여기에 내가 사용하고 코드입니다 :Android soundpool onTouch가 작동하지 않음

TextView textview; 
Sing sing; 

@Override 
public void onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState); 
    textview = new TextView(this); 
    textview.setText("Test"); 
    setContentView(textview); 
    sing = new Sing(); 
    sing.create(); 
    sing.sound("sound.ogg");//just to test, works fine 
} 

public boolean onTouch(View v, MotionEvent event){ 
    if (event.getAction() == MotionEvent.ACTION_UP){ 
     sing.sound("sound.ogg"); //doesnt work 
    } 
    return true; 
} 

첫 번째 호출은 sing.sound하는()에서 onCreate에서()는 잘 작동하지만 onTouch의 후속 호출은() 아무것도하지 않는 것. 이 테스트 클래스는 활동을 확장하고 onTouch를 구현하고, onTouch를 가져 왔으며, 그 오류가 무엇인지 알지 못한다. 나는 노래 클래스를 게시 할 것이지만 그것은 많은 종류의 코드이다. 누군가의 도움을 주시면 매우 감사하겠습니다. 나는 오늘 당황스럽게 오랜 시간 동안 이걸로 고투하고 있었고, 나는 아직 안드로이드에별로 좋지 않다. 미리 감사드립니다.

package com.test.ch4; 

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.TextView; 
import android.view.View; 
import android.view.MotionEvent; 
import android.view.View.OnTouchListener; 

public class SoundPoolTest extends Activity implements OnTouchListener{ 
TextView textview; 
Sing sing; 

@Override 
public void onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState); 
    textview = new TextView(this); 
    textview.setTextSize(40); 
    textview.setText("Test"); 
    setContentView(textview); 
} 

public boolean onTouch(View v, MotionEvent event){ 
    if (event.getAction() == MotionEvent.ACTION_UP){ 
     sing = new Sing(); 
     sing.create(); 
     sing.sound("sound.ogg"); 
    } 
    return true; 
    } 
} 
+0

onTouch()가 실행 중이십니까? Log.d 입력 ("ontouch", "fired"); onTouch 메서드를 사용하여 logcat에 올라 왔는지 확인하십시오 – JRowan

+0

전체 활동을 올릴 수 있습니까? onTouch()를 잘못 구현 한 것 같습니까? – JRowan

+0

나머지 작업을 설명합니다. 시간을내어 주셔서 감사합니다. – user2333867

답변

0

setContentView(textview); 

() 메소드이

같은 @Override를 넣어 당신의 onTouch 전에 다음
textview.setOnTouchListener(this); 

을 넣어

후 : 여기

--edit

은 전체 활동
@Override 
public boolean onTouch(View v, MotionEvent event){ 
    if (event.getAction() == MotionEvent.ACTION_UP){ 
     sing = new Sing(); 
     sing.create(); 
     sing.sound("sound.ogg"); 
    } 
    return true; 
    } 
+0

AH! 그런 단순한 실수. 고맙습니다! – user2333867

+0

안녕하세요. Log.d()에 대해 내가 쓴 글을 기억하십시오. 테스트가 진행되는 동안 정말 유용합니다. – JRowan