When the Android app goes between wifi and 3g the call does not
automatically switch, I can call 'n' which re-does the NAT, but then
looking at this page: http://trac.pjsip.org/repos/wiki/IPAddressChange none
of these approaches seem to work. Since mobile phones often switch back and
forth between wifi and 3g/mobile this seems like a great feature to build
into pjsip. Is there a way to easily handle this now on Android? Thanks!
Shaun
Hi Shaun,
From my experience on CSipSimple it's not something that is relevant of
the sip stack.
Besides, it's not simple to support on android and may depend on your
approach on that. Depending on whether you'd like to support VPN
connection /for example/ approach will be different. It will also be
different depending on what android version you'd like to support.
You can get inspired on what's done on Android stock SIP application...
BTW, you'll see it's also not responsibility of the sip stack but of the
sip application to decide whether to restart or not the sip stack in the
implementation from Google too... so I think that's not a bad idea ;).
Best regards,
Régis
On 21/08/2012 18:24, Shaun Clark wrote:
When the Android app goes between wifi and 3g the call does not
automatically switch, I can call 'n' which re-does the NAT, but then
looking at this page: http://trac.pjsip.org/repos/wiki/IPAddressChange
none of these approaches seem to work. Since mobile phones often
switch back and forth between wifi and 3g/mobile this seems like a
great feature to build into pjsip. Is there a way to easily handle
this now on Android? Thanks!
Shaun
Visit our blog: http://blog.pjsip.org
pjsip mailing list
pjsip@lists.pjsip.org
http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
Hi,Régis :
Do you know the best way to obtain current active ip address on
Android? Because I have a device
that allow two types of network connected at the same time, then when
iterating networking interface, we
will get two ip addresses, but we don't know which is the one that is being
used by the system.
On Wed, Aug 22, 2012 at 12:32 AM, Régis Montoya r3gis.3r@gmail.com wrote:
Hi Shaun,
From my experience on CSipSimple it's not something that is relevant of
the sip stack.
Besides, it's not simple to support on android and may depend on your
approach on that. Depending on whether you'd like to support VPN connection
for example approach will be different. It will also be different
depending on what android version you'd like to support.
You can get inspired on what's done on Android stock SIP application...
BTW, you'll see it's also not responsibility of the sip stack but of the
sip application to decide whether to restart or not the sip stack in the
implementation from Google too... so I think that's not a bad idea ;).
Best regards,
Régis
On 21/08/2012 18:24, Shaun Clark wrote:
When the Android app goes between wifi and 3g the call does not
automatically switch, I can call 'n' which re-does the NAT, but then
looking at this page: http://trac.pjsip.org/repos/wiki/IPAddressChangenone of these approaches seem to work. Since mobile phones often switch
back and forth between wifi and 3g/mobile this seems like a great feature
to build into pjsip. Is there a way to easily handle this now on Android?
Thanks!
Shaun
Visit our blog: http://blog.pjsip.org
pjsip mailing listpjsip@lists.pjsip.orghttp://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
Visit our blog: http://blog.pjsip.org
pjsip mailing list
pjsip@lists.pjsip.org
http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
Hi,
The very first problem is that "Active IP address" is something that
doesn't exists. Told like that it makes no sense on any good OS. It's
not specific to Android !
Something important to understand is that an OS can have several IP
addresses. Then it's network routes and rules that allows to connect the
rest of the universe.
So for example if you have two interfaces (wifi + vpn for example), you
have at least 2 IP.
Besides on recent android phones + recent networks you'll also get ipv6
addresses. So even with one "network" you'll get two addresses. (I
obviously exclude loopback address that is again another one).
What you could try is to get the ipv4 address of the interface connected
to the default gateway. At least with that as target, you are searching
something that you can find. (while searching "active ip address" is
something that makes no sense). To search the ipv4 address of the
interface connected to default gateway several solutions. Maybe with
java api, or maybe with network route files.
If you have a server address to test it would be easier to open a socket
to it and see your local address however (as doing that automatically
resolves routes and interfaces).
On 22/08/2012 17:16, shawn wang wrote:
Hi,Régis :
Do you know the best way to obtain current active ip address on
Android? Because I have a device
that allow two types of network connected at the same time, then when
iterating networking interface, we
will get two ip addresses, but we don't know which is the one that is
being used by the system.
On Wed, Aug 22, 2012 at 12:32 AM, Régis Montoya <r3gis.3r@gmail.com
mailto:r3gis.3r@gmail.com> wrote:
Hi Shaun,
From my experience on CSipSimple it's not something that is
relevant of the sip stack.
Besides, it's not simple to support on android and may depend on
your approach on that. Depending on whether you'd like to support
VPN connection /for example/ approach will be different. It will
also be different depending on what android version you'd like to
support.
You can get inspired on what's done on Android stock SIP
application... BTW, you'll see it's also not responsibility of the
sip stack but of the sip application to decide whether to restart
or not the sip stack in the implementation from Google too... so I
think that's not a bad idea ;).
Best regards,
Régis
On 21/08/2012 18:24, Shaun Clark wrote:
When the Android app goes between wifi and 3g the call does not
automatically switch, I can call 'n' which re-does the NAT, but
then looking at this page:
http://trac.pjsip.org/repos/wiki/IPAddressChange none of these
approaches seem to work. Since mobile phones often switch back
and forth between wifi and 3g/mobile this seems like a great
feature to build into pjsip. Is there a way to easily handle this
now on Android? Thanks!
Shaun
_______________________________________________
Visit our blog:http://blog.pjsip.org
pjsip mailing list
pjsip@lists.pjsip.org <mailto:pjsip@lists.pjsip.org>
http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
_______________________________________________
Visit our blog: http://blog.pjsip.org
pjsip mailing list
pjsip@lists.pjsip.org <mailto:pjsip@lists.pjsip.org>
http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
Visit our blog: http://blog.pjsip.org
pjsip mailing list
pjsip@lists.pjsip.org
http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
Hi,
I agree with Régis that it is in the responsibility of the the application
rather than the SIP stack to act upon network changes.
In your original email you specifically ask about Android and the use case
of switching between 3G and WIFI.
Check out Android's ConnectivityManager:
http://developer.android.com/reference/android/net/ConnectivityManager.html
and "Check if Internet access is available on Android":
http://stackoverflow.com/questions/11662707/check-if-internet-access-is-available-on-android
You can create a BroadcastReceiver and listen for network change events,
like
@Override
public void onReceive(Context context, Intent intent) {
if (ConnectivityManager.CONNECTIVITY_ACTION.equals(intent.getAction()) {
ConnectivityManager manager = (ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (manager != null) {
NetworkInfo networkInfo = manager.getActiveNetworkInfo();
// or
NetworkInfo networkInfoWifi =
manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
// etc...
// decide here what to do in which case, e.g. restart the SIP
stack in case of network change
}
}
http://developer.android.com/reference/android/content/BroadcastReceiver.html
Hope this helps.
Fabian
On Wed, Aug 22, 2012 at 6:06 PM, Régis Montoya r3gis.3r@gmail.com wrote:
Hi,
The very first problem is that "Active IP address" is something that
doesn't exists. Told like that it makes no sense on any good OS. It's not
specific to Android !
Something important to understand is that an OS can have several IP
addresses. Then it's network routes and rules that allows to connect the
rest of the universe.
So for example if you have two interfaces (wifi + vpn for example), you
have at least 2 IP.
Besides on recent android phones + recent networks you'll also get ipv6
addresses. So even with one "network" you'll get two addresses. (I
obviously exclude loopback address that is again another one).
What you could try is to get the ipv4 address of the interface connected
to the default gateway. At least with that as target, you are searching
something that you can find. (while searching "active ip address" is
something that makes no sense). To search the ipv4 address of the interface
connected to default gateway several solutions. Maybe with java api, or
maybe with network route files.
If you have a server address to test it would be easier to open a socket
to it and see your local address however (as doing that automatically
resolves routes and interfaces).
On 22/08/2012 17:16, shawn wang wrote:
Hi,Régis :
Do you know the best way to obtain current active ip address on
Android? Because I have a device
that allow two types of network connected at the same time, then when
iterating networking interface, we
will get two ip addresses, but we don't know which is the one that is
being used by the system.
On Wed, Aug 22, 2012 at 12:32 AM, Régis Montoya r3gis.3r@gmail.comwrote:
Hi Shaun,
From my experience on CSipSimple it's not something that is relevant of
the sip stack.
Besides, it's not simple to support on android and may depend on your
approach on that. Depending on whether you'd like to support VPN connection
for example approach will be different. It will also be different
depending on what android version you'd like to support.
You can get inspired on what's done on Android stock SIP application...
BTW, you'll see it's also not responsibility of the sip stack but of the
sip application to decide whether to restart or not the sip stack in the
implementation from Google too... so I think that's not a bad idea ;).
Best regards,
Régis
On 21/08/2012 18:24, Shaun Clark wrote:
When the Android app goes between wifi and 3g the call does not
automatically switch, I can call 'n' which re-does the NAT, but then
looking at this page: http://trac.pjsip.org/repos/wiki/IPAddressChangenone of these approaches seem to work. Since mobile phones often switch
back and forth between wifi and 3g/mobile this seems like a great feature
to build into pjsip. Is there a way to easily handle this now on Android?
Thanks!
Shaun
Visit our blog: http://blog.pjsip.org
pjsip mailing listpjsip@lists.pjsip.orghttp://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
Visit our blog: http://blog.pjsip.org
pjsip mailing list
pjsip@lists.pjsip.org
http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
Visit our blog: http://blog.pjsip.org
pjsip mailing listpjsip@lists.pjsip.orghttp://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
Visit our blog: http://blog.pjsip.org
pjsip mailing list
pjsip@lists.pjsip.org
http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
Hi,
Yes indeed the connectivity manager will help.
Take care however it's not so simple to manage. The broadcast event can
arrive from any network. For example you can get an event on the mobile
data disconnected after the wifi connected state. The connected even
also arrives sometimes before dhcp negotiation complete. It's also never
raised for a VPN connection.
That's why it's necessary to have some dedicated code to treat all of that.
As I said getting inspired of code of Android SIP application could be a
first step even if they only manage Wifi connectivity. You can also get
inspired of code of CSipSimple that already manages that and restart or
just stop the sip stack depending on the new connectivity kind and of
settings.
The global idea is to always resync with static network state when
getting this event and to temporise a little before treating a
connection up event and to treat immediately connection down event.
On 22/08/2012 18:57, Fabian Bernhard wrote:
Hi,
I agree with Régis that it is in the responsibility of the the
application rather than the SIP stack to act upon network changes.
In your original email you specifically ask about Android and the use
case of switching between 3G and WIFI.
Check out Android's ConnectivityManager:
http://developer.android.com/reference/android/net/ConnectivityManager.html
and "Check if Internet access is available on Android":
http://stackoverflow.com/questions/11662707/check-if-internet-access-is-available-on-android
You can create a BroadcastReceiver and listen for network change
events, like
@Override
public void onReceive(Context context, Intent intent) {
if
(ConnectivityManager.CONNECTIVITY_ACTION.equals(intent.getAction()) {
ConnectivityManager manager = (ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (manager != null) {
NetworkInfo networkInfo = manager.getActiveNetworkInfo();
// or
NetworkInfo networkInfoWifi =
manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
// etc...
// decide here what to do in which case, e.g. restart the
SIP stack in case of network change
}
}
http://developer.android.com/reference/android/content/BroadcastReceiver.html
Hope this helps.
Fabian
On Wed, Aug 22, 2012 at 6:06 PM, Régis Montoya <r3gis.3r@gmail.com
mailto:r3gis.3r@gmail.com> wrote:
Hi,
The very first problem is that "Active IP address" is something
that doesn't exists. Told like that it makes no sense on any good
OS. It's not specific to Android !
Something important to understand is that an OS can have several
IP addresses. Then it's network routes and rules that allows to
connect the rest of the universe.
So for example if you have two interfaces (wifi + vpn for
example), you have at least 2 IP.
Besides on recent android phones + recent networks you'll also get
ipv6 addresses. So even with one "network" you'll get two
addresses. (I obviously exclude loopback address that is again
another one).
What you could try is to get the ipv4 address of the interface
connected to the default gateway. At least with that as target,
you are searching something that you can find. (while searching
"active ip address" is something that makes no sense). To search
the ipv4 address of the interface connected to default gateway
several solutions. Maybe with java api, or maybe with network
route files.
If you have a server address to test it would be easier to open a
socket to it and see your local address however (as doing that
automatically resolves routes and interfaces).
On 22/08/2012 17:16, shawn wang wrote:
Hi,Régis :
Do you know the best way to obtain current active ip address
on Android? Because I have a device
that allow two types of network connected at the same time, then
when iterating networking interface, we
will get two ip addresses, but we don't know which is the one
that is being used by the system.
On Wed, Aug 22, 2012 at 12:32 AM, Régis Montoya
<r3gis.3r@gmail.com <mailto:r3gis.3r@gmail.com>> wrote:
Hi Shaun,
From my experience on CSipSimple it's not something that is
relevant of the sip stack.
Besides, it's not simple to support on android and may depend
on your approach on that. Depending on whether you'd like to
support VPN connection /for example/ approach will be
different. It will also be different depending on what
android version you'd like to support.
You can get inspired on what's done on Android stock SIP
application... BTW, you'll see it's also not responsibility
of the sip stack but of the sip application to decide whether
to restart or not the sip stack in the implementation from
Google too... so I think that's not a bad idea ;).
Best regards,
Régis
On 21/08/2012 18:24, Shaun Clark wrote:
When the Android app goes between wifi and 3g the call does
not automatically switch, I can call 'n' which re-does the
NAT, but then looking at this page:
http://trac.pjsip.org/repos/wiki/IPAddressChange none of
these approaches seem to work. Since mobile phones often
switch back and forth between wifi and 3g/mobile this seems
like a great feature to build into pjsip. Is there a way to
easily handle this now on Android? Thanks!
Shaun
_______________________________________________
Visit our blog:http://blog.pjsip.org
pjsip mailing list
pjsip@lists.pjsip.org <mailto:pjsip@lists.pjsip.org>
http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
_______________________________________________
Visit our blog: http://blog.pjsip.org
pjsip mailing list
pjsip@lists.pjsip.org <mailto:pjsip@lists.pjsip.org>
http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
_______________________________________________
Visit our blog:http://blog.pjsip.org
pjsip mailing list
pjsip@lists.pjsip.org <mailto:pjsip@lists.pjsip.org>
http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
_______________________________________________
Visit our blog: http://blog.pjsip.org
pjsip mailing list
pjsip@lists.pjsip.org <mailto:pjsip@lists.pjsip.org>
http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
Visit our blog: http://blog.pjsip.org
pjsip mailing list
pjsip@lists.pjsip.org
http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org