Сбой ImageButton при попытке воспроизвести звук - PullRequest
0 голосов
/ 11 августа 2011

При попытке издать звук при нажатии на кнопку ImageButton мое приложение падает, и я довольно долго смотрю на свой код, не находя ответа.Я надеялся, что вы, ребята, поможете мне понять, что я делаю не так.

Я попытался создать событие onClick вручную с помощью imageButton, что не удалось, а затем я попытался сделать это с помощью системы перетаскивания в 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 ]

1 голос
/ 11 августа 2011

Исходя из кода, размещенного в poset, я могу сказать, что проблема связана с использованием MediaPlayer. MediaPlayer имеет несколько состояний: незанято, инициализировано, подготовлено, запущено и т. Д.

В своем коде вы создаете объект медиаплеера, передавая идентификатор ресурса; переводит медиаплеер в исходное состояние из режима ожидания. Далее вам нужно вызвать prepare (). Но вы звоните start (). Может быть, это вызывает аварию.

Переход состояния MediaPlayer аккуратно объяснен на сайте разработчика Android. ( Ссылка )

Шаша

1 голос
/ 11 августа 2011

подготовить MediaPlayer с помощью mp.prepare (); перед вызовом mp.start ();

1 голос
/ 11 августа 2011

Вероятно, стоит проверить нулевое значение, учитывая, что оно возвращает, если по какой-либо причине не удается создать объект MediaPlayer.Кроме того, он, вероятно, должен быть выпущен после завершения (также с нулевой проверкой).

РЕДАКТИРОВАТЬ:

, хотя мой предыдущий ответ может стоить рассмотреть, безусловно, необходимо, чтобы ваш метод onClick взял View в качестве параметра.

...