栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Android:混合多个AudioTrack实例?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android:混合多个AudioTrack实例?

我有4个音轨同时播放,它们似乎播放得很好。在HTC Desire 1.1ghz
OC上进行测试。我有时会在穿线时遇到小故障。有时,如果所有四个都在播放,则在我尝试加入该线程时不会停止。需要做更多的测试。这是我的课程,用于播放在给定路径下记录的WAV文件

    package com.ron.audio.functions;import java.io.BufferedInputStream;import java.io.DataInputStream;import java.io.File;import java.io.FileInputStream;import java.io.InputStream;import android.media.AudioFormat;import android.media.AudioManager;import android.media.AudioTrack;public class AudioPlayManager implements Runnable {private File fileName;private volatile boolean playing;public AudioPlayManager() {    super();    setPlaying(false);}public void run(){      // Get the length of the audio stored in the file (16 bit so 2 bytes per short)      // and create a short array to store the recorded audio.      int musicLength = (int)(fileName.length()/2);      short[] music = new short[musicLength];      try {        // Create a DataInputStream to read the audio data back from the saved file.        InputStream is = new FileInputStream(fileName);        BufferedInputStream bis = new BufferedInputStream(is);        DataInputStream dis = new DataInputStream(bis);        // Read the file into the music array.        int i = 0;        while (dis.available() > 0) {          music[i] = dis.readShort();          i++;        }        // Close the input streams.        dis.close();        // Create a new AudioTrack object using the same parameters as the AudioRecord        // object used to create the file.        AudioTrack audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC,     11025,    AudioFormat.CHANNEL_CONFIGURATION_MONO,   AudioFormat.ENCODING_PCM_16BIT,    musicLength,    AudioTrack.MODE_STREAM);        // Start playback        audioTrack.play();        // Write the music buffer to the AudioTrack object        while(playing){ audioTrack.write(music, 0, musicLength);        }      }      catch(Exception e){          e.printStackTrace();      }}public void setFileName(File fileName) {    this.fileName = fileName;}public File getFileName() {    return fileName;}public void setPlaying(boolean playing) {    this.playing = playing;}public boolean isPlaying() {    return playing;}

}



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/438218.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号