Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 单击图像时播放声音_Java_Android_Soundpool - Fatal编程技术网

Java 单击图像时播放声音

Java 单击图像时播放声音,java,android,soundpool,Java,Android,Soundpool,我有一个图像,当你点击它时需要播放一个.wav文件。但是这个应用程序根本没有启动。我不知道为什么,因为它看起来我宣布了它需要的所有东西。但当我启动应用程序时,它会立即崩溃 public class MainActivity extends Activity { private SoundPool soundPool; private int soundID; boolean loaded = false; @Override protected void onCreate(Bund

我有一个图像,当你点击它时需要播放一个.wav文件。但是这个应用程序根本没有启动。我不知道为什么,因为它看起来我宣布了它需要的所有东西。但当我启动应用程序时,它会立即崩溃

public class MainActivity extends Activity {
  private SoundPool soundPool;
  private int soundID;
  boolean loaded = false;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ImageView view = (ImageView) findViewById(R.id.imageView1);
    view.setOnTouchListener((OnTouchListener) this);
    // Set the hardware buttons to control the music
    this.setVolumeControlStream(AudioManager.STREAM_MUSIC);
    // Load the sound
    soundPool = new SoundPool(10, AudioManager.STREAM_MUSIC, 0);
    soundPool.setOnLoadCompleteListener(new OnLoadCompleteListener() {
      @Override
      public void onLoadComplete(SoundPool soundPool, int sampleId,
          int status) {
        loaded = true;
      }
    });
    soundID = soundPool.load(this, R.raw.koe, 1);

  }

  public boolean onTouch(View v, MotionEvent event) {
    if (event.getAction() == MotionEvent.ACTION_DOWN) {
      // Getting the user sound settings
      AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
      float actualVolume = (float) audioManager
          .getStreamVolume(AudioManager.STREAM_MUSIC);
      float maxVolume = (float) audioManager
          .getStreamMaxVolume(AudioManager.STREAM_MUSIC);
      float volume = actualVolume / maxVolume;
      // Is the sound loaded already?
      if (loaded) {
        soundPool.play(soundID, volume, volume, 1, 0, 1f);
        Log.e("Test", "Played sound");
      }
    }
    return false;
  }
编辑

我想你必须这样做

// Declare as global variable 
  WebView mWebview;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.mylayoutfile);

        Toast.makeText(this, "Laden van roosterwijzigingen.",
        Toast.LENGTH_SHORT).show();

        mWebview =(WebView) findviewById(R.id.webview_id);
        // Enable JavaScript
        mWebview.getSettings().setJavaScriptEnabled(true); // enable javascript
        mWebview.loadUrl("http://divers.ommelandercollege.nl/webportalen/dagrooster.php");

      } 
LOGCAT

06-24 19:46:07.979: E/AndroidRuntime(10368): FATAL EXCEPTION: main
06-24 19:46:07.979: E/AndroidRuntime(10368): java.lang.RuntimeException: Unable to start activity ComponentInfo{org.flikkema.robin.vleesapp/org.flikkema.robin.vleesapp.MainActivity}: java.lang.ClassCastException: org.flikkema.robin.vleesapp.MainActivity cannot be cast to android.view.View$OnTouchListener
06-24 19:46:07.979: E/AndroidRuntime(10368):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
06-24 19:46:07.979: E/AndroidRuntime(10368):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
06-24 19:46:07.979: E/AndroidRuntime(10368):    at android.app.ActivityThread.access$600(ActivityThread.java:130)
06-24 19:46:07.979: E/AndroidRuntime(10368):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
06-24 19:46:07.979: E/AndroidRuntime(10368):    at android.os.Handler.dispatchMessage(Handler.java:99)
06-24 19:46:07.979: E/AndroidRuntime(10368):    at android.os.Looper.loop(Looper.java:137)
06-24 19:46:07.979: E/AndroidRuntime(10368):    at android.app.ActivityThread.main(ActivityThread.java:4745)
06-24 19:46:07.979: E/AndroidRuntime(10368):    at java.lang.reflect.Method.invokeNative(Native Method)
06-24 19:46:07.979: E/AndroidRuntime(10368):    at java.lang.reflect.Method.invoke(Method.java:511)
06-24 19:46:07.979: E/AndroidRuntime(10368):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
06-24 19:46:07.979: E/AndroidRuntime(10368):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
06-24 19:46:07.979: E/AndroidRuntime(10368):    at dalvik.system.NativeStart.main(Native Method)
06-24 19:46:07.979: E/AndroidRuntime(10368): Caused by: java.lang.ClassCastException: org.flikkema.robin.vleesapp.MainActivity cannot be cast to android.view.View$OnTouchListener
06-24 19:46:07.979: E/AndroidRuntime(10368):    at org.flikkema.robin.vleesapp.MainActivity.onCreate(MainActivity.java:24)
06-24 19:46:07.979: E/AndroidRuntime(10368):    at android.app.Activity.performCreate(Activity.java:5008)
06-24 19:46:07.979: E/AndroidRuntime(10368):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
06-24 19:46:07.979: E/AndroidRuntime(10368):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
06-24 19:46:07.979: E/AndroidRuntime(10368):    ... 11 more

在调用
findViewById()之前,需要在
onCreate()中调用
setContentView(R.layout.your\u layout)

否则,当您试图膨胀
图像视图时,它不知道要查找什么布局

因此:

@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);

setContentView(R.layout.your_layout);//完成ken wolf所说的操作后,可以在单击图像时播放声音

     MediaPlayer mp = MediaPlayer.create(this, R.raw.myMusic);
    imageClickable.setOnClickListener(new View.OnClickListener() {



  @Override
  public void onClick(View view) {
      mp.start();
  }

});

希望它有助于发布崩溃日志,我们将更好地为您提供帮助。更改为此
视图。setOnTouchListener(此);
(删除对OnTouchListener的强制转换)并使您的活动实现OnTouchListener,因此
公共类MainActivity扩展了Activity实现OnTouchListener{
。希望这是有意义的。然后呢?我可以找到演员阵容,但我不知道需要更改什么来查看。setOnTouchListener(此);但我已将
onCreate
的第3行更改为
view.setOnTouchListener(此);
并使您的MainActivity类在TouchListener上实现

     MediaPlayer mp = MediaPlayer.create(this, R.raw.myMusic);
    imageClickable.setOnClickListener(new View.OnClickListener() {



  @Override
  public void onClick(View view) {
      mp.start();
  }

});