3GPP Long Term Evolution (LTE) là một công nghệ mạng 4G hỗ trợ tốc độ dữ liệu cao hơn đáng kể so với những người được hỗ trợ bởi các mạng 3G hiện tại.
Detect Mạng:
Thiết bị trên mạng LTE của Verizon Wireless thường duy trì một kết nối riêng biệt cho mỗi giọng nói và dữ liệu. Một ứng dụng Android sử dụng quản lý kết nối để giám sát trạng thái của mạng dữ liệu. Tương tự như vậy, Telophony Manager cung cấp các API cho phép các ứng dụng kiểm tra trạng thái của các kết nối bằng giọng nói.
Khi viết các ứng dụng Android giúp bạn sử dụng một tính năng cụ thể, bạn thường thêm <users-feature> element tương ứng với tập tin AndroidManifest.xml của bạn. Ứng dụng tương tác với các tính năng thông thường của điện thoại bao gồm:
<uses-feature android:name="android.hardware.telephony"/>
Đặc biệt khi ứng dụng làm việc với LTE yêu cầu phải khai báo:
<uses-feature android:name="android.hardware.telephony.lte"/>
<uses-feature android:name="android.hardware.telephony.ehrpd"/>
Ngoài ra cần khai báo permission:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
Sử dụng Connectivity Manager kiểm tra mạng đang hoạt động có kết nối dữ liệu 4G hay không.
// get the type and subtype of the data connection
ConnectivityManager connMgr =
(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = connMgr.getActiveNetworkInfo();
int dNetType = netInfo.getType();
int dNetSubtype = netInfo.getSubtype();
Voice Connection:
Để xác định mạng hiện đang được sử dụng cho các kết nối bằng giọng nói, chỉ cần yêu cầu các loại mạng từ một instance của đối tượng TelephonyManage:
TelephonyManager telMgr =
(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
int vNetType = telMgr.getNetworkType();
if(vNetType == NETWORK_TYPE_LTE){
// on the LTE voice network
}
Xử lý chuyển tiếp mạng (Handling Network Transitions)
Thiết bị kết nối di chuyển từ cell này sang cell khác sẽ cố gắng để duy trì kết nối mạng. Nó thường sẽ thành công nếu các loại mạng không thay đổi giữa các cell. Tuy nhiên, nếu thiết bị di chuyển vào hoặc ra khỏi vùng phủ sóng 4G, kết nối dữ liệu sẽ được giảm và địa chỉ IP của bạn sẽ thay đổi. Bởi vì điều này có thể xảy ra trong khi một ứng dụng có kết nối dữ liệu hoạt động mở, Android sẽ gửi broadcast
android.net.ConnectivityManager.CONNECTIVITY_ACTION bất cứ khi nào khi có sự thay đổi mạng. Khi Android gửi một broadcast CONNECTIVITY_ACTION, nó bao gồm thêm dữ liệu: một đối tượng NetworkInfo cho mạng mới.
private class ConnectivityRcvr extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
NetworkInfo netInfo = (NetworkInfo)intent.getParcelableExtra(ConnectivityManager
.EXTRA_NETWORK_INFO);
int netType = netInfo.getType();
int netSubtype = netInfo.getSubtype();
boolean isConnected = netInfo.isConnected();
// ...
}
// ...
}
}
Đăng ký broadcast CONNECTIVITY_ACTION trong phương thức onCreate() (nếu bạn muốn đăng ký từ bên trong mã nguồn của ứng dụng) hoặc đăng ký trong AndroidManifest.xml.
và cần khai báo thêm permission: READ_PHONE_STATE.
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
this.connectivityBroadcastReceiver = new ConnectivityBroadcastReceiver();
this.registerReceiver(this.connectivityBroadcastReceiver, intentFilter);
// hủy đăng ký
this.unregisterReceiver(this.connectivityBroadcastReceiver);
Detect Mạng:
Thiết bị trên mạng LTE của Verizon Wireless thường duy trì một kết nối riêng biệt cho mỗi giọng nói và dữ liệu. Một ứng dụng Android sử dụng quản lý kết nối để giám sát trạng thái của mạng dữ liệu. Tương tự như vậy, Telophony Manager cung cấp các API cho phép các ứng dụng kiểm tra trạng thái của các kết nối bằng giọng nói.
Khi viết các ứng dụng Android giúp bạn sử dụng một tính năng cụ thể, bạn thường thêm <users-feature> element tương ứng với tập tin AndroidManifest.xml của bạn. Ứng dụng tương tác với các tính năng thông thường của điện thoại bao gồm:
<uses-feature android:name="android.hardware.telephony"/>
Đặc biệt khi ứng dụng làm việc với LTE yêu cầu phải khai báo:
<uses-feature android:name="android.hardware.telephony.lte"/>
<uses-feature android:name="android.hardware.telephony.ehrpd"/>
Ngoài ra cần khai báo permission:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
Sử dụng Connectivity Manager kiểm tra mạng đang hoạt động có kết nối dữ liệu 4G hay không.
// get the type and subtype of the data connection
ConnectivityManager connMgr =
(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = connMgr.getActiveNetworkInfo();
int dNetType = netInfo.getType();
int dNetSubtype = netInfo.getSubtype();
Voice Connection:
Để xác định mạng hiện đang được sử dụng cho các kết nối bằng giọng nói, chỉ cần yêu cầu các loại mạng từ một instance của đối tượng TelephonyManage:
TelephonyManager telMgr =
(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
int vNetType = telMgr.getNetworkType();
if(vNetType == NETWORK_TYPE_LTE){
// on the LTE voice network
}
Xử lý chuyển tiếp mạng (Handling Network Transitions)
Thiết bị kết nối di chuyển từ cell này sang cell khác sẽ cố gắng để duy trì kết nối mạng. Nó thường sẽ thành công nếu các loại mạng không thay đổi giữa các cell. Tuy nhiên, nếu thiết bị di chuyển vào hoặc ra khỏi vùng phủ sóng 4G, kết nối dữ liệu sẽ được giảm và địa chỉ IP của bạn sẽ thay đổi. Bởi vì điều này có thể xảy ra trong khi một ứng dụng có kết nối dữ liệu hoạt động mở, Android sẽ gửi broadcast
android.net.ConnectivityManager.CONNECTIVITY_ACTION bất cứ khi nào khi có sự thay đổi mạng. Khi Android gửi một broadcast CONNECTIVITY_ACTION, nó bao gồm thêm dữ liệu: một đối tượng NetworkInfo cho mạng mới.
private class ConnectivityRcvr extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
NetworkInfo netInfo = (NetworkInfo)intent.getParcelableExtra(ConnectivityManager
.EXTRA_NETWORK_INFO);
int netType = netInfo.getType();
int netSubtype = netInfo.getSubtype();
boolean isConnected = netInfo.isConnected();
// ...
}
// ...
}
}
Đăng ký broadcast CONNECTIVITY_ACTION trong phương thức onCreate() (nếu bạn muốn đăng ký từ bên trong mã nguồn của ứng dụng) hoặc đăng ký trong AndroidManifest.xml.
và cần khai báo thêm permission: READ_PHONE_STATE.
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
this.connectivityBroadcastReceiver = new ConnectivityBroadcastReceiver();
this.registerReceiver(this.connectivityBroadcastReceiver, intentFilter);
// hủy đăng ký
this.unregisterReceiver(this.connectivityBroadcastReceiver);
good
Trả lờiXóa