217 REAL_BUFFER_SIZE = BUFFER_SIZE * codec_divider; |
217 REAL_BUFFER_SIZE = BUFFER_SIZE * codec_divider; |
218 speakermode = AudioManager.MODE_IN_CALL; |
218 speakermode = AudioManager.MODE_IN_CALL; |
219 android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_AUDIO); |
219 android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_AUDIO); |
220 am = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE); |
220 am = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE); |
221 cr = mContext.getContentResolver(); |
221 cr = mContext.getContentResolver(); |
222 saveSettings(); |
222 //saveSettings(); |
223 |
223 |
224 Settings.System.putInt(cr, Settings.System.WIFI_SLEEP_POLICY,Settings.System.WIFI_SLEEP_POLICY_NEVER); |
224 Settings.System.putInt(cr, Settings.System.WIFI_SLEEP_POLICY,Settings.System.WIFI_SLEEP_POLICY_NEVER); |
225 am.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER,AudioManager.VIBRATE_SETTING_OFF); |
225 //am.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER,AudioManager.VIBRATE_SETTING_OFF); |
226 am.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION,AudioManager.VIBRATE_SETTING_OFF); |
226 //am.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION,AudioManager.VIBRATE_SETTING_OFF); |
227 oldvol = am.getStreamVolume(AudioManager.STREAM_MUSIC); |
227 //oldvol = am.getStreamVolume(AudioManager.STREAM_MUSIC); |
228 restoreVolume(); |
228 restoreVolume(); |
229 |
229 |
230 track = new AudioTrack(AudioManager.STREAM_MUSIC, sampling_rate, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT, |
230 track = new AudioTrack(AudioManager.STREAM_MUSIC, sampling_rate, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT, |
231 REAL_BUFFER_SIZE*2*2, AudioTrack.MODE_STREAM); |
231 REAL_BUFFER_SIZE*2*2, AudioTrack.MODE_STREAM); |
232 track.play(); |
232 track.play(); |
309 m = 1; |
309 m = 1; |
310 seq = (frame.getPkt()[0]).getSeqNumber(); |
310 seq = (frame.getPkt()[0]).getSeqNumber(); |
311 DataFramePool.getInstance().returnFrame(frame); |
311 DataFramePool.getInstance().returnFrame(frame); |
312 //println("headroom " + headroom + " user " + user + " server " + server + " luser " + luser + " lserver " + lserver); |
312 //println("headroom " + headroom + " user " + user + " server " + server + " luser " + luser + " lserver " + lserver); |
313 if (user >= luser + sampling_rate) { |
313 if (user >= luser + sampling_rate) { |
314 if (am.getMode() != speakermode) { |
314 /*if (am.getMode() != speakermode) { |
315 am.setMode(speakermode); |
315 am.setMode(speakermode); |
316 switch (speakermode) { |
316 switch (speakermode) { |
317 case AudioManager.MODE_IN_CALL: |
317 case AudioManager.MODE_IN_CALL: |
318 /*am.setStreamVolume(AudioManager.STREAM_RING,(int)( |
318 am.setStreamVolume(AudioManager.STREAM_RING,(int)( |
319 am.getStreamMaxVolume(AudioManager.STREAM_RING)* |
319 am.getStreamMaxVolume(AudioManager.STREAM_RING)* |
320 com.mbdsys.sfrdroid.ui.Settings.getEarGain()), 0); |
320 com.mbdsys.sfrdroid.ui.Settings.getEarGain()), 0); |
321 track.setStereoVolume(AudioTrack.getMaxVolume()* |
321 track.setStereoVolume(AudioTrack.getMaxVolume()* |
322 com.mbdsys.sfrdroid.ui.Settings.getEarGain() |
322 com.mbdsys.sfrdroid.ui.Settings.getEarGain() |
323 ,AudioTrack.getMaxVolume()* |
323 ,AudioTrack.getMaxVolume()* |
324 com.mbdsys.sfrdroid.ui.Settings.getEarGain());*/ |
324 com.mbdsys.sfrdroid.ui.Settings.getEarGain()); |
325 //running = false; |
325 //running = false; |
326 case AudioManager.MODE_NORMAL: |
326 case AudioManager.MODE_NORMAL: |
327 track.setStereoVolume(AudioTrack.getMaxVolume(),AudioTrack.getMaxVolume()); |
327 track.setStereoVolume(AudioTrack.getMaxVolume(),AudioTrack.getMaxVolume()); |
328 //running = false; |
328 //running = false; |
329 } |
329 } |
330 } |
330 }*/ |
331 luser = user; |
331 luser = user; |
332 } |
332 } |
333 lserver = server; |
333 lserver = server; |
334 System.arraycopy(lin, 0, lin2, 0, REAL_BUFFER_SIZE); |
334 System.arraycopy(lin, 0, lin2, 0, REAL_BUFFER_SIZE); |
335 } |
335 } |
336 } |
336 } |
337 println("POOL SIZE " + DatagramPool.getInstance().getPoolSize()); |
337 println("POOL SIZE " + DatagramPool.getInstance().getPoolSize()); |
338 track.stop(); |
338 track.stop(); |
339 //if (Receiver.pstn_state == null || Receiver.pstn_state.equals("IDLE")) |
339 //if (Receiver.pstn_state == null || Receiver.pstn_state.equals("IDLE")) |
340 // am.setMode(AudioManager.MODE_NORMAL); |
340 // am.setMode(AudioManager.MODE_NORMAL); |
341 saveVolume(); |
341 //saveVolume(); |
342 am.setStreamVolume(AudioManager.STREAM_MUSIC,oldvol,0); |
342 //am.setStreamVolume(AudioManager.STREAM_MUSIC,oldvol,0); |
343 restoreSettings(); |
343 //restoreSettings(); |
344 ToneGenerator tg = new ToneGenerator(AudioManager.STREAM_RING,ToneGenerator.MAX_VOLUME/4*3); |
344 ToneGenerator tg = new ToneGenerator(AudioManager.STREAM_RING,ToneGenerator.MAX_VOLUME/4*3); |
345 tg.startTone(ToneGenerator.TONE_PROP_PROMPT); |
345 tg.startTone(ToneGenerator.TONE_PROP_PROMPT); |
346 try { |
346 try { |
347 Thread.sleep(500); |
347 Thread.sleep(500); |
348 } catch (InterruptedException e) { |
348 } catch (InterruptedException e) { |
353 codec.cleanDecoder(codecCtx); |
353 codec.cleanDecoder(codecCtx); |
354 codec = null; |
354 codec = null; |
355 println("rtp receiver terminated"); |
355 println("rtp receiver terminated"); |
356 } |
356 } |
357 |
357 |
358 public void endReceiver() { |
|
359 track.stop(); |
|
360 //if (Receiver.pstn_state == null || Receiver.pstn_state.equals("IDLE")) |
|
361 // am.setMode(AudioManager.MODE_NORMAL); |
|
362 saveVolume(); |
|
363 am.setStreamVolume(AudioManager.STREAM_MUSIC,oldvol,0); |
|
364 restoreSettings(); |
|
365 ToneGenerator tg = new ToneGenerator(AudioManager.STREAM_RING,ToneGenerator.MAX_VOLUME/4*3); |
|
366 tg.startTone(ToneGenerator.TONE_PROP_PROMPT); |
|
367 try { |
|
368 Thread.sleep(500); |
|
369 } catch (InterruptedException e) { |
|
370 } |
|
371 tg.stopTone(); |
|
372 rtpSession = null; |
|
373 track = null; |
|
374 codec.cleanDecoder(codecCtx); |
|
375 codec = null; |
|
376 println("rtp receiver terminated"); |
|
377 } |
|
378 |
|
379 /** Debug output */ |
358 /** Debug output */ |
380 static int i = 0; |
359 static int i = 0; |
381 private static void println(String str) { |
360 private static void println(String str) { |
382 System.out.println("RtpStreamReceiver "+ i++ +": " + str); |
361 System.out.println("RtpStreamReceiver "+ i++ +": " + str); |
383 } |
362 } |