今回の記事はAndroid端末で5G回線の取得を行う方法をJavaでご紹介します。普段のAndroid開発はFlutterで行っているのですが回線取得のプラグインはまだないためJavaのクラスを使用します。FlutterからJavaを使用する方法の記事も記載しているの気になる方は是非ご参照ください。では早速手順に進んでいきます。
5G回線判定を行う方針
基本的にAndroid OSが最新の10の場合は下記が問題なく使用できるのでこちらで回線情報に5Gと判断できると思ういます。ただ、2021年3月段階ではまだこのOSバージョンの方は少ないと思いますので代替案を提示します。
それはバンド帯域幅での判定です。
4Gと5Gのバンド幅は各キャリアによって異なりますが大きく異なります。つまり現在掴んでいる回線のバンド帯域によって判定できるというわけです。
また、各キャリアで5G基地局のCell IDなどが公開されるのであればCell IDなどからも判別できると思うのですが現状はまだ難しい?と思われます。
では帯域幅を取得できるJavaのクラスのご紹介と使い方についてみていきましょう。
Java5G回線判定コード
package com.example.javapost;
import android.telephony.CellIdentityLte;
import android.telephony.CellInfo;
import android.telephony.CellInfoLte;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.util.Log;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
private TelephonyManager telephonyManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
telephonyManager = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
}
@Override
protected void onResume() {
super.onResume();
telephonyManager.listen(phoneStateListener, PhoneStateListener.LISTEN_CELL_INFO);
}
@Override
protected void onPause() {
super.onPause();
telephonyManager.listen(phoneStateListener, PhoneStateListener.LISTEN_NONE);
}
PhoneStateListener phoneStateListener = new PhoneStateListener(){
public void onCellInfoChanged(java.util.List<android.telephony.CellInfo> cellInfoList) {
System.out.println(cellInfoList);
};
};
}
これで出力されるものの中でbandwidthを見つけてみてください。こちらが現在掴んでいるバンド帯域幅を表していますので照らし合わせてみてください。
コメント