Программирование на Android - Как воспроизвести звук SoundPool с вещательного приемника? - PullRequest
3 голосов
/ 23 августа 2011

Я очень плохо знаком с разработкой для Android и хотел бы знать, как воспроизводить звук SoundPool в вещательном приемнике?

Я где-то читал, что использование SoundPool - это способ воспроизвести звук, но я не знаю, как правильно его настроить.

У меня в папке Eclipse res \ raw есть несколько звуковых файлов, таких как wave и mp3. Я хотел бы воспроизвести файл с именем half.wav

Можете ли вы показать пример кода, который мне нужно поместить в мой приемник?

Вот первая попытка кода, но я получаю сообщение об ошибке, утверждающее, что soundID = soundPool.load (this, R.raw.half, 1);

«Загрузка метода (Context, Int, Int) в типе SoundPool не применима ...»

Вот код для класса:

package ChimeMe.BigBen;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;
import android.os.Bundle;

import android.media.AudioManager;
import android.media.SoundPool;
import android.media.SoundPool.OnLoadCompleteListener;

public class AlarmReceiver extends BroadcastReceiver {

private SoundPool soundPool;
private int soundID;
boolean loaded = false;

@Override
public void onReceive(Context context, Intent intent) {

    try {

        // 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.half, 1);

        Toast.makeText(context, "This is the alarm.", Toast.LENGTH_SHORT)
                .show();

    } catch (Exception e) {
        Toast.makeText(
                context,
                "There was an error somewhere, but we still received an alarm",
                Toast.LENGTH_SHORT).show();
        e.printStackTrace();

    }
}

}

Заранее спасибо.

Действительно, Эмад

1 Ответ

6 голосов
/ 24 февраля 2013

Если вы хотите воспроизвести только один звук, я думаю, что использование MediaPlayer будет быстрее и проще ...

Это код из моего приложения, которое воспроизводит звуковой сигнал каждые 30 минут, когдаBroadcastreceiver работает

public class Gameloop extends BroadcastReceiver {
    MediaPlayer mp = null;// Here 
    private static final String TAG = "VPET";

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.d(TAG, "Loop running");
        if (Pet.isAlive == true) {

            mp = MediaPlayer.create(context, R.raw.beep);//Onreceive gives you context
            mp.start();// and this to play it

        } else {

        }
    }


}

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...