सोच रहा था कि कोई भी एंड्रॉइड पर पृष्ठभूमि थ्रेडिंग पर मेरी मदद कर सकता है।एंड्रॉइड - पृष्ठभूमि थ्रेडिंग को सही तरीके से कैसे करें?
मेरे पास कोड का एक टुकड़ा है जो डिवाइस के माइक से रिकॉर्ड करता है और उसके बाद कान टुकड़े (1.5 पर) के माध्यम से रिकॉर्ड करता है।
मैं इसे थ्रेड में चलाने की कोशिश कर रहा हूं लेकिन पृष्ठभूमि थ्रेड के रूप में इसे चलाने में असफल रहा हूं।
वर्तमान में यह गतिविधि को चलाता है और लॉक करता है ताकि जो भी हो रहा है वह थ्रेड चल रहा है और यूआई लॉक हो गया है या लटक रहा है।
public class LoopProg extends Activity {
boolean isRecording; //currently not used
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
AudioManager audio_service = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
audio_service.setSpeakerphoneOn(false);
audio_service.setMode(AudioManager.MODE_IN_CALL);
audio_service.setRouting(AudioManager.MODE_NORMAL,
AudioManager.ROUTE_EARPIECE, AudioManager.ROUTE_ALL);
Record record = new Record();
record.run();
}
public class Record extends Thread
{
static final int bufferSize = 200000;
final short[] buffer = new short[bufferSize];
short[] readBuffer = new short[bufferSize];
public void run() {
isRecording = true;
android.os.Process.setThreadPriority
(android.os.Process.THREAD_PRIORITY_URGENT_AUDIO);
int buffersize = AudioRecord.getMinBufferSize(11025,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT);
AudioRecord arec = new AudioRecord(MediaRecorder.AudioSource.MIC,
11025,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT,
buffersize);
AudioTrack atrack = new AudioTrack(AudioManager.STREAM_VOICE_CALL,
11025,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT,
buffersize,
AudioTrack.MODE_STREAM);
setVolumeControlStream(AudioManager.STREAM_VOICE_CALL);
atrack.setPlaybackRate(11025);
byte[] buffer = new byte[buffersize];
arec.startRecording();
atrack.play();
while(isRecording) {
arec.read(buffer, 0, buffersize);
atrack.write(buffer, 0, buffer.length);
}
arec.stop();
atrack.stop();
isRecording = false;
}
}
}
मैं सोच रहा था कि अगर किसी को भी मुझे कैसे एक पृष्ठभूमि धागा में इस चालू करने के लिए मार्गदर्शन कर सकते हैं:
यहाँ नवीनतम तरह से मैं यह करने की कोशिश की है? या फिर मुझे कुछ ट्यूटोरियल पर इंगित करें जो प्रासंगिक हो सकता है कि मैं याद कर सकता हूं?
अग्रिम
धन्यवाद, इसे हल किया गया है। लेकिन क्या यह बैकग्राउंड या वर्कर थ्रेड के रूप में चलाने का सही तरीका है? –
यह करने का एक तरीका है। आप या तो थ्रेड या रननेबल को लागू करके जावा तरीका कर सकते हैं, या आप इसे AsyncTask को कार्यान्वित करके एंड्रॉइड तरीका कर सकते हैं। मैं व्यक्तिगत रूप से अपने ऐप्स में लागू सभी पृष्ठभूमि धागे के लिए AsyncTask का उपयोग करता हूं। –
धन्यवाद mBaird, AsyncTask –