您的位置:首页 > 大数据 > 物联网

使用AudioTrack来播放pcm数据,发现播放出来的声音是吱吱的那种杂音。这是怎么回事呢? 没有出现录的声音

2013-08-05 13:21 639 查看
使用AudioTrack来播放pcm数据,发现播放出来的声音是吱吱的那种杂音。这是怎么回事呢?    没有出现录的声音
public class AudioPlayerDemoActivity extends Activity implements OnClickListener{

    /** Called when the activity is first created. */

        private TextView mTextViewState;                                // 播放状态

        

        private Button mBtnPlayButton;                                        // 播放

        

        private Button mBtnPauseButton;                                        // 暂停

        

        private Button mBtnStopButton;                                        // 停止

        

        private AudioPlayer mAudioPlayer;                                // 播放器

        

        private Handler mHandler;

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        initView();

        initLogic();

    }

    @Override

        protected void onDestroy() {

                // TODO Auto-generated method stub

                super.onDestroy();

                

                mAudioPlayer.release();

        }

        public void initView()

    {

            mTextViewState = (TextView) findViewById(R.id.tvPlayState);

            

            mBtnPlayButton = (Button) findViewById(R.id.buttonPlay);

            mBtnPlayButton.setOnClickListener(this);

            

            mBtnPauseButton = (Button) findViewById(R.id.buttonPause);

            mBtnPauseButton.setOnClickListener(this);

            

            mBtnStopButton = (Button) findViewById(R.id.buttonStop);

            mBtnStopButton.setOnClickListener(this);

    }

    public void initLogic()

    {

            mHandler = new Handler()

            {

                        @Override

                        public void handleMessage(Message msg) {

                                // TODO Auto-generated method stub

                                switch(msg.what)

                                {

                                case AudioPlayer.STATE_MSG_ID:

                                        showState((Integer)msg.obj);

                                        break;

                                }

                        }

                    

                    

            };

            

            mAudioPlayer = new AudioPlayer(mHandler);

            

            // 获取音频参数

            AudioParam audioParam = getAudioParam();

            mAudioPlayer.setAudioParam(audioParam);

            

            // 获取音频数据

            byte[] data = getPCMData();

            mAudioPlayer.setDataSource(data);

            

            // 音频源就绪

            mAudioPlayer.prepare();

            

            if (data == null)

            {

                    mTextViewState.setText(filePath + ":该路径下不存在文件!");

            }

    }

    @Override

        public void onClick(View view) {

                // TODO Auto-generated method stub

                switch(view.getId())

                {

                case R.id.buttonPlay:

                        play();

                        break;

                case R.id.buttonPause:

                        pause();

                        break;

                case R.id.buttonStop:

                        stop();

                        break;

                }

        }

    public void play()

    {

            mAudioPlayer.play();

    }

    public void pause()

    {

            mAudioPlayer.pause();

    }

    public void stop()

    {

            mAudioPlayer.stop();

    }

    public void showState(int state)

    {

            String showString = "";

            

            switch(state)

            {

            case PlayState.MPS_UNINIT:

                    showString = "MPS_UNINIT";

                    break;

            case PlayState.MPS_PREPARE:

                    showString = "MPS_PREPARE";

                    break;

            case PlayState.MPS_PLAYING:

                    showString = "MPS_PLAYING";

                    break;

            case PlayState.MPS_PAUSE:

                    showString = "MPS_PAUSE";

                    break;

            }

            

            showState(showString);

    }

    public void showState(String str)

    {

            mTextViewState.setText(str);

    }

        

        

        

        

         /*

     * 获得PCM音频数据参数

     */

        public AudioParam getAudioParam()

        {

                AudioParam audioParam = new AudioParam();

            audioParam.mFrequency = 44100;

            audioParam.mChannel = AudioFormat.CHANNEL_CONFIGURATION_STEREO;

            audioParam.mSampBit = AudioFormat.ENCODING_PCM_16BIT;

            

            return audioParam;

        }

        

        

        

        String  filePath  = Environment.getExternalSt
4000
orageDirectory().getAbsolutePath() + "/testmusic.pcm";

    /*

     * 获得PCM音频数据

     */

    public byte[] getPCMData()

    {

            

            File file = new File(filePath);

            if (file == null){

                    return null;

            }

            

            FileInputStream inStream;

                try {

                        inStream = new FileInputStream(file);

                } catch (FileNotFoundException e) {

                        e.printStackTrace();

                        return null;

                }

                

                byte[] data_pack = null;

            if (inStream != null){

                    long size = file.length();

                    

                    data_pack = new byte[(int) size];

                    try {

                                inStream.read(data_pack);

                        } catch (IOException e) {

                                // TODO Auto-generated catch block

                                e.printStackTrace();

                                return null;

                        }

            }

            

            return data_pack;

    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: