For android phone which supports volte, they can directly place call with jio sim without data require, but the phones without volte needs to use Jio4GVoice app or a custom rom which supports volte to make phone calls.
IS there any way , we can implement it for offline use?
4th Generation network, which we also know as LTE, was developed forecasting the growing data needs of the future. It was intended to replace wired broadband with wireless devices, a platform for which had already been set with 3G networks.
Hence this time, their focus in the development phase was not Voice, but only Data. To simplify network designs, all communication in & out was to be handled on fully-IP networks, much like the present Internet. This would enable faster, simpler communication than 3G, since all communication is now referred with their node's IP addresses. It was only in the final phases of development that they practically realised, for 4G to completely replace legacy systems, they must find a way to transmit Voice over the network, which they succeeded in, with VoLTE.
Basically, VoLTE speaks for itself, i.e. Voice over LTE.
VoLTE transmits Voice in Data form, much similar to VoIP internet calls we make on WhatsApp or Skype or Google Voice.
This means, you always need to establish a Data network with your respective 4G operator. This is unlike the system established in 2G/3G networks, where it would establish data networks only when you needed to surf the internet. Those were based on two way systems, different for Voice & Data.
4G transmits both Voice & Data simultaneously over the same Data pipeline, so you have the right to only be charged in Data you consume & not Minutes you talk. Which is the reason why Jio does not charge you separately for calls. The bandwidth required to transmit Voice is very small, (most calls usually fall in the range of KBs, in standard plan you get 1GB per day) & so Jio deducts the data used for Voice from your Data balance.
Since everything is data, you need to establish the data connection on your 4G smartphone or JioFi router to make calls. Hence Jio4GVoice app cannot function without a data connection.
I've seen in various VoLTE enabled smartphones, they still give you a Data Toggle/Switch to turn on/off data so that you can conserve some when not in use. It does not physically terminate data communication with the network, since it is the only connection. Rather, it just isolates all apps on your system from accessing the internet, and only the Dialer is given access to continue to make & receive 4G VoLTE calls.
Hope I've managed to solve all your curiosities.
Related
Nearby Share sometimes uses bluetooth to transfer the files because of which it is very slow. Sometimes it is not at all handy to transfer files that are more than 100 MB. Initially I thought Bluetooth is used only for handshaking purposes. But later I realized that the files are itself transferred via bluetooth. I'm curious to know why should the files be transferred via bluetooth when it can be transferred via wifi direct. A lot of third party apps including Google Files use wifi direct to transfer the files. So why does a built-in functionality like Nearby Share should use bluetooth. The sole purpose of Nearby Share itself is to achieve fast file transfer with wifi direct and without internet. So if the files are transferred via bluetooth there is no point in using Nearby Share.
I'm also curious to know the various modes of file transfer present in Nearby share. There are three modes: Data, Wifi Only and Without Internet. I'm really curious to know why is an internet connection required to transfer files when Nearby Share is meant for file transfer without Internet. Is it meant for handshaking purposes in Web RTC?
(Disclaimer: I work on Nearby Share)
Nearby Share will always attempt to upgrade to WiFi before sending files larger than 1MB. A grace period of 10sec is given for that upgrade before fallback mechanisms kick in and the file is sent over Bluetooth as a last resort. Even after falling back to Bluetooth, the devices will continue to attempt to upgrade to WiFi in the background, but some failures are unrecoverable and the file will fully send over Bluetooth. Note that urls and very small files will immediately send over Bluetooth.
This upgrade can fail for a multitude of reasons. Most commonly, it's a concurrency issue. The same radio is used for Bluetooth, p2p WiFi, and your normal access point connection and it must be time-shared accordingly. If all 3 want to be on different channels, you will miss messages -- it's a guarantee. If these messages are important, such as the authentication frames when connecting over WiFi Direct, then the connection will fail. If these messages are less important, they may be resent until successfully received, but it will lower throughput for the transfer such that even 5GHz WiFi can look to be as slow as Bluetooth.
Nearby Share tries to avoid this in a few ways. When regulations allow, we will attempt to start the WiFi Direct group on the same channel as the access point. This way, the phone doesn't have to timeshare (although it does have the side effect of colliding with messages from the access point. But generally, both sides will back off a random amount and retransmit, and the loss is less than the loss of multi-channel concurrency). Unfortunately, many countries do have regulations that allow certain (or all) 5GHz channels only indoors -- in those cases, the access point can be set up to utilize it but WiFi Direct cannot.
We also prefer mediums like WiFi Direct over Hotspot, as WiFi Direct commonly uses CTS2SELF frames to advertise "Do not transmit for this duration". Unfortunately it's not as straightforward a message as "I am going off channel, do not try to communicate with me" -- CTS2SELF has the side affect of quieting all communication over the access point even if it wasn't directed to the phone -- but it does get the point across.
We pause any Bluetooth activity we have control over, to reduce the need to timeshare with it. In some severe cases, where the OEM has implemented timesharing that's too aggressive, we will turn off the Bluetooth radio to forcefully interrupt Bluetooth activity, but this is disruptive and usually a bad user experience.
We may try to send the data over your access point itself instead of setting up WiFi Direct. This can avoid the MCC situation described above, but comes at the cost that the data needs to be re-encrypted (because we don't know what other devices are connected over LAN and might be eavesdropping), and it does introduce another hop, as the data needs to go through the AP even if the devices are side-by-side. TDLS helps avoid that last issue, but it has limitations (eg. it won't use 40/80/160MHz bandwidth if the AP isn't set up for it, and it'll send over 2.4GHz if the AP is on 2.4GHz).
Other possible failures include the device getting into a bad state (toggling airplane mode can help here), the Android version being too low (ideally both devices should be R+, as it's almost impossible to fix bugs on older Android OS versions, even though we try), or just bad luck.
I came across a problem where the mobile device loses the data connectivity but the cellular network is available on the device. Does any one know with such connection, how mobile device sends information to its telecom operators? What are all the information device shares with the telecom operator and how? What architecture is followed by the telecom operators? Please share your knowledge.
Thanks in Advance,
Gaurav
It depends on the network type, e.g. 2G, 3G, LTE, CDMA etc, and the type of data, e.g. user or app level data, radio control data and information etc.
In very basic terms, on the data side there will be different protocol layers and even though the data transfer connectivity is not there at an IP later for example, i.e. allowing your an app or browser to communicate with the internet, there will most likely be control connectivity between the mobile device and the tower or network still available (to set up the data connection when resources are available, page the phone for calls etc).
Different network types have different standards and sets of protocols but 3GPP, which groups standards for 2G, 3G etc (or what we call 2G, 3G etc) is a good place to look, although you may want to search for '3GPP architecture overview' first to get some basic introductions.
This is a the place where the 3GPP architure spec is found:
https://portal.3gpp.org/desktopmodules/Specifications/SpecificationDetails.aspx?specificationId=821
VoLTE is a relatively newer technology. I understand that calls made using VoLTE use internet data (The same data that we use to browse the internet, watch YouTube videos etc.) It kind of fascinates me. I tried getting more info about how it works and came to know that VoLTE is something like an "optimized" data network for Voice (Which makes it much better than VoIP). My question is:
Q. 1) If it is "optimised" data network, then how come we make VoLTE calls using the same general purpose internet.
Q. 2) Is the optimization done on the client side.
If YES for Q. 2), what are those optimizations and how to use them in an android app. Is there any library for it? (For Ex. This)
Q. 3) Also, does VoLTE means an end to VoIP and hence an end for Skype, Facetime etc.? Can Skype or Facetime port their mobile apps to use VoLTE over VoIP?
In a very general sense, yes VoLTE does use "internet data" like Youtube, etc, whereas traditional voice calls are circuit-switched.
However, LTE uses a QoS mechanism to prioritize VoLTE so that it is not treated the same as data coming from your web browser, etc. You can see from the standard QCI table below the properties of different bearers (logical connections):
While your typical web browser will use QCI 8 or 9, a VoLTE call will use QCI 5 for control plane signaling and QCI 1 for the actual voice call. This ensures that a tighter packet delay budget is used and the bitrate is guaranteed. This is mainly a core network functionality, however the end user device (UE) must be able to support it. You cannot change the QCI of the device from the client side, it must be changed in the HSS (Home Subscriber Server, a core network component).
With regards to your last question, Skype and other similar applications are considered OTT (Over The Top) applications which are treated like normal QCI 8/9 applications and not given any special priority. So, what this means is that if you are in good coverage on a non-congested cell (and core, etc) you may not notice a difference between a Skype call and VoLTE call. However, if you are in a coverage- or capacity-challenged area, the VoLTE call will be superior. Finally, I do believe there are some operators that have built native apps that can take advantage of the various QCI profiles.
VoLTE is almost same as VOIP, only difference here is where the data flows(LTE or Ethernet/Wifi). You can say VoLTE is evolved from VOIP.It does not mean that it is an end to VOIP.
SIP signalling in VoLTE will be over dedicated bearer or PDN of QCI 5.
Since LTE IP based(Packet switch) network, your SIP signalling and Voice data(RTP) is transmitted as IP packets in different bearers. It is the NW/operator who decides the priority for this dedicated bearers. So Internet data will have different priority over the VoLTE data.
If you have any SIP application , you can configure it to use the INTERNET PDN/Bearer for the SIP signalling and media. This will be treated as internet data.
Optimization is with respect to codecs used in the client to for the media. You should have bandwidth efficient codecs to support.(LTE protocol(PDCP) takes care of optimizing your IP packet including UDP and RTP packet of the media.
If your VoLTE call is using qci-5 and QCI-1, then data of VoLTE will given more prio. But VoLTE calls will be generally charged from the operator.But skype will not charged from the operator. SO you can guess whether it is an end to skype or not.
VoLTE technology is not just the device side , it includes Carrier's Infrastructure as well . Even if you use same signalling (SIP ) and media (RTP) protocol , Unless you use bearer specified by operator negotiated in NAS and RRC signalling , it will all be treated as just other internet traffic and will not be eligible to have dedicated bandwidth for the duration of call . You will also miss out on any Supplementary Services that your Carrier Provides. This all makes more sense if you are mobile and may have fluctuating network , In Ideal conditions , quality offered by VoIP applications may be same or even much better than VoLTE call quality.
Q. 1) If it is "optimised" data network, then how come we make VoLTE calls using the same general purpose internet.
we dont , there is a negotiation between network and handset for a channel with guaranteed quality of service , ie in bad network , this data will be dropped last.
Q. 2) Is the optimization done on the client side. If YES for Q. 2), what are those optimizations and how to use them in an android app. Is there any library for it? (For Ex. This)
This is done in ODM (phone makers) software after following specifications and certifications from Operator Body (GSMA like) . There is no lib for this , One can invoke android telephioy framework but that will essentially be same as using dialer
Q. 3) Also, does VoLTE means an end to VoIP and hence an end for Skype, Facetime etc.? Can Skype or Facetime port their mobile apps to use VoLTE over VoIP?
Facetime , skype etc are called OTT apps , whereas volte calls are native apps . You may consider Volte calls as something which violates net neutrality but as its in compliance with government rules , its considered to be ok.
Background
I have an idea for an app on vacation that needs to communicate to other phones with the same app. While on vacation those phones might not all have internet as roaming can be very expensive. The data is not a lot: like 500 kB max would suffice (in json).
Every phone has a bit of info that all the other phones would like to know, but if it helps the info can be stored on 1 phone (master phone from now on) and shared later to the other phones when back home over internet.
Phones
Android, iPhone and Windows Phone
We can't assume they have NFC, IR or zigbee. Just the hardware almost every phone has like bluetooth, camera, microphone etc.
My ideas
QR codes that changes, based on new info: If the first phone is scanned the second phones QR code has data from the 1st phone and itself and the 3rd phone has data from the 1st, 2nd and 3rd (itself) until it reaches that master phone that holds all data.
Data transmission trough sound that we can't hear (or we can). Con is that I don't know if something like this exists for mobile platforms and writing it is like a 3 year master thesis project.
http://nearbytes.com
https://applidium.com
https://developer.chirp.io/
Bluetooth. Can we connect like 8 devices? Would it work consistent (connecting even my headphones can be a hassle, what about 8 phones who try to connect simultaneously)
All of these ideas have big cons. Maybe I'm overlooking a better way.
I will add a bounty to the question for the best solution
An answer that explains it with a little bit of code reference (link is ok) is always better than just: "use bluetooth man"
TL;DR
The easiest (and most supported) way of getting multiple devices to connect to each other is using WiFi. Since your goal is to achieve data transfer with no internet, the most appealing solution would be to use a Peer-to-Peer network structure.
The two major smartphone OS's (Android and iOS) have API's and documentation on creating and transferring data over a Peer-to-Peer network.
Android WiFi P2P
Apple Multipeer Connectivity
These two also have a means to encrypt the data being transferred.
Windows doesn't seem to have an API to allow multiple peers connected, but their Proximity Class will work for one device at a time.
I can give a few outlines over the different options in each major OS:
Android
Android's WiFi P2P (peer-to-peer) API was created for transferring data without internet or another network.
From their documentation:
The Wi-Fi peer-to-peer (P2P) APIs allow applications to connect to nearby devices without needing to connect to a network or hotspot (Android's Wi-Fi P2P framework complies with the Wi-Fi Direct™ certification program). Wi-Fi P2P allows your application to quickly find and interact with nearby devices, at a range beyond the capabilities of Bluetooth.
Google even has Documentation and training on this API.
iOS
Apple's Multipeer Connectivity.
Very similar to Android's P2P API, they claim:
The Multipeer Connectivity framework provides support for discovering services provided by nearby iOS devices using infrastructure Wi-Fi networks, peer-to-peer Wi-Fi, and Bluetooth personal area networks and subsequently communicating with those services by sending message-based data, streaming data, and resources (such as files).
Here is a decent looking tutorial on using Multipeer Connectivity.
--EDIT--
Another iOS way of doing this, which is a bit of a mis-utilization(?) of the tool, is by using GameKit.
However, I think that to get it to work for your purposes might result in a bit of a hack, since the "players" have to be using Game Center.
Windows
The only way (apparently) to connect phones in Windows Phone, is by using Proximity, however, that only gives you the option of connecting no more than two phones together.
They state:
Proximity is a great way to create a shared app experience between two instances of your app running on two different devices.
Those are options in each of the major mobile device OS's.
App usage could be something like:
Decide which device was going to be the "master", so that other devices can connect to it. It isn't required to know this before deploying the app, but there should be a way for the user to decide whether he is going to be a client (receiving data) or the server (pushing data).
Once it was decided between the group of devices which was going to be pushing data, that device would have to be registered as the server (in the Android P2P API, you can establish a "group owner"), and then start looking for peers by initializing the service.
Then, once the devices are connected to the master device, you can start pushing data. An additional bonus is that when using Android WiFi P2P, all communication is encrypted with WPA2, and with iOS, you can enable encryption using MCEnableEncryption (however they state that is slows down data transfer rate).
Now you would just have to pick one method to go with, and make sure that all the phones ran that OS. Because these three methods of connectivity won't work together.
All of the three methods listed are done programmatically, so there should be no strange or odd things that your user will have to do. Searching for other devices, connecting, and transferring data can all be done within your app.
More help can be provided if the question is narrowed down to specific problems, but this should be enough data to get you started.
Don't try QR or sound. I think it would be very painful to transmit 500kb of data.
Bluetooth seems like a good solution but maybe, as you already said, hard to configure.
What do you think about wifi?
At least every Android and iPhone device can create a mobile wifi hotspot. By using this, you can easily setup a environment where 8 devices are in the same LAN (without using the internet by any of your devices).
Now your "master phone" runs a simple server to synchronize data (just like an internet server would do). Every of the seven clients could receive the ip adress of you master by scanning a simple QR code or sending a short message and afterwards configure itself accordingly.
Have you checked Alljoyn?
As quoted:
"Developers can write applications for interoperability regardless of transport layer, manufacturer, and without the need for Internet access"
You can create a Wifi connection between your devices. Than after connection it creates local network between your devices. Inside this network you, of course, can interact between your devices using TCP/IP connection. It works both on Android and iOS. Simply lauch your app as server on the one device
EDIT
Note, you have to connect your devices using any network. It is possible to connect the devices by initializing your device as WiFi-router. It can be both Android and iOS. If it is possible, you can connect your devices to any wifi connection.
Than, launch your app as Server-socket, the others as clients.
for Android (java) server use this link:
https://docs.oracle.com/javase/tutorial/networking/sockets/clientServer.html
try (
ServerSocket serverSocket = new ServerSocket(portNumber);
Socket clientSocket = serverSocket.accept();
PrintWriter out =
new PrintWriter(clientSocket.getOutputStream(), true);
BufferedReader in = new BufferedReader(
new InputStreamReader(clientSocket.getInputStream()));
) {
for android device client:
try (
Socket kkSocket = new Socket(hostName, portNumber);
PrintWriter out = new PrintWriter(kkSocket.getOutputStream(), true);
BufferedReader in = new BufferedReader(
new InputStreamReader(kkSocket.getInputStream()));
)
The same idea is for iOS (Objective-C):
server
https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/NetworkingTopics/Articles/UsingSocketsandSocketStreams.html#//apple_ref/doc/uid/CH73-SW8
and client:
https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/NetworkingTopics/Articles/UsingSocketsandSocketStreams.html#//apple_ref/doc/uid/CH73-SW4
A better way could be use Ble.
It's easiers to connect the phones because you don't need user confirmation.
Seems like you can connect up to 20 devices Maximum number of peripherals on CoreBluetooth?.
To transfer 500KB should require few minutes (may be between 2 and 5).
You can track an Android device without Internet via GPS.
Connection without The Internet:
SMS
USSD
DTMF (very slow)
How to design a tracking device on USSD is mentioned at
M2M IoT Cookbook
How to develop a device based on Wireless Wide Area Network modules
You also can use the Android phone as a data logger and store under the Micro SD Card and read the card by:
Replacing the SD card to your PC
Streaming the data local by Bluetooth
Forwarding the data at home by Wi-Fi
Or Possibly:
Your app can use SMS API to transmit the DATA or other SOURCES.
Can anyone explain 3G technology from a programmer's perspective? I am a little bit confused. For instance, if I develop a mobile application with Android or IPhone SDK. Shall I concern about the network I used? Or the SDK has a same interface for all those different network(3G,GPRS,CDMA).
Moreover, is 3G a specific technology or a set of communication technology? Is it just same as WCDMA?
Thanks.
You do not need to care about the specific protocol, but you may very well want to distinguish between WiFi and 3G, and have your program behave differently according to what is available, because WiFi is faster and cheaper. In case of the iPhone, there are even explicit agreements that certain heavy-data activities must only take place over WiFi.
Another idea would be to detect if roaming is active and warn the user about it (even though the phone should already be doing that).
I'm sure you have no problem finding definition of 3G via a web search. Here's one from wikipedia.
As a developer, your main concern should be whether the application you are developing should/must ride on top of 3G-level type of connection in terms of bandwidth and/or streaming capabilities. You might need to identify the communication layer i.e packet bearer/wifi or just older 2G (GSM etc) and so on.
You shouldn't need to (unless specifically required) really worry about the underlying technicality of it. For Andriod, the SDK should provide you with enough tools/utilities to build an application which is abstracted from the communication layer.
3G is not a single technology but a family of mobile communications standards. There are different standards in different regions around the globe. In USA CDMA is used (not sure if WCDMA as well) while in Europe WCDMA (or better known as UMTS) is used which was lately upgraded to HSPA. These are both 3G family standards.
GPRS and EDGE which are 2G and 2.5G family standards are the predecessors of the 3G family.
From the programmer's perspective the only difference between the listed standards GPRS, EDGE and 3G (UMTS or CDMA) is the connection speed.
3G relates to the speed and capabilities of the cellular network. From an API and programming standpoint, there is no difference, however the 3G network will be able to transfer data at a generally faster rate, but also consume more battery power when active.
3G is an umbrella term for multiple technologies, including UMTS, HSPA, HSDPA, EVDO. WCDMA is simply a modulation scheme, but is often analogous to UMTS when used in cellular networks (which define more than simple modulation).
To test your application on the emulator under different conditions (though not WiFi at the moment) you can use the emulator console and gsm command.
the 'gsm data <state>' allows you to change the state of your GPRS connection
valid values for <state> are the following:
unregistered no network available
home on local network, non-roaming
roaming on roaming network
searching searching networks
denied emergency calls only
off same as 'unregistered'
on same as 'home'
Alternatively from the command line:
$ adb emu gsm data roaming # set roaming
$ adb emu gsm data home # set home