Skip to content

Commit 9f70934

Browse files
author
pmerle71
committed
1.1.1 beta
More bugfixes git-svn-id: http://sipdroid.googlecode.com/svn/trunk@326 8b64e154-0f13-11de-9106-f38757f67524
1 parent 08dcaf4 commit 9f70934

File tree

5 files changed

+155
-77
lines changed

5 files changed

+155
-77
lines changed

src/org/sipdroid/media/RtpStreamReceiver.java

Lines changed: 47 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ public class RtpStreamReceiver extends Thread {
6262
/** Whether it is running */
6363
boolean running;
6464
AudioManager am;
65+
ContentResolver cr;
6566
public static int speakermode;
6667

6768
/**
@@ -142,6 +143,35 @@ void saveVolume() {
142143
edit.commit();
143144
}
144145

146+
void saveSettings() {
147+
if (!PreferenceManager.getDefaultSharedPreferences(Receiver.mContext).getBoolean("oldvalid",false)) {
148+
int oldvibrate = am.getVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER);
149+
int oldvibrate2 = am.getVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION);
150+
if (!PreferenceManager.getDefaultSharedPreferences(Receiver.mContext).contains("oldvibrate2"))
151+
oldvibrate2 = AudioManager.VIBRATE_SETTING_ON;
152+
int oldpolicy = android.provider.Settings.System.getInt(cr, android.provider.Settings.System.WIFI_SLEEP_POLICY,
153+
Settings.System.WIFI_SLEEP_POLICY_DEFAULT);
154+
Editor edit = PreferenceManager.getDefaultSharedPreferences(Receiver.mContext).edit();
155+
edit.putInt("oldvibrate", oldvibrate);
156+
edit.putInt("oldvibrate2", oldvibrate2);
157+
edit.putInt("oldpolicy", oldpolicy);
158+
edit.putBoolean("oldvalid", true);
159+
edit.commit();
160+
}
161+
}
162+
163+
void restoreSettings() {
164+
int oldvibrate = PreferenceManager.getDefaultSharedPreferences(Receiver.mContext).getInt("oldvibrate",0);
165+
int oldvibrate2 = PreferenceManager.getDefaultSharedPreferences(Receiver.mContext).getInt("oldvibrate2",0);
166+
int oldpolicy = PreferenceManager.getDefaultSharedPreferences(Receiver.mContext).getInt("oldpolicy",0);
167+
am.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER,oldvibrate);
168+
am.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION,oldvibrate2);
169+
Settings.System.putInt(cr, Settings.System.WIFI_SLEEP_POLICY, oldpolicy);
170+
Editor edit = PreferenceManager.getDefaultSharedPreferences(Receiver.mContext).edit();
171+
edit.putBoolean("oldvalid", false);
172+
edit.commit();
173+
}
174+
145175
public static float good, late, lost, loss;
146176

147177
/** Runs it in a new Thread. */
@@ -163,29 +193,24 @@ public void run() {
163193

164194
android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_AUDIO);
165195
am = (AudioManager) Receiver.mContext.getSystemService(Context.AUDIO_SERVICE);
166-
int oldvibrate = am.getVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER);
167-
int oldvibrate2 = am.getVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION);
168-
int oldvol = am.getStreamVolume(AudioManager.STREAM_MUSIC);
169-
ContentResolver cr = Receiver.mContext.getContentResolver();
170-
int oldpolicy = android.provider.Settings.System.getInt(cr, android.provider.Settings.System.WIFI_SLEEP_POLICY,
171-
Settings.System.WIFI_SLEEP_POLICY_DEFAULT);
172-
if (oldpolicy != Settings.System.WIFI_SLEEP_POLICY_NEVER)
173-
Settings.System.putInt(cr, Settings.System.WIFI_SLEEP_POLICY,
174-
Settings.System.WIFI_SLEEP_POLICY_NEVER);
175-
restoreVolume();
196+
cr = Receiver.mContext.getContentResolver();
197+
saveSettings();
198+
Settings.System.putInt(cr, Settings.System.WIFI_SLEEP_POLICY,Settings.System.WIFI_SLEEP_POLICY_NEVER);
176199
am.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER,AudioManager.VIBRATE_SETTING_OFF);
177200
am.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION,AudioManager.VIBRATE_SETTING_OFF);
201+
int oldvol = am.getStreamVolume(AudioManager.STREAM_MUSIC);
202+
restoreVolume();
178203
AudioTrack track = new AudioTrack(AudioManager.STREAM_MUSIC, 8000, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT,
179204
BUFFER_SIZE*2*2, AudioTrack.MODE_STREAM);
180205
track.setStereoVolume(AudioTrack.getMaxVolume()*
181-
Float.valueOf(PreferenceManager.getDefaultSharedPreferences(Receiver.mContext).getString("eargain", "0.25"))
206+
org.sipdroid.sipua.ui.Settings.getEarGain()
182207
,AudioTrack.getMaxVolume()*
183-
Float.valueOf(PreferenceManager.getDefaultSharedPreferences(Receiver.mContext).getString("eargain", "0.25")));
208+
org.sipdroid.sipua.ui.Settings.getEarGain());
184209
track.play();
185210
short lin[] = new short[BUFFER_SIZE];
186211
short lin2[] = new short[BUFFER_SIZE];
187212
int user, server, lserver, luser, cnt, todo, headroom, len, timeout = 1, seq = 0, cnt2 = 0, m = 1,
188-
expseq, getseq, vm = 1;
213+
expseq, getseq, vm = 1, gap;
189214
boolean islate;
190215
user = 0;
191216
lserver = 0;
@@ -281,15 +306,12 @@ public void run() {
281306
getseq = rtp_packet.getSequenceNumber()&0xff;
282307
expseq = ++seq&0xff;
283308
if (m == RtpStreamSender.m) vm = m;
284-
if (getseq != expseq) {
285-
if (expseq > getseq) {
286-
loss += expseq - getseq;
287-
lost += expseq - getseq;
288-
good += expseq - getseq - 1;
289-
} else {
290-
loss++;
291-
lost++;
292-
}
309+
gap = (getseq - expseq) & 0xff;
310+
if (gap > 0) {
311+
if (gap > 100) gap = 1;
312+
loss += gap;
313+
lost += gap;
314+
good += gap - 1;
293315
} else {
294316
if (m < vm)
295317
loss++;
@@ -313,9 +335,9 @@ public void run() {
313335
switch (speakermode) {
314336
case AudioManager.MODE_IN_CALL:
315337
track.setStereoVolume(AudioTrack.getMaxVolume()*
316-
Float.valueOf(PreferenceManager.getDefaultSharedPreferences(Receiver.mContext).getString("eargain", "0.25"))
338+
org.sipdroid.sipua.ui.Settings.getEarGain()
317339
,AudioTrack.getMaxVolume()*
318-
Float.valueOf(PreferenceManager.getDefaultSharedPreferences(Receiver.mContext).getString("eargain", "0.25")));
340+
org.sipdroid.sipua.ui.Settings.getEarGain());
319341
break;
320342
case AudioManager.MODE_NORMAL:
321343
track.setStereoVolume(AudioTrack.getMaxVolume(),AudioTrack.getMaxVolume());
@@ -330,12 +352,9 @@ public void run() {
330352
track.stop();
331353
if (Receiver.pstn_state == null || Receiver.pstn_state.equals("IDLE"))
332354
am.setMode(AudioManager.MODE_NORMAL);
333-
am.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER,oldvibrate);
334-
am.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION,oldvibrate2);
335355
saveVolume();
336356
am.setStreamVolume(AudioManager.STREAM_MUSIC,oldvol,0);
337-
if (oldpolicy != Settings.System.WIFI_SLEEP_POLICY_NEVER)
338-
Settings.System.putInt(cr, Settings.System.WIFI_SLEEP_POLICY, oldpolicy);
357+
restoreSettings();
339358
ToneGenerator tg = new ToneGenerator(AudioManager.STREAM_RING,ToneGenerator.MAX_VOLUME/4*3);
340359
tg.startTone(ToneGenerator.TONE_PROP_PROMPT);
341360
try {

src/org/sipdroid/sipua/ui/InCallScreen.java

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
import android.content.Intent;
4343
import android.content.res.Configuration;
4444
import android.media.AudioManager;
45+
import android.media.ToneGenerator;
4546
import android.net.Uri;
4647
import android.os.Bundle;
4748
import android.os.Handler;
@@ -103,6 +104,7 @@ public void onPause() {
103104
case UserAgent.UA_STATE_IDLE:
104105
if (Receiver.ccCall != null)
105106
mCallCard.displayMainCallStatus(ccPhone,Receiver.ccCall);
107+
mHandler.sendEmptyMessageDelayed(MSG_BACK, 2000);
106108
break;
107109
}
108110
if (socket != null) {
@@ -199,9 +201,7 @@ public void run() {
199201
screenOff(true);
200202
break;
201203
case UserAgent.UA_STATE_IDLE:
202-
if (Receiver.ccConn != null && Receiver.ccConn.date != 0)
203-
mHandler.sendEmptyMessageDelayed(MSG_BACK, 2000);
204-
else
204+
if (!mHandler.hasMessages(MSG_BACK))
205205
moveBack();
206206
break;
207207
}
@@ -216,15 +216,21 @@ public void run() {
216216
(t = new Thread() {
217217
public void run() {
218218
int len = 0;
219-
219+
ToneGenerator tg = null;
220+
220221
running = true;
222+
if (Settings.System.getInt(getContentResolver(),
223+
Settings.System.DTMF_TONE_WHEN_DIALING, 1) == 1)
224+
tg = new ToneGenerator(AudioManager.STREAM_MUSIC, (int)(ToneGenerator.MAX_VOLUME*org.sipdroid.sipua.ui.Settings.getEarGain()));
221225
for (;;) {
222226
if (!running) {
223227
t = null;
224228
break;
225229
}
226230
if (len != mDigits.getText().length()) {
231+
if (tg != null) tg.startTone(mToneMap.get(mDigits.getText().charAt(len)));
227232
Receiver.engine(Receiver.mContext).info(mDigits.getText().charAt(len++));
233+
if (tg != null) tg.stopTone();
228234
continue;
229235
}
230236
mHandler.sendEmptyMessage(MSG_TICK);
@@ -317,6 +323,19 @@ public void initInCallScreen() {
317323
mDisplayMap.put(R.id.zero, '0');
318324
mDisplayMap.put(R.id.pound, '#');
319325
mDisplayMap.put(R.id.star, '*');
326+
327+
mToneMap.put('1', ToneGenerator.TONE_DTMF_1);
328+
mToneMap.put('2', ToneGenerator.TONE_DTMF_2);
329+
mToneMap.put('3', ToneGenerator.TONE_DTMF_3);
330+
mToneMap.put('4', ToneGenerator.TONE_DTMF_4);
331+
mToneMap.put('5', ToneGenerator.TONE_DTMF_5);
332+
mToneMap.put('6', ToneGenerator.TONE_DTMF_6);
333+
mToneMap.put('7', ToneGenerator.TONE_DTMF_7);
334+
mToneMap.put('8', ToneGenerator.TONE_DTMF_8);
335+
mToneMap.put('9', ToneGenerator.TONE_DTMF_9);
336+
mToneMap.put('0', ToneGenerator.TONE_DTMF_0);
337+
mToneMap.put('#', ToneGenerator.TONE_DTMF_P);
338+
mToneMap.put('*', ToneGenerator.TONE_DTMF_S);
320339

321340
View button;
322341
for (int viewId : mDisplayMap.keySet()) {
@@ -330,6 +349,8 @@ public void initInCallScreen() {
330349
boolean running;
331350
private static final HashMap<Integer, Character> mDisplayMap =
332351
new HashMap<Integer, Character>();
352+
private static final HashMap<Character, Integer> mToneMap =
353+
new HashMap<Character, Integer>();
333354

334355
public void onClick(View v) {
335356
int viewId = v.getId();
@@ -439,7 +460,10 @@ public boolean onKeyDown(int keyCode, KeyEvent event) {
439460
return true;
440461

441462
case KeyEvent.KEYCODE_BACK:
442-
reject();
463+
if (mDialerDrawer.isOpened())
464+
mDialerDrawer.animateClose();
465+
else
466+
reject();
443467
return true;
444468

445469
case KeyEvent.KEYCODE_CAMERA:

src/org/sipdroid/sipua/ui/Receiver.java

Lines changed: 55 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import android.content.BroadcastReceiver;
3434
import android.content.Context;
3535
import android.content.Intent;
36+
import android.location.Location;
3637
import android.location.LocationManager;
3738
import android.media.AudioManager;
3839
import android.media.MediaPlayer;
@@ -192,6 +193,9 @@ public static void onState(int state,String caller) {
192193
if (wl != null && wl.isHeld())
193194
wl.release();
194195
mContext.startActivity(createIntent(InCallScreen.class));
196+
ccConn.log(ccCall.base);
197+
ccConn.date = 0;
198+
engine(mContext).listen();
195199
break;
196200
case UserAgent.UA_STATE_INCALL:
197201
broadcastCallStateChanged("OFFHOOK", null);
@@ -211,23 +215,7 @@ public static void onState(int state,String caller) {
211215
mContext.startActivity(createIntent(InCallScreen.class));
212216
break;
213217
}
214-
if (call_state == UserAgent.UA_STATE_IDLE) {
215-
(new Thread() {
216-
public void run() {
217-
218-
try {
219-
sleep(2000);
220-
} catch (InterruptedException e) {
221-
}
222-
if (ccConn.date != 0) {
223-
ccConn.log(ccCall.base);
224-
ccConn.date = 0;
225-
}
226-
engine(mContext).listen();
227-
}
228-
}).start();
229-
}
230-
// stop the ringback player
218+
pos(true);
231219
if (ringbackPlayer != null && ringbackPlayer.isPlaying()) {
232220
ringbackPlayer.stop();
233221
}
@@ -306,29 +294,59 @@ public static void registered() {
306294
pos(true);
307295
}
308296

309-
public static void pos(boolean enabled) {
310-
Intent intent = new Intent(mContext, OneShotLocation.class);
311-
PendingIntent sender = PendingIntent.getBroadcast(mContext,
312-
0, intent, 0);
313-
Intent loopintent = new Intent(mContext, LoopLocation.class);
314-
PendingIntent loopsender = PendingIntent.getBroadcast(mContext,
315-
0, loopintent, 0);
316-
LocationManager lm = (LocationManager) mContext.getSystemService(Context.LOCATION_SERVICE);
317-
AlarmManager am = (AlarmManager)mContext.getSystemService(Context.ALARM_SERVICE);
318-
lm.removeUpdates(sender);
319-
am.cancel(sender);
320-
if (PreferenceManager.getDefaultSharedPreferences(mContext).getBoolean("pos",false) &&
321-
PreferenceManager.getDefaultSharedPreferences(mContext).getString("posurl","").length() > 0) {
322-
if (call_state == UserAgent.UA_STATE_IDLE && enabled) {
323-
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, sender);
324-
am.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime()+10*1000, sender);
325-
lm.removeUpdates(loopsender);
326-
lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 10*60000, 3000, loopsender);
297+
static LocationManager lm;
298+
static AlarmManager am;
299+
static PendingIntent gps_sender,net_sender;
300+
static boolean gps_enabled,net_enabled;
301+
302+
static final int GPS_UPDATES = 4000*1000;
303+
static final int NET_UPDATES = 600*1000;
304+
305+
public static void pos(boolean enable) {
306+
if (lm == null) lm = (LocationManager) mContext.getSystemService(Context.LOCATION_SERVICE);
307+
if (am == null) am = (AlarmManager)mContext.getSystemService(Context.ALARM_SERVICE);
308+
pos_gps(false);
309+
if (enable) {
310+
pos_net(false);
311+
if (call_state == UserAgent.UA_STATE_IDLE && Sipdroid.on(mContext) &&
312+
PreferenceManager.getDefaultSharedPreferences(mContext).getBoolean("pos",false) &&
313+
PreferenceManager.getDefaultSharedPreferences(mContext).getString("posurl","").length() > 0) {
314+
Location last = lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
315+
if (last == null || System.currentTimeMillis() - last.getTime() > GPS_UPDATES)
316+
pos_gps(true);
317+
pos_net(true);
327318
}
328-
} else
329-
lm.removeUpdates(loopsender);
319+
}
330320
}
331321

322+
static void pos_gps(boolean enable) {
323+
if (gps_sender == null) {
324+
Intent intent = new Intent(mContext, OneShotLocation.class);
325+
gps_sender = PendingIntent.getBroadcast(mContext,
326+
0, intent, 0);
327+
}
328+
if (enable) {
329+
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, GPS_UPDATES, 3000, gps_sender);
330+
am.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime()+10*1000, gps_sender);
331+
} else {
332+
am.cancel(gps_sender);
333+
lm.removeUpdates(gps_sender);
334+
}
335+
}
336+
337+
static void pos_net(boolean enable) {
338+
if (net_sender == null) {
339+
Intent loopintent = new Intent(mContext, LoopLocation.class);
340+
net_sender = PendingIntent.getBroadcast(mContext,
341+
0, loopintent, 0);
342+
}
343+
if (enable) {
344+
lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, NET_UPDATES, 3000, net_sender);
345+
} else {
346+
lm.removeUpdates(net_sender);
347+
}
348+
}
349+
332350
public static void url(final String opt) {
333351
(new Thread() {
334352
public void run() {

src/org/sipdroid/sipua/ui/Settings.java

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,14 @@ public static int getMinEdge() {
4343
}
4444
}
4545

46+
public static float getEarGain() {
47+
try {
48+
return Float.valueOf(PreferenceManager.getDefaultSharedPreferences(Receiver.mContext).getString("eargain", "0.25"));
49+
} catch (NumberFormatException i) {
50+
return (float)0.25;
51+
}
52+
}
53+
4654
@Override
4755
public void onCreate(Bundle savedInstanceState) {
4856
super.onCreate(savedInstanceState);
@@ -86,17 +94,25 @@ public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, Strin
8694
Checkin.checkin(false);
8795
edit.putString("protocol",sharedPreferences.getString("server", "").equals("pbxes.org")?"tcp":"udp");
8896
edit.commit();
89-
return;
90-
}
97+
} else
9198
if (sharedPreferences.getBoolean("callback",false) && sharedPreferences.getBoolean("callthru",false)) {
9299
CheckBoxPreference cb = (CheckBoxPreference) getPreferenceScreen().findPreference(
93100
key.equals("callback")?"callthru":"callback");
94101
cb.setChecked(false);
95-
return;
96-
}
97-
if (key.equals("wlan") || key.equals("3g"))
98-
updateSleep();
99-
if (!key.equals("dns")) {
102+
} else
103+
if (key.equals("wlan") ||
104+
key.equals("3g") ||
105+
key.equals("username") ||
106+
key.equals("password") ||
107+
key.equals("domain") ||
108+
key.equals("server") ||
109+
key.equals("port") ||
110+
key.equals("protocol") ||
111+
key.equals("minedge") ||
112+
key.equals("pos") ||
113+
key.equals("posurl")) {
114+
if (key.equals("wlan") || key.equals("3g"))
115+
updateSleep();
100116
Receiver.engine(this).halt();
101117
Receiver.engine(this).StartEngine();
102118
updateSummaries();

src/org/sipdroid/sipua/ui/Sipdroid.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -268,6 +268,7 @@ public boolean onOptionsItemSelected(MenuItem item) {
268268
} catch (InterruptedException e1) {
269269
}
270270
on(this,false);
271+
Receiver.pos(true);
271272
Receiver.engine(this).halt();
272273
Receiver.mSipdroidEngine = null;
273274
stopService(new Intent(this,RegisterService.class));

0 commit comments

Comments
 (0)