尝试播放声音时ImageButton崩溃

时间:2011-08-11 17:10:15

标签: android events audio media-player imagebutton

当单击ImageButton时尝试发出声音时,我的应用程序崩溃了,而且我已经盯着我的代码很长一段时间而没有找到答案。我希望你们能帮我看看我做错了什么。

我尝试使用失败的imageButton手动创建onClick事件,然后我通过Eclipse的拖放系统尝试了它,这使得按钮可以通过一个名为test123的方法通过main.xml进行点击。

我会发布我的代码,希望你们能找到解决方案。

提前致谢,

package com.example.Jeffrey;

import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;

public class Jeffrey extends Activity {
MediaPlayer mp;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    mp = MediaPlayer.create(this, R.raw.noise);

   // View rakker = findViewById(R.id.imageView1);
    //rakker.setOnClickListener(this);

}

public void test123()
{        
    mp.start();

}

}

与代码一起使用的xml:

<ImageButton 
android:src="@drawable/rakker" 
android:layout_height="250px" 
android:layout_width="wrap_content" android:id="@+id/imageView1"
android:onClick="test123"></ImageButton>

3 个答案:

答案 0 :(得分:1)

如果因为任何原因导致无法创建MediaPlayer对象,则返回该值可能值得检查null值。此外,它应该在完成时释放(也使用空检查)。

编辑:

虽然我之前的回答可能值得考虑,但您必须使用onClick方法将View作为参数。

//at the top of the file

import android.view.View;

public void test123(View v){
    //v is the view that has been clicked (the ImageButton from your .xml file)
    //do stuff
}

答案 1 :(得分:1)

基于在poset中提出的代码,我可以说该问题与MediaPlayer的使用有关。 MediaPlayer有几个状态,空闲,初始化,准备,启动等。

在您的代码中,您通过传递资源ID来创建媒体播放器对象;使媒体播放器从空闲状态进入初始化状态。接下来,您需要调用prepare()。但是你正在调用start()。可能是这导致了崩溃。

MediaPlayer的状态转换在android开发者网站上得到了很好的解释。 (Link

词shash

答案 2 :(得分:1)

使用mp.prepare()准备MediaPlayer;在调用mp.start();

之前