Android soundpool onTouch不能正常工作

时间:2013-10-22 20:52:20

标签: java android ontouchevent soundpool

当用户触摸屏幕时,我遇到一个奇怪的问题,即播放音效。我真的不知道该怎么做。我有一个名为sing的类和一个名为sound()的方法来播放声音效果。在onCreate()方法中,代码工作正常,但在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;
}

onCreate()中对sing.sound()的第一次调用工作正常,但是onTouch()中的后续调用似乎没有做任何事情。这个测试类扩展了活动并实现了onTouch,我已经导入了onTouch,除此之外,我真的不知道错误是什么。我会发布唱歌课程,但它有很多代码。 任何人都可以给予任何帮助将非常感激。今天我一直在挣扎这个令人尴尬的长时间,我对Android还不是很好。提前谢谢。

- 编辑 这是整个活动:

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;
    }
}

1 个答案:

答案 0 :(得分:0)

setContentView(textview);

textview.setOnTouchListener(this);

然后在你的onTouch()方法之前把@Override像这样

@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;
    }