Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.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 如何在Android中使用声音和Toast_Java_Android_Audio_Toast - Fatal编程技术网

Java 如何在Android中使用声音和Toast

Java 如何在Android中使用声音和Toast,java,android,audio,toast,Java,Android,Audio,Toast,我想在我的android应用程序中弹出我的吐司时播放声音 以下是我在主课上的祝酒词代码: private void workEndNotification() { //Custom Toast notification for the Work End Reminder. LayoutInflater inflaterWork = getLayoutInflater(); View toastLayout = inflaterWork.inflate(R.layout.w

我想在我的android应用程序中弹出我的吐司时播放声音

以下是我在主课上的祝酒词代码:

private void workEndNotification() {
    //Custom Toast notification for the Work End Reminder.
    LayoutInflater inflaterWork = getLayoutInflater();
    View toastLayout = inflaterWork.inflate(R.layout.work_notification_toast, (ViewGroup) findViewById(R.id.toast_root_view));
    TextView header = (TextView) toastLayout.findViewById(R.id.toast_header);
    header.setText("Work Day Over Soon!");
    final Toast toastWork = new Toast(getApplicationContext());
    toastWork.setGravity(Gravity.CENTER, 0, 0);
    toastWork.setDuration(Toast.LENGTH_SHORT);
    toastWork.setView(toastLayout);
    toastWork.show();

    myHandler.postDelayed(new Runnable() {
        public void run() {
            toastWork.cancel();
        }
    }, 1);
};
下面是我的SoundPool类()中的声音代码:

我知道我不是在toast方法中调用它,我知道我使用的是touchview。我怎样才能使声音只在祝酒词同时出现时才出现呢。我一直在努力,但没有成功


我不想碰一下什么的。只是为了让它简单地玩土司。

做一个这样的函数

private void playSound(int resId){
    mp = MediaPlayer.create(MainActivity.this, resId);
       mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
        @Override
        public void onCompletion(MediaPlayer mediaPlayer) {
            mediaPlayer.reset();
            mediaPlayer.release();
        }
    });
    mp.start();
}
playSound(R.raw.sound);
并在显示您的
Toast
的地方这样称呼它

private void playSound(int resId){
    mp = MediaPlayer.create(MainActivity.this, resId);
       mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
        @Override
        public void onCompletion(MediaPlayer mediaPlayer) {
            mediaPlayer.reset();
            mediaPlayer.release();
        }
    });
    mp.start();
}
playSound(R.raw.sound);
您还需要替换资源,使其与您的匹配

编辑:您似乎想播放几种声音。您可以自己制作一个简单的声音池

制作一个你想这样播放的int数组或资源,并在
MediaPlayer
播放完毕后,告诉他播放下一个直到播放完数组中的最后一个

public class TestActivity extends Activity implements MediaPlayer.OnCompletionListener {


    private final int[] soundResources = {R.raw.sound1, R.raw.sound2, R.raw.sound3};
    private int counter = 0;
    private MediaPlayer mp;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        playSound(counter);
    }

    private void playSound(int resId){
        mp = MediaPlayer.create(TestActivity.this, resId);
        mp.setOnCompletionListener(this);
        mp.start();
    }

    @Override
    public void onCompletion(MediaPlayer mediaPlayer) {
        mp.reset();
        mp.release();
        if(counter < soundResources.length ) {
            playSound(soundResources[++counter]);
        }
    }
}
公共类TestActivity扩展活动实现MediaPlayer.OnCompletionListener{
私有final int[]soundResources={R.raw.sound1,R.raw.sound2,R.raw.sound3};
专用整数计数器=0;
私人媒体播放器;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
播放声音(计数器);
}
私人void playSound(国际住宅){
mp=MediaPlayer.create(TestActivity.this,resId);
mp.setOnCompletionListener(此);
mp.start();
}
@凌驾
完成时的公共作废(MediaPlayer MediaPlayer){
mp.reset();
mp.release();
if(计数器
谢谢,成功了!关于触摸视图,我不知道我是否应该保留这个。似乎没有必要保留它。您可以使用代码设置音量。如果你想设置音量,你可以在用ToastOh播放时设置音量,如果我在我的原始音乐中添加了更多的声音。像声音2,声音3。我该如何把这些放在我的音乐课上?这样地?soundID=soundPool.load(这个,R.raw.sound1,1);soundID=soundPool.load(这个,R.raw.sound2,1)
SoundPool
表示播放WAV PCM格式的短声音,声音文件大小不应超过1Mb。如果您需要播放“更大”的音乐,那么您应该使用
MediaPlayer
MediaPlayer
一次只能播放一个文件,其播放文件的初始化如本答案所示。如果您需要播放其他文件,只需在
MediaPlayer.create()中传递其他文件/资源名称即可。
我已经用MediaPlayer制作了一个示例音池。。。过来看