22 package org.sipdroid.media; |
22 package org.sipdroid.media; |
23 |
23 |
24 import java.io.IOException; |
24 import java.io.IOException; |
25 import java.net.SocketException; |
25 import java.net.SocketException; |
26 |
26 |
27 import com.beem.project.beem.jingle.JingleService; |
|
28 import com.beem.project.beem.ui.Call; |
|
29 import org.sipdroid.net.RtpPacket; |
27 import org.sipdroid.net.RtpPacket; |
30 import org.sipdroid.net.RtpSocket; |
28 import org.sipdroid.net.RtpSocket; |
31 import org.sipdroid.net.SipdroidSocket; |
29 import org.sipdroid.net.SipdroidSocket; |
32 import org.sipdroid.pjlib.Codec; |
30 import org.sipdroid.pjlib.Codec; |
33 |
31 |
34 import android.content.ContentResolver; |
|
35 import android.content.Context; |
32 import android.content.Context; |
36 import android.content.SharedPreferences.Editor; |
33 import android.content.SharedPreferences.Editor; |
37 import android.media.AudioFormat; |
34 import android.media.AudioFormat; |
38 import android.media.AudioManager; |
35 import android.media.AudioManager; |
39 import android.media.AudioTrack; |
36 import android.media.AudioTrack; |
40 import android.media.ToneGenerator; |
37 import android.media.ToneGenerator; |
41 import android.os.PowerManager; |
|
42 import android.os.RemoteException; |
38 import android.os.RemoteException; |
43 import android.preference.PreferenceManager; |
39 import android.preference.PreferenceManager; |
44 import android.provider.Settings; |
40 |
|
41 import com.beem.project.beem.jingle.JingleService; |
|
42 import com.beem.project.beem.ui.Call; |
45 |
43 |
46 /** |
44 /** |
47 * RtpStreamReceiver is a generic stream receiver. It receives packets from RTP |
45 * RtpStreamReceiver is a generic stream receiver. It receives packets from RTP |
48 * and writes them into an OutputStream. |
46 * and writes them into an OutputStream. |
49 */ |
47 */ |
65 private RtpSocket rtp_socket = null; |
63 private RtpSocket rtp_socket = null; |
66 |
64 |
67 /** Whether it is running */ |
65 /** Whether it is running */ |
68 private boolean running; |
66 private boolean running; |
69 private AudioManager am; |
67 private AudioManager am; |
70 private ContentResolver cr; |
|
71 public static int speakermode; |
68 public static int speakermode; |
72 private JingleService mJingle; |
69 private JingleService mJingle; |
73 |
70 |
74 /** |
71 /** |
75 * Constructs a RtpStreamReceiver. |
72 * Constructs a RtpStreamReceiver. |
192 if (!PreferenceManager.getDefaultSharedPreferences(Call.mContext).getBoolean("oldvalid",false)) { |
189 if (!PreferenceManager.getDefaultSharedPreferences(Call.mContext).getBoolean("oldvalid",false)) { |
193 int oldvibrate = am.getVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER); |
190 int oldvibrate = am.getVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER); |
194 int oldvibrate2 = am.getVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION); |
191 int oldvibrate2 = am.getVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION); |
195 if (!PreferenceManager.getDefaultSharedPreferences(Call.mContext).contains("oldvibrate2")) |
192 if (!PreferenceManager.getDefaultSharedPreferences(Call.mContext).contains("oldvibrate2")) |
196 oldvibrate2 = AudioManager.VIBRATE_SETTING_ON; |
193 oldvibrate2 = AudioManager.VIBRATE_SETTING_ON; |
197 int oldpolicy = android.provider.Settings.System.getInt(cr, android.provider.Settings.System.WIFI_SLEEP_POLICY, |
|
198 Settings.System.WIFI_SLEEP_POLICY_DEFAULT); |
|
199 Editor edit = PreferenceManager.getDefaultSharedPreferences(Call.mContext).edit(); |
194 Editor edit = PreferenceManager.getDefaultSharedPreferences(Call.mContext).edit(); |
200 edit.putInt("oldvibrate", oldvibrate); |
195 edit.putInt("oldvibrate", oldvibrate); |
201 edit.putInt("oldvibrate2", oldvibrate2); |
196 edit.putInt("oldvibrate2", oldvibrate2); |
202 edit.putInt("oldpolicy", oldpolicy); |
|
203 edit.putInt("oldring",am.getStreamVolume(AudioManager.STREAM_RING)); |
197 edit.putInt("oldring",am.getStreamVolume(AudioManager.STREAM_RING)); |
204 edit.putBoolean("oldvalid", true); |
198 edit.putBoolean("oldvalid", true); |
205 edit.commit(); |
199 edit.commit(); |
206 } |
200 } |
207 } |
201 } |
221 } |
215 } |
222 |
216 |
223 public static void restoreSettings() { |
217 public static void restoreSettings() { |
224 if (PreferenceManager.getDefaultSharedPreferences(Call.mContext).getBoolean("oldvalid",true)) { |
218 if (PreferenceManager.getDefaultSharedPreferences(Call.mContext).getBoolean("oldvalid",true)) { |
225 AudioManager am = (AudioManager) Call.mContext.getSystemService(Context.AUDIO_SERVICE); |
219 AudioManager am = (AudioManager) Call.mContext.getSystemService(Context.AUDIO_SERVICE); |
226 ContentResolver cr = Call.mContext.getContentResolver(); |
|
227 int oldvibrate = PreferenceManager.getDefaultSharedPreferences(Call.mContext).getInt("oldvibrate",0); |
220 int oldvibrate = PreferenceManager.getDefaultSharedPreferences(Call.mContext).getInt("oldvibrate",0); |
228 int oldvibrate2 = PreferenceManager.getDefaultSharedPreferences(Call.mContext).getInt("oldvibrate2",0); |
221 int oldvibrate2 = PreferenceManager.getDefaultSharedPreferences(Call.mContext).getInt("oldvibrate2",0); |
229 int oldpolicy = PreferenceManager.getDefaultSharedPreferences(Call.mContext).getInt("oldpolicy",0); |
|
230 am.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER,oldvibrate); |
222 am.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER,oldvibrate); |
231 am.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION,oldvibrate2); |
223 am.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION,oldvibrate2); |
232 Settings.System.putInt(cr, Settings.System.WIFI_SLEEP_POLICY, oldpolicy); |
|
233 setStreamVolume(AudioManager.STREAM_RING, PreferenceManager.getDefaultSharedPreferences(Call.mContext).getInt("oldring",0), 0); |
224 setStreamVolume(AudioManager.STREAM_RING, PreferenceManager.getDefaultSharedPreferences(Call.mContext).getInt("oldring",0), 0); |
234 Editor edit = PreferenceManager.getDefaultSharedPreferences(Call.mContext).edit(); |
225 Editor edit = PreferenceManager.getDefaultSharedPreferences(Call.mContext).edit(); |
235 edit.putBoolean("oldvalid", false); |
226 edit.putBoolean("oldvalid", false); |
236 edit.commit(); |
227 edit.commit(); |
237 PowerManager pm = (PowerManager) Call.mContext.getSystemService(Context.POWER_SERVICE); |
|
238 PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK | |
|
239 PowerManager.ACQUIRE_CAUSES_WAKEUP, "Sipdroid.RtpStreamReceiver"); |
|
240 wl.acquire(1000); |
|
241 } |
228 } |
242 restoreMode(); |
229 restoreMode(); |
243 } |
230 } |
244 |
231 |
245 public static float good, late, lost, loss; |
232 public static float good, late, lost, loss; |
286 speakermode = Call.docked > 0?AudioManager.MODE_NORMAL:AudioManager.MODE_IN_CALL; |
273 speakermode = Call.docked > 0?AudioManager.MODE_NORMAL:AudioManager.MODE_IN_CALL; |
287 restored = false; |
274 restored = false; |
288 |
275 |
289 android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_AUDIO); |
276 android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_AUDIO); |
290 am = (AudioManager) Call.mContext.getSystemService(Context.AUDIO_SERVICE); |
277 am = (AudioManager) Call.mContext.getSystemService(Context.AUDIO_SERVICE); |
291 cr = Call.mContext.getContentResolver(); |
278 Call.mContext.getContentResolver(); |
292 saveSettings(); |
279 saveSettings(); |
293 Settings.System.putInt(cr, Settings.System.WIFI_SLEEP_POLICY,Settings.System.WIFI_SLEEP_POLICY_NEVER); |
|
294 am.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER,AudioManager.VIBRATE_SETTING_OFF); |
280 am.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER,AudioManager.VIBRATE_SETTING_OFF); |
295 am.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION,AudioManager.VIBRATE_SETTING_OFF); |
281 am.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION,AudioManager.VIBRATE_SETTING_OFF); |
296 int oldvol = am.getStreamVolume(AudioManager.STREAM_MUSIC); |
282 int oldvol = am.getStreamVolume(AudioManager.STREAM_MUSIC); |
297 track = new AudioTrack(AudioManager.STREAM_MUSIC, 8000, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT, |
283 track = new AudioTrack(AudioManager.STREAM_MUSIC, 8000, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT, |
298 BUFFER_SIZE*2*2, AudioTrack.MODE_STREAM); |
284 BUFFER_SIZE*2*2, AudioTrack.MODE_STREAM); |