src/org/sipdroid/media/RtpStreamReceiver.java
changeset 1005 a2cad81f348b
parent 835 4e40f3481f23
equal deleted inserted replaced
1004:bcacb829dc28 1005:a2cad81f348b
    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);