android - 使用 SoundPool 播放声音

标签 android audio soundpool

我需要在我的应用程序中播放一段短促的声音。我写了下面的代码,但我的三星手机没有声音和奇怪的振动。但同时这段代码在我的安卓模拟器上运行良好。我的代码是:

package com.samplers;

import android.app.Activity;
import android.media.SoundPool;
import android.media.AudioManager;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class FixVibroActivity extends Activity {
    /** Called when the activity is first created. */

    private Button white;
    private SoundPool spool;
    private int soundID;

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

        this.setVolumeControlStream(AudioManager.STREAM_MUSIC);
        spool = new SoundPool(10, AudioManager.STREAM_MUSIC, 0);
        soundID = spool.load(this, R.raw.error, 1);

        white = (Button)findViewById(R.id.whiteBtn);
        white.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                Sound();
            }
        });
    }

    public void Sound(){
        AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
        float volume = (float) audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
        spool.play(soundID, volume, volume, 1, 0, 1f);
    };
}

请帮我解决这个问题!先感谢您! :)

最佳答案

您的音量控制或声音文件播放可能有问题:如果您将 Sound() 函数更改为此,它会做什么?如果您的手机无法正确处理 R.raw.error 文件格式,但模拟器可以正确处理,那将是非常奇怪的。

public void Sound(){
        AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
        float volume = (float) audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
        android.util.Log.v("SOUND","["+volume+"]["+spool.play(soundID, volume, volume, 1, 0, 1f)+"]");
    };

关于android - 使用 SoundPool 播放声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6396711/

相关文章:

异步任务内的android循环或循环内的异步任务

android - Gradle 未在 Android Studio 中安装依赖项

javascript - 这个 JavaScript 表达式的结构是什么?为什么它的计算结果为 'true'? (HTML5 音频标签和 canPlayType() 函数)

android - 录制声音识别android

c++ - 使用C++ shell()获取PID?

android - 无法在 SD 卡上创建文件夹 - mkdir 总是返回 false

java - 为什么这会导致 StringIndexOutOfBoundsException?安卓

android - Android:播放心率BPM声音

android - 知道在 Android 1.6/2.0/2.1 上使用 SoundPool 加载声音是否成功

android - 如何在 Java 中以编程方式禁用有线耳机