का उपयोग कर मैं ऐसे छोटे अंतर है कि पाशन पटरियों के बीच प्रकट होता है के रूप में MediaPlayer
के साथ कुछ अच्छी तरह से ज्ञात कीड़े, की वजह से एक सुविधा मैं Androids AudioTrack
बजाय MediaPlayer
, उपयोग करने के लिए अधिक संक्रमण के लिए चाहते हैं।प्ले पाशन ऑडियो audiotrack
मुझे AudioTrack
का उपयोग करने की अनुशंसा की गई है लेकिन इसका उपयोग इसके कई उदाहरणों में नहीं मिला है। मैं इतना AudioTrack
के बारे में एक प्रश्न मिला और उस कोड के कुछ प्रयोग किया जाता है कुछ एक साथ हैक करने:
public class TestActivity extends Activity implements Runnable {
Button playButton;
byte[] byteData = null;
int bufSize;
AudioTrack myAT = null;
Thread playThread = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
playButton = (Button) findViewById(R.id.testButton);
InputStream inputStream = getResources().openRawResource(R.raw.whitenoise_wav);
try {
byteData = new byte[ inputStream.available()];
} catch (IOException e) {
e.printStackTrace();
}
try {
inputStream.read(byteData);
inputStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
initialize();
playButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
playThread.start();
}
});
}
void initialize() {
bufSize = android.media.AudioTrack.getMinBufferSize(44100,
AudioFormat.CHANNEL_CONFIGURATION_STEREO,
AudioFormat.ENCODING_PCM_16BIT);
myAT = new AudioTrack(AudioManager.STREAM_MUSIC,
44100, AudioFormat.CHANNEL_CONFIGURATION_STEREO,
AudioFormat.ENCODING_PCM_16BIT, bufSize,
AudioTrack.MODE_STREAM);
myAT.setVolume(.2f);
playThread = new Thread(this);
}
public void run() {
if (myAT != null) {
myAT.play();
myAT.setLoopPoints(0, byteData.length, 6);
myAT.write(byteData, 0, byteData.length);
}
}
}
तो इस पूरे ऑडियो ट्रैक खेलने के लिए प्रतीत होता है (~ 1: 00 मिनट) और उसके बाद बंद हो जाता है। अब यहां अंतिम लक्ष्य दो में दो अलग-अलग ऑडियो ट्रैक चल रहे हैं और एक ही समय में लूपिंग कर रहे हैं। मेरे पास वर्तमान में /res/raw/
निर्देशिका में ऑडियो ट्रैक हैं, लेकिन यदि यह बेहतर होगा तो मैं उन्हें एक साधारण assets
फ़ोल्डर में ले जा सकता हूं। क्या मेरा वर्तमान कार्यान्वयन AudioTrack
सही है? यदि हां, तो मैं इसे लूप कैसे प्राप्त करूं?
संक्षेप में: AudioTrack
का उपयोग करके आप अंतराल के बिना लूपिंग ऑडियो कैसे खेल सकते हैं?
तीसरे पक्ष के पुस्तकालयों जैसे लूपिंग ऑडियो प्राप्त करने के वैकल्पिक तरीकों के सुझावों का स्वागत है।
क्या आप एक ही समय में दोनों ट्रैक खेलना चाहते हैं और यह भी लूप कि एक बार ऑडियो समाप्त हो जाए? –
यह सही है। – Orbit
इसे जांचें: http://developer.android.com/reference/android/media/SoundPool।एचटीएमएल –