使用SoundPool播放声音

lub*_*art 11 audio android soundpool

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

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);
    };
}
Run Code Online (Sandbox Code Playgroud)

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

Fem*_*emi 7

您的音量控制或声音文件可能正常播放可能存在问题:如果您将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)+"]");
    };
Run Code Online (Sandbox Code Playgroud)

  • 啊,手机不支持ogg,但模拟器支持ogg.很高兴知道.以为它可能是文件格式. (4认同)
  • 谢谢你的重播!问题已经解决了!:)我将文件格式从*.ogg更改为*.wav和bingo !!!! :) 感谢帮助!:) (2认同)
  • 啊,我的错误:SoundPool/Audiotrack需要PCM数据,这是*wav*给你的.MediaPlayer对*ogg*进行解码,但SoundPool不进行解码. (2认同)