Hatena::ブログ(Diary)

popokannのgdgd開発日記 このページをアンテナに追加

2013-09-23

WX04SHのPHSデータ通信がアプリでOn/Offできるかの調査(人柱募集)

WX04KもWX10KもWX04SHも全部見送ってる私ですが、ちょっとWX04SHのある事が気になっています。
PHSデータ通信の使えるWX04SHでは「pdxメールを送受信出来るのはPHSデータ通信のみ」という現行仕様だそうです。*1

また全ての設定がOnだった場合『Wi-Fi >> PHS >> 3G』という接続優先順位になっているそうです。

その為「Wi-Fiまたは3Gの高速回線をデフォルト利用」しつつ「pdxメールを利用する」を両立させるには、「pdxメール送受信時だけWi-FiをOffしPHSデータ通信をON」「pdxメールを終了した時はWi-FiをOn、PHSデータ通信をOff」に設定する必要があるみたいですね。*2

ですが「手動で毎回設定をするのは非常に面倒くさい!」という声があがっていて、それで自動処理化してしまいたいという話が↓で行われてたんですね。

AQUOS PHONE es(WX04SH)でpdx/willcom.comメアドを送受信しつつ、3G/Wifiの高速回線も便利に使用する方法
http://kamo.pos.to/dpoke/c/UW8/UW8812.html

一応AutomateItというアプリでそれに近い事が出来そうという話にまでこぎ着けたそうなんですが、残念ながら「PHSデータ通信のOn/Off切替するアプリ(for WX04SH)」が無い為完全には目的を達せられていないみたいです。

3Gモバイルデータ通信であれば以下の非公開APIでOn/Offを設定&取得できるようです。*3

ConnectivityManager#setMobileDataEnabled(boolean);

ConnectivityManager#getMobileDataEnabled();


本来のAndroidシステムにPHSの実装は埋め込まれてなかった筈ですので、おそらく同様のクラス/メソッドSHARPさんが作っていると思われます。
たぶんメソッド名をPHSっぽい感じで命名して、単純に同じクラスへ追加しているのではないかと私は予想します。(素人考え)

という訳で、「クラスがConnectivityManagerのまま」「メソッドの新規追加」しているかどうかを調査するコードが以下になります。(というかリンク先をほぼ流用しただけ)

package com.example.connectivitymanagermethodlist;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

import android.net.ConnectivityManager;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        EditText editText1 = (EditText)findViewById(R.id.editText1);
        editText1.setText(getMethods());
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

    public String getMethods() {
        ConnectivityManager cm = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);

        Class<?> clazz = null;
        try {
            clazz = Class.forName(cm.getClass().getName());
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
            return null;
        }
        try {
            Method[] available_methods = clazz.getDeclaredMethods();
            StringBuilder sb = new StringBuilder();
            for (Method m : available_methods) {
                sb.append(m.getName());
                sb.append("\n");
            }
            return sb.toString();
        } catch (SecurityException e) {
            e.printStackTrace();
        }
        return null;
    }

}

コンパイルしたAPKもhttp://www.casraq.com/ConnectivityManagerMethodList.apkサーバーにアップしましたので、誰かWX04SH実機をもっている人が実行結果をコメント欄までコピペしに来て頂けると嬉しいです。(^_^)
もし本当に情報が寄せられたなら、そのまま調子に乗ってPHSデータ接続切替アプリを作成するつもりです。
ただし

  • 開発速度が遅いので他の人が先に完成させる可能性が高い。
  • ConnectivityManagerとは別クラスに機能を作っていた場合には手詰まりになる。
  • 参考にしている3G通信の方ももともと非公開APIなので、PHSデータ通信の方もOSの対応で(既にor将来的に)APIを利用出来ない可能性がある。

という懸念材料もたっぷりですので、協力して頂ける場合はその点ご了承くださいませ。m(_ _)m

*1:将来的に「Wi-Fi3Gからもpdxメール送受信可能にする予定(時期は未定?)」らしいですが、現状ではPHSデータ通信状態に上手く切り替える必要があるみたいですね。

*2: もちろん速度を犠牲にPHSデータ通信のみをOnにすれば切替する手間はありませんが。

*3:私も今回観覧車さん経由で教えてもらいました。

fetuinfetuin 2013/09/24 09:13 「setPhsDataEnabled」とか魅力的な名前も
よろしくお願いします。

getActiveLinkProperties
getActiveNetworkInfo
getActiveNetworkInfoForUid
getActiveNetworkQuotaInfo
getAllNetworkInfo
getBackgroundDataSetting
getGlobalProxy
getLastTetherError
getLinkProperties
getMobileDataEnabled
getNetworkInfo
getNetworkPreference
getPhsDataEnabled
getProxy
getTetherableBluetoothRegexs
getTetherableIfaces
getTetherableUsbRegexs
getTetherableWifiRegexs
getTetheredIfaces
getTetheringErroredIfaces
isActiveNetworkMetered
isNetworkSupported
isTetheringSupported
reportInetCondition
requestNetworkTransitionWakelock
requestRouteToHost
requestRouteToHostAddress
setBackgroundDataSetting
setDataDependency
setGlobalProxy
setMobileDataEnabled
setMobileDataEnabledDun
setNetworkPreference
setPhsDataEnabled
setRadio
setRadios
setUsbTethering
startUsingNetworkFeature
stopUsingNetworkFeature
tether
untether
updateOperatorPolicy
from
getNetworkTypeName
isNetworkTypeMobile
isNetworkTypeValid

popokannpopokann 2013/09/24 17:07 useWill.com管理人のfetuinさん自らのご協力感謝いたします♪
とりあえず情報を元にテストプログラム第二弾を作ってみました。
http://d.hatena.ne.jp/popokann/20130924/1380009466
よろしければ引き続きご協力お願い致します〜。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証