[Android] ソースコードから見る公式テザリングとAPN

2011年5月12日 by
カテゴリ: Android, 開発のこと 

今回注目する点はこちら

https://github.com/android/platform_frameworks_base/blob/master/services/java/com/android/server/connectivity/Tethering.java

https://github.com/android/platform_frameworks_base/blob/master/core/res/res/values/config.xml

フレームワークにおける設定を tether で検索してみたです。

特に注目したい点はここらへん

    <!-- Boolean indicating if we require the use of DUN on mobile for tethering.
Note that this defaults to false so that if you move to a carrier that
hasn't configured anything tethering will still work. If you'd rather
make the device untetherable on unconfigured devices, set to true -->
    <bool translatable="false" name="config_tether_dun_required">false</bool>

    <!-- String containing the apn value for tethering. May be overriden by secure settings
TETHER_DUN_APN. Value is a comma separated series of strings:
"name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type"
note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" -->
    <string translatable="false" name="config_tether_apndata"></string>

つまり、テザリングをする場合に別のダイヤルアップ接続をするかどうかと、する場合にどこに接続するかという設定です。

実装を見てみましょう

    public boolean isDunRequired() {
        boolean defaultVal = mContext.getResources().getBoolean(
                com.android.internal.R.bool.config_tether_dun_required);
        boolean result = (Settings.Secure.getInt(mContext.getContentResolver(),
                Settings.Secure.TETHER_DUN_REQUIRED, (defaultVal ? 1 : 0)) == 1);
        return result;
    }

Settings.Secure.TETHER_DUN_REQUIREDで設定されている場合はそちらが優先されるようですが、通常のAPNで設定した接続に関係なく、テザリング時には別のAPNに接続されてしまうということですね。接続先によって速度を制限したり、料金体系を変えるというのはどこかで聞いt…ん?こんな時間に誰だろう…


ちなみにビルドすると設定は framework-res.apk の res/values/bools.xml と strings.xml に入るようです。

だからなんだとか言われても困りますが、公開されているソースを眺めてるだけですよ?

コメント